[Oracle/오라클] 데이터 타입 - 문자열형
문자열형
- 고정길이 형식 : CHAR
- 가변길이 형식 : VARCHAR, VARCHAR2, LONG, CLOB, NVARCHAR2, NCLOB
: 사용자가 입력한 데이터만큼 저장공간을 사용하고, 남은 저장공간은 시스템에 반환.
1) CHAR
- 고정길이 문자열 저장.
- 저장공간이 남으면 오른쪽에 공백이 삽입되어 저장.
- 입력한 데이터가 지정해놓은 저장공간보다 크면 오류
- 한글 한 글자는 3BYTE로 처리함.
- 최대 2000BYTE까지 저장 가능.
컬럼명 CHAR ( 크기 [ BYTE | CHAR ] ) ;
- 크기 : 1 ~ 2000
- BYTE | CHAR : 크기로 지정한 값이 BYTE 값인지 CHAR 갯수인지 지정함.
- 'CHAR'로 지정되더라도 2000BYTE를 초과할 수 없으며, DEFAULT는 BYTE
ex) CREATE TABLE temp01(
col01 CHAR (20 BYTE),
col02 CHAR (20 CHAR),
col03 CHAR (20));
2) VARCHAR2
- 가변길이 문자열 저장.
- 1 ~ 4000 BYTE 처리 가능
- 오라클에서만 사용 가능한 데이터 타입
컬럼명 VARCHAR2 ( 크기 [ BYTE | CHAR ] ) ;
- 크기 : 1 ~ 4000
- BYTE | CHAR : 크기로 지정한 값이 BYTE 값인지 CHAR 갯수인지 지정함.
- 'CHAR'로 지정되더라도 4000BYTE를 초과할 수 없으며, DEFAULT는 BYTE
ex) CREATE TABLE temp02(
col01 VARCHAR2 (50 BYTE),
col02 VARCHAR2 (50 CHAR),
col03 VARCHAR2 (50));
3) NVARCHAR2, VARCHAR
- VARCHAR와 VARCHAR2는 동일 기능 제공
- Oracle사에서는 VARCHAR2 사용 권고
- NVARCHAR2는 국제표준코드(다국적 언어)를 사용하여 문자열 저장
- UTF-8 (가변길이), UTF-16 (고정길이) 형식으로 처리
4) LONG
- 대용량 가변길이 자료 저장
- 2GB까지 처리 가능
- 제약 사항 : 한 테이블에 한 컬럼만 LONG타입으로 선언가능
- 현재 기능 개선이 종료되어 CLOB 타입으로 대체 됨.
- 크기 지정 안함.
컬럼명 LONG;
ex) CREATE TABLE temp03(
col01 LONG,
col02 CLOB,
col03 VARCHAR2 (3000));
5) CLOB
- LOB (Large Objects) 타입
- 대용량 자료 (4GB) 를 저장하기 위한 데이터 타입
- 여러 컬럼에서 동시에 사용 가능 (LONG타입의 제약 사항 개선)
- 일부 기능은 DBMS_LOB API 지원을 받아야 함. (LENGTH, SUBSTR 등)
- 자료의 크기는 문자열 수로 반환 (GETLENGTH)
컬럼명 CLOB;
ex) CREATE TABLE temp04(
col01 CLOB,
col02 CLOB,
col03 VARCHAR2 (100));
INSERT INTO temp04 (col01, col02, col03)
VALUES ('무궁화 꽃이', '무궁화 꽃이 피었습니다. 무궁화 꽃은', 'ABCDEFGHIJKLMN');
SELECT SUBSTR(col02, 2, 5) FROM temp04; -- col02의 2번째 글자에서 5개 ('궁화 꽃이')
SELECT DBMS_LOB.SUBSTR(col02, 2, 5) FROM temp04; -- col02의 5번째 글자에서 2개 ('꽃이')