CHAR DATATYPE은 FIXED LENGTH CAHRACTER STRING을 저장합니다.
COLUMN LEGTH는 1 에서 255BYTES 까지의 DATA를 저장할 수 있읍니다.
COLUMN길이가 10 으로 정의되었을때 한번 INSERT 문장을 통해 5 BYTES를 입력하였다면
나머지 5 BYTES는 SPACE처리되어 그 DATA의 SIZE는 10 BYTE가 됩니다.
반면에 VARCHAR2 DATATYPE은 VARIABLE-LENGTH CHARACTER STRINGS을 저장합니다.
COLUMN LENGTH는 1에서 4000BYTES 까지의 DATA를 저장할수 있읍니다.
COLUMN길이가 10 으로 정의되었을때 한번 INSERT 문장을 통해 5 BYTES를 입력하였다면
나머지 5 BYTES는 NULL 처리되어 그 DATA의 SIZE는 5 BYTE가 됩니다.
우리가 SQLPLUS의 VSIZE함수를 통해 알아보면 다음과 같습니다.
SQL>CREATE TABLE varchar_test(
char_ CHAR(10),
varchar_ VARCHAR2(10));
SQL> INSERT INTO varchar_test(char_ , varchar_) VALUES(’aaaaa’, ’bbbbb’);
1 개의 행이 만들어졌습니다.
SQL>SELECT VSIZE(char_) "CHAR_DATATYPE", VSIZE(varchar_) "VARCHAR2_DATATYPE"
FROM varchar_test
CHAR_DATATYPE VARCHAR2_DATATYPE
------------- -----------------
10 5
위와 같은 특징을 갖고 있기 때문에 정확히 구분하여 사용해야만 SPACE를 절약할수 있고
ERROR를 방지할수 있습니다.
만약 사용자가 COMPARISON상에서 ANSI호환성을 요구한다면 를 DATA TYPE를 CHAR로 선언해야 합니다.
즉 나머지공간이 STRING COMPARISONS에서 중요한다면 CHAR로 해야합니다.
그런 특수한 경우 제외한 나머지 경우에는 VARCAHR2로 사용하는 것이 SPACE가 절약 될 것입니다.