오라클(Oracle) 데이터 타입 (문자, 숫자, 날짜, LOB )
데이터 타입
데이터 타입 (DATATYPE)이란 컬럼이 저장되는 데이터 유형
문자 데이터 타입
문자나 문자열 데이터는 문자형 데이터에 속함
데이터 타입 | 설명 |
CHAR (크기[BYTE | CHAR]) | 고정길이 문자, 최대 2000byte, 디폴드 값은 1byte |
VARCHAR2 (크기[BYTE | CHAR]) | 가변길이 문자, 최대 4000byte, 디폴드 값은 1byte |
NCHAR (크기) | 고정길이 유니코드 문자(다국어 입력 가능), 최대 2000byte, 디폴드 값은 1 |
NVARCARCHAR2 (크기) | 가변길이 유니코드 문자(다국어 입력 가능), 최대 4000byte, 디폴드 값은 1 |
LONG | 최대 2GB 크기의 가변길이 문자형, 잘 사용하지 않음 |
* 가변길이 : 실제 입력된 데이터 길이에 따라 크기가 변해 정해지는 것
영어 한 문자는 1byte / 한글은 2byte
숫자 데이터 타입
데이터 타입 | 설명 |
NUMBER [(p,[s])] | 가변숫자, p(1~38, 디폴드 값은 38)와 s(-84!127, 디폴드 값은0)는 십진수 기준, 최대 22byte |
FLOAT [(p)] | NUMBER의 하위 타입, p는 1~128, 디폴드 값은 128, 이진수 기준, 최댜 22byte |
BINARY_FLOAT | 32비트 부동소수점 수, 최대 4byte |
BINARY_DOUBLE | 64비트 부동소수점 수, 최대 8byte |
숫자 타입은 총 4 가지가 있긴 하지만 NUMBER형만 사용할 때가 많다.
다른 DBMS는 INTEGER와 같은 정수형, DECIMAL과 같은 실수형을 제공한다.
* p(precision, 정밀도)는 최대 유효숫자 자릿수
* s(scale)는 소수점 기준 자릿수
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
1. p는 소수점 기준 모든 유효숫자 자릿수를 의미한다. 만약 p에 명시한 것보다 큰 숫자값을 입력하면 오류가 발생한다.
2. s가 양수면 소수점 이하, 음수면 소수점 이상(소수점 기준 왼쪽) 유효숫자 자릿수를 나타낸다.
3. s에 명시한 숫자 이상의 숫자를 입력하면, s에 명시한 숫자로 반올림 처리한다.
4. s가 음수이면 소수점 기준 왼쪽 자릿수만큼 반올림한다.
5. s가 p보다 크면 p는 소수점 이하 유효숫자 자릿수를 의미한다.
예)
숫자 값 | 타입 | 결과 | 설명 |
123.54 | NUMBER(3) | 124 | s는 명시하지 않아 0, p가 3이므로 소수점 첫 자리에서 반올림됨 |
123.54 | NUMBER(3,2) | 오류 | p가 3인데 입력값인 123.54는 유효숫자가 다섯 자리여서 오류, 유효 숫자가 p보다 크면 오류 발생 |
123.54 | NUMBER(5,2) | 123.54 | 정상 |
123.54 | NUMBER(7,-1) | 120 | s가 -1이어서 소수점 왼쪽 첫 자리 3이 반올림되어 120 |
0.1234 | NUMBER(4,5) | 오류 | 유효숫자는 4개 맞지만, s가 5인데 네 자리수이므로 오류 발생 |
0.0001234 | NUMBER(4,5) | 0.01234 | 소수점 이하 일곱 째 자리까지 유효숫자 4개, 정상 |
0.0000123 | NUMBER(3,7) | 0.0000123 | 소수점 이하 일곱째 자리까지 유효숫자는 123, 3개이고 p가 3이므로 정상 |
0.00001234 | NUMBER(3,7) | 0.0000123 | 소수점 이하 일곱 째 자리까지 유효숫자는 123, 4는 제외됨 |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
날짜 데이터 타입
데이터 타입 | 설명 |
DATE | BC 4712년 1월 1일부터 9999년 12월 31일, 연, 월, 일, 시, 분, 초까지 입력 가능 |
TIMESTAMP [(fractional_seconds_precision)] |
연도, 월, 일, 시, 분, 초는 물론 밀리초까지 입력 가능하다. fractional_seconds_precision은 0~9까지 입력할 수 있고 디폴드 값은 6이다. |
LOB 데이터 타입
LOB는 'Large OBject'의 약자로 대용량 데이터를 저장할 수 있는 데이터 타입
데이터 타입 | 설명 |
CLOB | 문자형 대용량 객체, 고정길이와 가변길이 문자 집합 지원, 최대 크기는 (4GB-1) * (데이터베이스 블록 사이즈 ) |
NCLOB | 유니코드(다국어 지원)를 포함한 문자형 대용량 객체, 최대 크기는 (4GB-1) * (데이터베이스 블록 사이즈 ) |
BLOB | 이진형 대용량 객체, 최대 크기는 (4GB-1) * (데이터베이스 블록 사이즈 ) |
BFILE | 대용량 이진 파일에 대한 로케이터(위치, 이름)저장, 최대크기는 4GB |
일반적인 정형 데이터 (문자, 숫자, 날짜 등 구조화된 데이터)에 비해 텍스트, 그래픽, 이미지, 사운드등 비정형 데이터는 그 크기가 매우 큰데, 이런 데이터를 저장하는 데 LOB 타입을 사용한다.
문자형 대용량 데이터는 CLOB나 NCLOB, 나머지 그래픽, 이미지, 동영상 등의 데이터는 BLOB를 사용한다.
BFILE는 실제 이진 파일이 아닌 데이터베이스 외부에 있는 파일에 대한 로케이터(해당 파일을 가리키는 포인터)를 저장하며, 실제 파일을 수정할 수는 없고 읽기만 가능하다.
이외에 RAW, LONG RAW, ROWID, UROWID등이 있으며, 사용자가 직접 정의하는 사용자 정의 타입도 지원한다.
'DataBase > Oracle' 카테고리의 다른 글
[Oracle] 오라클 제약조건 : UNIQUE (0) | 2023.09.18 |
---|---|
[Oracle] 오라클 제약조건 : NOT NULL (1) | 2023.09.18 |
[Oracle] 오라클(Oracle) 테이블 생성 (5) | 2023.09.13 |
[Oracle] Oracle(오라클) 연산자 종류와 설명 (0) | 2023.06.13 |
[Oracle] 오라클 SQL과 sql*plus의 개념 (0) | 2023.06.09 |