1. CHAR (고정 길이 문자열)
- 특징:
- 고정 길이 문자열 데이터를 저장.
- 최대 2000바이트까지 저장 가능.
- 지정된 길이보다 짧은 문자열이 저장되면 나머지 공간은 공백으로 채워짐.
- 주로 기본 키나 길이가 고정된 데이터(우편번호, 주민등록번호 등)를 저장하는 데 사용.
- 사용 형식:
- 컬럼명 CHAR(크기 [BYTE|CHAR]);
- 크기: 확보되는 기억 공간의 크기 (1 ~ 2000).
- BYTE|CHAR: 생략 시 BYTE로 간주. 'CHAR'를 사용하면 '크기'는 문자 수를 의미.
- 데이터베이스의 문자 집합에 따라 실제 저장되는 문자 수가 달라질 수 있다. 예를 들어, UTF-8 문자 집합에서는 한글 한 글자가 3바이트를 차지한다.
- 컬럼명 CHAR(크기 [BYTE|CHAR]);
- 사용 예시:
SQL
CREATE TABLE TEMP01(
COL1 CHAR(10),
COL2 CHAR(10 BYTE),
COL3 CHAR(10 CHAR)
);
INSERT INTO TEMP01(COL1,COL2,COL3)
VALUES('SEOUL','대전시','대전시 중구 계룡로');
SELECT * FROM TEMP01;
2. VARCHAR2 (가변 길이 문자열)
- 특징:
- 가변 길이 문자열 데이터를 저장.
- 최대 4000바이트까지 저장 가능.
- 실제 문자열의 길이만큼만 저장 공간을 사용.
- 오라클에서는 VARCHAR2 사용을 권장.
- 사용 형식:
- 컬럼명 VARCHAR2(크기 [BYTE|CHAR]);
- 크기: 확보되는 기억 공간의 크기 (1 ~ 4000).
- BYTE|CHAR: 생략 시 BYTE로 간주. 'CHAR'를 사용하면 '크기'는 문자 수를 의미.
- 컬럼명 VARCHAR2(크기 [BYTE|CHAR]);
- 사용 예시:
SQL
CREATE TABLE TEMP02(
COL1 CHAR(100),
COL2 VARCHAR2(4000),
COL3 VARCHAR2(4000 BYTE),
COL4 VARCHAR2(4000 CHAR)
);
INSERT INTO TEMP02 VALUES('IL POSTINO','BOYHOOD','BOYHOOD','대전시 중구 계룡로 846');
SELECT * FROM TEMP02;
SELECT LENGTHB(COL1), LENGTHB(COL2), LENGTHB(COL3), LENGTHB(COL4), LENGTH(COL4) FROM TEMP02;
3. NVARCHAR2 (가변 길이 유니코드 문자열)
- 특징:
- 가변 길이 유니코드 문자열 데이터를 저장.
- 다국어 지원이 필요한 환경에서 유용하게 사용.
- 문자 단위로 길이를 처리하므로, 다양한 문자 집합의 데이터를 일관되게 관리할 수 있다.
- 사용 형식:
- 컬럼명 NVARCHAR2(크기);
- 크기: 문자 수를 의미.
- 컬럼명 NVARCHAR2(크기);
- 추가사항:
- 데이터를 국제 표준 코드(UTF-8, UTF-16) 방식으로 저장.
4. LONG (대용량 문자열)
- 특징:
- 대용량 문자열 데이터를 저장.
- 최대 2GB까지 저장 가능.
- 오라클 초기 버전부터 제공되었지만, 현재는 CLOB 타입으로 대체되고 있다.
- 한 테이블에 하나의 LONG 타입 컬럼만 사용할 수 있다.
- 다양한 SQL 기능에서 제한적으로 사용.
- 사용 형식:
- 컬럼명 LONG;
- 사용 예시:
SQL
CREATE TABLE TEMP03(
COL1 VARCHAR2(2000),
COL2 LONG,
COL3 VARCHAR2(3000)
);
INSERT INTO TEMP03(COL1,COL2) VALUES('IL POSTINO', 'BOYHOOD');
SELECT * FROM TEMP03;
5. CLOB (Character Large Object)
- 특징:
- 대용량 문자열 데이터를 저장.
- 최대 4GB까지 저장 가능.
- 한 테이블에 여러 개의 CLOB 타입 컬럼을 사용할 수 있다.
- LONG 타입의 기능 개선 버전.
- 일부 기능은 DBMS_LOB API를 사용해야 한다.
- CLOB 데이터를 다룰 때 성능에 영향을 미칠 수 있으므로, 인덱싱, 검색, 업데이트 등의 작업을 최적화하는 방법을 고려해야 한다.
- 사용 형식:
- 컬럼명 CLOB;
- 사용 예시:
SQL
CREATE TABLE TEMP04(
COL1 CLOB,
COL2 CLOB,
COL3 CLOB
);
INSERT INTO TEMP04(COL1,COL2) VALUES('무궁화 꽃이 피었습니다.', '대전시 중구 계룡로 846');
SELECT * FROM TEMP04;
SELECT LENGTH(COL2) FROM TEMP04;
SELECT DBMS_LOB.GETLENGTH(COL1) FROM TEMP04;
SELECT SUBSTR(COL1, 3, 4) AS 컬럼1, DBMS_LOB.SUBSTR(COL1,3,4) AS 컬럼2 FROM TEMP04;
데이터 타입 선택 가이드라인:
- 고정 길이 데이터: CHAR
- 가변 길이 데이터: VARCHAR2 또는 NVARCHAR2
- 대용량 텍스트 데이터: CLOB
참고 사항:
- LENGTHB() 함수는 문자열의 바이트 길이를 반환하고, LENGTH() 함수는 문자 길이를 반환.
'개발 > SQL' 카테고리의 다른 글
Oracle 데이터 타입 - 날짜 (0) | 2025.02.21 |
---|---|
Oracle 데이터 타입 - 숫자 (0) | 2025.02.21 |
Oracle 11g XE scott계정 생성하기 (0) | 2025.02.21 |
Oracle 권한 및 롤 (0) | 2025.02.21 |
Oracle 기본 계정 및 계정관련 sql (0) | 2025.02.21 |