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

출처 -  http://cafe.naver.com/javada.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=119& 

'DB > Common' 카테고리의 다른 글

SQLite  (0) 2012.03.02
varchar와 varchar2의 차이와 number(5,2) 의미  (1) 2012.02.13
CHAR()와 VARCHAR2() 차이  (0) 2012.02.13
TABLE의 key  (0) 2012.01.09
데이터베이스 언어(DBL; DataBase Language)  (0) 2012.01.03
Table, Field, Record 관계  (0) 2011.12.20
Posted by linuxism

댓글을 달아 주세요