[데이터 타입] ORACLE_Char와 Varchar/Varchar2의 차이
문자형 데이터를 형식에는 CHAR타입과 VARCHAR/VARCHAR2타입이 있다.
둘 다 String 즉, 문자열을 저장하는 데이터 타입이라는 점이 같지만 본 포스팅에서는 두 타입의 차이를 살펴보겠다.
특정 칼럼을 char 타입으로 생성할 때 반드시 문자열의 길이를 지정해야 하며 이때, 문자열의 길이는 1과 2000 byte 사이로 지정 가능하다. 예를 들어, CHAR(8)로 생성된 칼럼에 2 bytes의 데이터가 추가될 때, 나머지 6 bytes 만큼 빈 문자열로 대체되어 DB에 저장된다. 즉, 실제 입력된 데이터의 길이에 상관없이 칼럼 생성 시 지정된 크기의 데이터가 저장된다.
반면, VARCHAR2로 생성된 칼럼의 경우 별도로 지정한 칼럼 크기에 상관없이 입력된 데이터 크기 만큼의 데이터가 저장된다.
따라서 해당 칼럼에 입력될 값이 길이 가변적인 경우 VARCHAR2 타입을 그렇지 않은 경우 CHAR타입을 사용하여 칼럼을 생성하면 된다. CHAR타입 칼럼의 경우 DB가 특정 칼럼에 얼마 크기의 데이터가 들어올지 알 수 있기 때문에 데이터 조회가 더 빨라진다. VARCHAR2 타입의 경우 CHAR타입 보다 더 적은 공간을 차지하기 때문에 성능 향상에 도움이 된다. 따라서 위의 속성을 고려하여 테이블을 생성하는 것이 좋다.
* VARCHAR는 VARCHAR2와 그 속성이 같으나 Oracle 공식 문서에서 VARCHAR2를 사용할 것을 권장하고 있다.
출처: docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1824