반응형
문자형 데이터
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 에서 제공하는 데이터 타입을 지원하고 있습니다.
이 외에도 XML, URI, 사용자 정의 데이터 타입등 몇가지가 더 존재합니다.
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 |