본문 바로가기

DataBase/Oracle

[퍼옴]CHAR 와 VARCHAR2 의 차이


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가 절약 될 것입니다.