오라클 데이터타입 개요

  • 오라클은 22개의 다른 SQL 데이터타입을 제공한다.


데이터타입설명
CHAR최대 길이 만큼 스페이스로 공백을 채우는 고정길이 문자 타입. CHAR 타입은 2000바이트 까지 저장 가능
NCHAR유니코드 형식의 데이터를 포함하는 고정 길이 문자 타입
CHAR타입과 NCHAR 타입은 각각 데이터 베이스의 캐릭터 셋과 내셔널 캐릭터 셋을 사용.
CHAR 타입은 2000바이 까지 저장 가능
VARCHAR2일반적으로 VARCHAR와 같다
가변 길이 문자 타입으로 최대 자리까지 공백을 채우지 않는다는 점은 CHAR와 다르다.
VARCHAR2는 최대 4000바이트까지 저장 가능
NVARCHAR2유니코드 형식의 데이터를 가지는 가변 길이 문자 타입
NVARCHAR2는 최대 4000바이트까지 저장 가능
RAW가변 길이 이진 데이터 타입
저장된 데이터는 캐릭터 셋 변환이 일어나지 않는다
최대 2000바이트 저장 가능
NUMBER38자리 정밀도를 가진 숫자를 저장
오라클 NUMBER 타입은 많은 프로그래밍 언어에서 사용되는 FLOAT, DOUBLE 타입보다 정밀도가 좋다
BINARY_FLOAT10g 릴리즈1이상에서 사용가능
32비트 단정 부동소수점 숫자
최소 6자리 정밀도를 가짐
디스크 저장시 5바이트를 차지
BINARY_DOUBLE10g 릴리즈1이상에서 사용가능
64비트 배정도 부동소수점 숫자
최소 15자리 정밀도를 가짐
디스크 저장시 9바이트를 차지
LONG문자 데이터 최대 2GB까지 저장가능(멀티바이트 캐릭터셋일때 각 문자를 멀티바이트로 표현했을 때 의 길이)
LONG타입은 많은 제약사항을 가지고 있다
기존 애플리케이션에서 사용한 LONG은 CLOB타입으로 변경을 추천
LONG RAW이진 정보를 2GB까지 저장가능
LONG타입과 마찬가지로 기존 애플리케이션도 BLOB 타입으로 변경추천
DATE고정길이 7바이트 DATA/TIME 데이터 타입
일골가지 속성정보, 세기, 연도, 월, 일, 시간, 분, 초 를 가짐
TIMESTAMP고정길이 7 또는 11바이트 DATA/TIME타입
초 단위 이하의 데이터를 가진다는것과 DATE와 다름
초 단위를 소수점 9자리까지 표현가능
TIMESTAMP WITH TIME ZONE고정길이 13바이트 TIMESTAMP 타입
표준 시간대 정보를 저장함, 표준시간대에 추가적인 정보가 TIMESTAMP에 같이 저장
처음 저장된 표준시간대 정보는 데이터와 함께 보존
TIMESTAMP WITH LOCAL TIME ZONETIMESTAMP와 같이 고정 7 또는 11바이트 DATA/TIME 데이터타입으로, 표준시간대의 영향을 받음
서버가 위치한 곳을 기준으로 표시
INTERVAL YEAR TO MONTH고정길이 5바이트 데이터 타입
연과 월에 대한 기간을 저장
DATE타입이나 TIMESTAMP 타입의 특정 시점에서 일자를 더하거나 빼어 기간을 산출가능
INTERVAL DAY TO SECOND고정길이 11바이트 데이터 타입
일,시,분,초 기간을 저장
선택적으로 소수점 9자리 초 단위까지도 저장가능
BFILE오라클 디렉토리 객체와 데이터베이스 컬럼에 파일명을 저장하고 파일을 읽을 수 있슴
파일이 데이터베이스 파일 자체에 저장되는 것처럼 읽기 전용 방식으로 데이터베이스 서버에 os 파일에 접곤하는데 효과적
BLOB9i 이하는 4GB , 10g 이상은 4GB*10(Database blocksize)바이트 까지 가능
BLOB 캐릭터 셋 변환이 적용되지 않는 이진 정보를 가짐
스프레드시트, 이미지, 워드 파일등 저장에 적합
CLOB9i 이하는 4GB , 10g 이상은 4GB*10(Database blocksize)바이트 까지 가능
CLOB는 캐릭터 셋 변환이 적용되는 정보를 가짐
큰 평문정보를 저장하기 적합
큰 평문 정보가 아닌 4000바이트 이하 평문은 VARCHAR2에 저장하는게 좋음
NCLOB9i 이하는 4GB , 10g 이상은 4GB*10(Database blocksize)바이트 까지 가능
NCLOB는 데이터베이스의 내셔널 캐릭터 셋에서 인코딩된 정보를 저장하고 , CLOB처럼 캐릭터 셋 변환이 적용되는 정보를 포함
ROWID데이터베이스에서 로우에 대한 10바이트 주소를 관리하는데 효과적
ROWID로 가리키는 테이블 등의 객체를 찾을 수 있을 뿐만 아니라 디스상의 로우 위치를 정보를 포함
UROWID범용 ROWID
이기종 DB에 게이트웨이를 통한 액세스된 IOT와 일반 테이블과 같은 테이블에 사용
URROWID는 로우의 기본키값으로 표현
URROWID가 가리키는 객체에 따라 크기가 달라짐



