DataBase/Oracle

[Oracle] 오라클(Oracle) 데이터 타입 ( 문자, 숫자, 날짜, LOB )

h0-0cat 2023. 9. 13. 18:06
728x90

오라클(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등이 있으며, 사용자가 직접 정의하는 사용자 정의 타입도 지원한다. 

 

 

 

 

 

728x90