본문 바로가기

Oracle

CHAR, VARCHAR, VARCHAR2 차이점

오라클에서 문자를 저장하기 위해서는 알맞은 데이터 타입을 변수에 지정해줘야 합니다.

대표적인 3가지 데이터 타입을 보고 차이점을 보도록 하겠습니다.

1. CHAR

CHAR 데이터 타입은 고정된 문자열을 저장하는 데 사용합니다. 
테이블을 만들 때, 무조건 고정된 길이를 지정해줘야 하고 범위는 1~2000 bytes입니다.

한글의 경우 글자당 2byte이므로 1000글자가 저장가능하겠네요. 영문, 숫자의 경우 1byte입니다.

그러나 오라클에서는 캐릭터 셋에 따라서 한 글자를 3바이트로 인식하는 경우도 있다고 하니 주의해야 하겠습니다.

혹시 캐릭터 셋이나 인코딩이 궁금하신 분들은 아래 링크를 참조해 보시면 도움이 될 것 같습니다.

인코딩 이해 : https://d2.naver.com/helloworld/19187


어찌 됐든~ 잘 모르시겠거나 헷갈리시는 분은 아래의 3가지만 기억하시면 됩니다.

첫째, CHAR로 데이터 타입을 선언하게 되면 고정된 길이를 가집니다.

둘째, CHAR를 데이터 타입으로 선언한 변수에 고정된 길이보다 작은 길이의 문자를 넣어도 남은 부분을 공백으로 다 채웁니다.

셋째, 만약 더 큰 길이를 입력하게 되면 오라클 DB는 에러를 반환합니다.

즉, 2000바이트로 선언했으면 무조건 2000바이트를 가지게 되는 것입니다. 


2. VARCHAR, VARCHAR2

VARCHAR, VARCHAR2는 가변 길이로 문자열을 저장할 수 있는 데이터 타입입니다. 만약 우리가 VARCHAR2로 변수를 만들면 1~4000byte까지의 길이를 지정해줄 수 있습니다.

char와의 차이점이라면 우리가 선언한 문자열보다 더 짧은 문자열을 선언하게 될 경우 char의 경우 공백으로 남은 부분을 메꾸지만 varchar와 varchar2는 그렇지 않다는 점입니다.

그렇기 때문에, varchar2를 사용하면 메모리 상의 이점을 얻게 되어 더 많이 사용됩니다.


3. VARCHAR와 VARCHAR2 차이점

둘의 차이점이 무엇이냐면.. 없습니다.

실제로 오라클 공식 문서에는 두 데이터 타입이 synoymous, 즉 동의어라고 나와 있습니다.

그러나 varchar2를 사용하는 것을 추천드립니다. 왜냐하면 varchar는 나중에 다른 방식의 데이터 타입으로 변경될 수 있기 때문입니다.

프로그램을 만들고 운영 중인데 나중에 varchar로 선언한 것을 다 varchar2로 바꿔야 한다면 상당히 귀찮아지는 일이겠죠..?

불러오는 중입니다...



혹시 잘못된 점은 댓글을 달아주시면 바로 수정하도록 하겠습니다. 감사합니다.

출처: https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1822

 

Oracle Data Types

33/35 26 Oracle Data Types This chapter discusses the Oracle built-in datatypes, their properties, and how they map to non-Oracle datatypes. This chapter includes the following topics: Overview of Character Datatypes The character datatypes store character

docs.oracle.com

 

'Oracle' 카테고리의 다른 글

서브쿼리의 종류와 WITH 쿼리  (0) 2020.06.30
상위 N개 레코드 조회하기  (0) 2020.05.24
PLSQL - 필수 개념 정리  (0) 2020.03.23
PL/SQL - DUAL TABLE  (0) 2020.03.18
PL/SQL - 대입연산자  (0) 2020.03.17