-- 스크립트
CREATE TABLE DATATYPE 
(  A CHAR,
   B NCHAR,
   C VARCHAR2(10),
   D NVARCHAR2(10),
   E RAW(10),
   F NUMBER,
   G BINARY_FLOAT,
   H BINARY_DOUBLE,
   --I LONG,
   J LONG RAW,
   K DATE,
   N TIMESTAMP,
   M TIMESTAMP WITH TIME ZONE,
   L TIMESTAMP WITH LOCAL TIME ZONE,
   O INTERVAL YEAR TO MONTH,
   P INTERVAL DAY TO SECOND,
   Q BFILE,
   R BLOB,
   S CLOB,
   T NCLOB,
   U ROWID ,
   V UROWID
)


SQL> set linesize 50
SQL> desc datatype
 이름                    널?      유형
 ----------------------- -------- ----------------
 A                                CHAR(1)
 B                                NCHAR(1)
 C                                VARCHAR2(10)
 D                                NVARCHAR2(10)
 E                                RAW(10)
 F                                NUMBER
 G                                BINARY_FLOAT
 H                                BINARY_DOUBLE
 I                                 LONG  -- LONG 타입은 한 테이블에 두개가 들어갈 수 없습니다. 가상으로 입력
 J                                LONG RAW
 K                                DATE
 N                                TIMESTAMP(6)
 M                                TIMESTAMP(6) WITH TIME ZONE
 L                                TIMESTAMP(6) WITH LOCAL TIME ZONE
 O                                INTERVAL YEAR(2) TO MONTH
 P                                INTERVAL DAY(2) TO SECOND(6)
 Q                                BINARY FILE LOB
 R                                BLOB
 S                                CLOB
 T                                NCLOB
 U                                ROWID
 V                                ROWID

 
 
 21 개의 행이 선택되었습니다.

SQL> SET LINESIZE 50
SQL> SELECT DATA_TYPE,DATA_LENGTH,CHAR_LENGTH,CHAR_USED
  2  FROM USER_TAB_COLUMNS
  3  WHERE TABLE_NAME ='DATATYPE';

DATA_TYPE		             DATA_LENGTH 		CHAR_LENGTH 	CHAR_USED
--------------------------------------------------------------------------------------------
CHAR           				1			     1           	B
NCHAR                                   2                            1                  C
VARCHAR2           			10        		     10			B
NVARCHAR2        			20     			     10			C
RAW                                     10         		     0
NUMBER                                  22      			     0
BINARY_FLOAT                            4  		             0
BINARY_DOUBLE                           8   	                     0
LONG RAW                                0  	          	     0
DATE                       		7  	         	     0
TIMESTAMP(6)                            11   		             0
TIMESTAMP(6) WITH TIME ZONE             13   			     0
TIMESTAMP(6) WITH LOCAL TIME ZONE       11  			     0
INTERVAL YEAR(2) TO MONTH               5              		     0
INTERVAL DAY(2) TO SECOND(6)            11        		     0
BFILE                             	530      		     0
BLOB                                    4000       		     0
CLOB                                    4000         		     0
NCLOB                                   4000    			     0
ROWID                                   10                           0
UROWID                                   4000 			     0