[Oracle]CHAR 와 VARCHAR2 의 차이 2 1 18,722

by 김정식 CHAR VARCHAR2 [2001.07.17 00:00:00]


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

by 탁응래 [2006.11.01 11:22:59]
varchar는 오버헤드를 발생시키는 단점이 있다
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입