반응형
더보기
오라클에서는 여러가지 데이터 타입을 제공하는데 그중 문자열, 숫자형, 날짜형 , 2진자료형이 있습니다.
문자열데이터타입
- ' ' 로 묶인 자료를 문자열 자료라고합니다.
- CHAR, VARCHAR, VARCHAR2,NVARCHAR,CHAR,LONG,RAW,CLOB등이 존재합니다.
- CHAR
- 고정길이 문자열을 취급
- 최대 2000BYTE 저장 가능
- 기억장소가 남으면 오른쪽에 공백이 삽입 .
- 기억공간보다 큰 데이터는 저장 오류 .
- 한글 한 글자는 3BYTE 로 저장됨 .
- 기본키 등에 사용.
(사용형식) 컬럼명 CHAR(크기[BYTE|CHAR]) -- '크기[BYTE|CHAR]' : 기억공간의 크기(BYTE)나 글자수 (CHAR) 정의 -- 2000BYTE 초과 불가
- VARCHAR2
- 가변길이 문자열 처리 .
- 최대 4000BYTE 처리가능 .
- 정의된 기억공간에서 데이터의 길이만큼 사용하고 남는 공간은 시스템에 반납 .
- VARCHAR와 같은 기능 (오라클은 VARCHAR2 사용을 권고)
(사용형식) 컬럼명 VARCHAR2(크기[BYTE|CHAR]_ --가변길이:사용자가 정해진길이 남은 기억공간을 반납한다는것 '[BYTE|CHAR]' : 생략되면 BYTE로 취급
- LONG 데이터 타입
- 가변길이 문자열을 저장
- 최대 2gb 까지 저장가능
- LONG 타입은 하나의 테이블에서 1개만 사용 가능 --//치명적인 단점
- CLOB 로 대체(LONG타입 기능 업그레이드 중단) --char large objects
- SELECT문의 SELECT절, UPDATE문의 SET절, INSERT문의 VALUES절에서 사용 가능
(사용형식) 컬럼명 LONG
- CLOB (Character large OBjects) 데이터타입 --여기서 쓸수없는 함수 lengthb
- 대용량 문자열 자료를 처리하기 위한 데이터 타입
- 최대 4GB까지 처리가능
- 가변길이 문자 자료형
- 한 테이블에서 사용될 수 있는 clob의 갯수에 제한이 없음
- 일부 기능 들은 DBMS_LOB API의 지원을 받아야 함
(사용형식) 컬럼명 LONG
- NCLOB, NVARCHAR2
- 다국어 지원 형태로 문자 자료저장
- UTF-8, UTF-16 형식의 ENCODDONG -나머지 기능은 CLOB, VARCHAR2와 동일
숫자자료형 (숫자열우선 JAVA는 문자열우선)
- 정수와 실수 데이터 저장 --컴퓨터에서 말하는 정수는 고정소수점수 ,실수 부동소수점
- NUMBER 타입 제공 --거의 무조건 얘만씀 (사용형식) NUMBER[(정밀도|*[,스케일])] --사용자가 한 그대로만 사용할경우
- 표현할 수 있는 값의 범위 : 1.0e - 130 ~ 9.99999..9e125 -- 10^-130~ 10^126
- 정밀도 : 전체 자리수(1~38)
- 스케일 : 소숫점이하의 자리수 ex)NUMBER(5,2) : 전체 5자리가 확보 (정수부분이 3자리,소숫점 이하 3자리에서 반올림 하여 2번째 자리까지 표현
- 정밀도 대신 ''를 사용하면 38자리 이내에서 자동할당(정수부분) ex)NUMBER(,2) : 소숫점 이하 3자리에서 반올림 하여 2번째 자리까지 표현 단, 정수부분은 38자리 이내에서 크기 만큼 자동 할당
- 스케일이 생략되면 0으로 간주 --소숫점자리가 사라짐 -스케일이 음수이면 정수부분에서 반올림
-
12345678.7896 NUMBER 12345678.7896 12345678.7896 NUMBER(*,2) 12345678.79 12345678.7896 NUMBER(8) 12345678 12345678.7896 NUMBER(7,2) 오류 --정밀도(정수)부분이 8개인데 7개로 표현하라니깐 오류발생 12345678.7896 NUMBER(10,-2) 12345700 -- * 정밀도 < 스케일 인경우 -- 정밀도는 0이 아닌 유효숫자의 수 -- (스케일-정밀도) : 소숫점이하에 존재해야할 0의 갯수 -- 스케일 : 소숫점 이하의 데이터의 수 1.234 NUMBER(4,5) 오류 0.23 NUMBER(3,5) 오류 0.0123 NUMBER(3,4) 0.0123 0.0012345 NUMBER(3,5) 0.00123 0.00125676 NUMBER(3,5) 0.00126
날짜 자료형
- 날짜자료(년,월,시,분,초)를 저장하기 위한 데이터 타입
- 기본형은 DATE, 시간대(TMEZONE)정보와 10억분의 1초단위의 시각정보를 제공하는 데이터 타입으로 TIMESTAMP가 제공
- DATE타입
- 기본날짜형
- '+','-' 연산의 대상 **SYSDATE : 시스템이 제공하는 날짜 정보를 제공하는 함수
(사용형식) 컬럼명 DATE
- TIMESTAMP 타입
- 시간대 정보와 정교한 시각정보를 필요할 때 사용
(사용형식)
컬럼명 TIMESTAMP
컬럼명 TIMESTAMP WITH TIME ZONE --시간대정보(대륙명/도시명) 포함
컬럼명 TIMESTAMP WITH LOCAL TIME ZONE --서버가 위치한 시간대정보 , 보통 TIMESTAMP 와 동일
기타자료형
- 2진 자료를 저장하기 위한 자료 타입
- BLOB, RW, LONG RAW, BFILE 등이 제공 -- RAW, LONG RAW는 거의안씀
- RAW
- 상대적으로 작은 용량의 2진 자료를 저장
- 인덱스 처리가 가능
- ORACLE에서 해석이나 변환작업을 수행하지 않음
- 최대 2000BYTE 까지 처리가능
- 16진수와 2진수 저장
(사용형식) 컬럼명 RAW(크기)
2. BFILE
- 이진자료 저장
- 대상 이진자료를 데이터베이스 외부에 저장
- 경로 정보(DIRECTORY 객체)정보만 테이블에 저장
- 4GB 까지 저장가능
(사용형식) 컬럼명 BFILE . 디렉토리 별칭(Alias) 설정(30BYTE)과 파일명 (256BYTE) 설정 그림파일 저장순서 1. 그림파일이 저장된 폴더확인 2. 디렉토리 객체생성-그림이 저장된 디렉토리의 절대 주소 CREATE DIRECTORY TEST_DIR AS 'D:\A_TeachingMaterial\2.Oracle\other'; 3. 그림을 저장할 테이블 생성 CREATE TABLE TEMP08( COL1 BFILE); 4. 그림 삽입 INSERT INTO TEMP08 VALUES(BFILENAME('TEST_DIR' ,'SAMPLE.PNG')); SELECT * FROM TEMP08; -- 그림으로 해석하지 않는다. //썸네일용으로 좋음
3. BLOB
- 이진자료 저장
- 대상 이진자료를 데이터베이스 내부에 저장
- 4GB 까지 저장 가능
(사용형식) 컬럼명 BLOB (그림 저장 순서) 1. 그림파일 준비(SAMPLE.JPG) 2. 디렉토리 객체 생성(TEXT_DIR) 3. 테이블 생성 CREATE TABLE TEMP09( COL1 BLOB); 4. 익명블록 생성 DECLARE L_DIR VARCHAR2(20):='TEST_DIR'; L_FILE VARCHAR2(30):='SAMLE.jpg' L_FILE BFILE; L_BLOB BLOB; BEGIN INSERT INTO TEMP09(COL1) VALUES(EMPTY_BLOB()) RETURN COL1 INTO L_BLOB: ``` L_BFILE := BFILENAME(L_DIR,L_FILE); DBMS_LOB.FILEOPEN(L_BFILE,DBMS_LOB.FILE_READONLY); DBMS_LOB.LOADFROMFILE(L_BLOB,L_BFILE,DBMS_LOB.GETLENGTH(L_BFILE)); DBMS_LOB.FILECLOSE(L_BFILE); ```
반응형
'ORACLE DB > 기초' 카테고리의 다른 글
SQLD 공부 정리 (1. 데이터 모델링 이해) (3) | 2022.01.18 |
---|---|
MYSQL DAO(DTO) 변수 한번에 만들기(Mysql to Java 자료형) (0) | 2021.10.06 |
PL/SQL 개념과 사용법 프록시저 사용법(OracleDB 기초) (0) | 2021.09.09 |
OracleDB 집계함수란? (0) | 2021.07.29 |