본문 바로가기

전산Tip/Oracle

오라클 데이터 타입

반응형
문자형 데이터

CHAR : 고정길이 문자형 데이터 타입 (~2000 Byte)
VARCHAR2 : 가변길이 문자형 데이터 타입 (~4000 Byte)
NCHAR : 고정길이 유니코드 문자형 데이터 타입 (~2000 Byte)
NVARCHAR2 : 가변길이 유니코드 문자형 데이터 타입 (~4000 Byte)
LONG : 가변 길이 문자형 데이터 타입 (~2 GByte)

다른건 다들 알듯하고, 여기서 LONG 타입에 주의해서 살펴보겠습니다.
LONG 타입에는 크기가 큰 텍스트 파일을 취급하고 있습니다. (사진파일도 가능)

SELECT 리스트, UPDATE 문의 SET 절, INSERT 문의 VALUES 절에서 사용 가능합니다.
하나의 테이블에서는 하나의 LONG 타입 컬럼만 지정할 수 있습니다.
LONG 컬럼은 WHERE 절에 올 수 없고, 인덱스를 생성할 수 없습니다.
GROUP BY, ORDER BY, CONNECT BY 절에 올 수 없으며 SELECT 리스트에서 DISTINCT 와 함께 사용할 수 없습니다.
GROUP BY 절을 포함한 SELECT 문장에서 SELECT 리스트에 올 수 없습니다.
UNION, INTERSECT, MINUS 와 함께 쓰인 SELECT 리스트에 올 수 없습니다.
CREATE TABBLE ... AS SELECT 문장에서 사용할 수 없습니다.

현재 LONG 의 대체 자료형으로 CLOB, NCLOB 이름의 LOB 타입이 있습니다.
그래서 오라클사는 더이상 LONG 타입을 사용하지말 것을 권장하고 있습니다.

숫자형 데이터

BINARY_FLAOT : 32비트 부동 소수 (4 Byte)
BINARY_DOUBLE : 64비트 부동 소수 (8 Byte)
NUMBER : 가변 숫자 타입. NUMBER(precision, scale) 형식으로 선언할 수 있습니다 (~21 Byte)
(precision : 유효자리수, scale : 소수점 유효자리)

NUMBER(9)
-> 123456789 저장가능

NUMBER(9,1)
-> 12345678.9 저장가능

NUMBER(7,-2)
-> 1234600 저장가능 (소수점 기준 왼쪽 2짜리 반올림)

NUMBER(3,5)
-> 0.00123 (소수점 포함 5자리 가능한데, 처음 5-3=2자리는
0으로 채워야 함)

BINARY_FLOAT, BINARY_DOUBLE, NUMBER 사이의 차이점은 정밀도 차이입니다.

예를 들어

0.123456789123456789 라는 값을 저장하면

BINARY_FLOAT : 0.123456789
BINARY_DOUBLE : 0.123456789123456789
NUMBER : 0.123456789123456789

정밀도는 BINARY_FLOAT < BINARY_DOUBLE < NUMBER

날짜형 데이터

DATE : 고정 길이 날짜,시간 데이터 (~7 Byte, DD-MM-YY, 01-JAN-99)
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
TIMESTAMP : DATE 보다 정밀도가 높음
TIMESTAMP WITH TIME ZONE : 지역 시간대 적용
TIMESTAMP WITH LOCAL TIME ZONE : 저장시에 지역 시간대 적용, 조회시에 클라이언트의 지역 시간대 적용

DATE
-> 2007-06-04

TIMESTAMP
-> 2007-06-04 12:10:55.000000000

TIMESTAMP WITH TIME ZONE
-> 07/06/04 12:10:55.000000000

TIMESTAMP WITH LOCAL TIME ZONE
-> ASIA/SEOUL 2007-06-04 12:10:55.000000000

대용량 데이터 타입

새로 소개된 LOB(Large Object)라고 데이터 타입인데, 대용량 파일등을 저장하는데 사용됩니다.
나중에 설명 ~~

RAW, LONG RAW 타입

LOB 이 등장하기 전까지 사용되던 것, 용도는 역시 대용량 파일입니다. (사진, 파일, 음악, 영상등)

ROWID

2008/09/17 - [데이터베이스/ORACLE] - [ORACLE] 의사컬럼

위 포스팅에서 설명한 것, 테이블 내부의 각각의 ROW 의 고유한 값

ANSI 데이터 타입

오라클은 ANSI 에서 제공하는 데이터 타입을 지원하고 있습니다.

ANSI 타입 ORACLE 의 변환 타입
CHARACTER(n)
CHAR(n)
CHAR(n)
CHARACTER VARYING(n)
CHAR VARYING(n)
VARCHAR(n)
NATIONAL CHARACER(n)
NATIONAL CHAR(n)
NCHAR(n)
NCHAR(n)
NATIONAL CHARACTER VARYING(n)
NATIONAL CHAR VARYING(n)
NCHAR VARYING(n)
NVARCHAR2(n)
NUMBER(p,s)
DECIMAL(p,s) (a)
NUMBER(p,s)
INTEGER
INT
SMALLINT
NUMBER(38)
FLOAT(b)
DOUBLE PRECISION(c)
REAL(d)
NUMBER

이 외에도 XML, URI, 사용자 정의 데이터 타입등 몇가지가 더 존재합니다.

'전산Tip > Oracle' 카테고리의 다른 글

테이블별 용량 확인  (0) 2008.09.23
한방 쿼리 Tip  (0) 2008.09.21
대용량 Sam 파일 오라클에 Load하기  (1) 2008.09.21