MySQL에서 CHAR는 고정 길이(fixed-length) 문자열을 저장하기 위해 사용되고, VARCHAR는 가변 길이(variable-length) 문자열을 저장하기 위해 사용됩니다.
따라서 한 컬럼은 CHAR 타입으로, 다른 컬럼은 VARCHAR 타입으로 각각 선언하면 고정 길이 문자열과 가변 길이 문자열을 동일한 테이블 안에서 함께 관리할 수 있습니다.
예제
아래 예제에서는 FirstName 컬럼을 CHAR(10)으로, LastName 컬럼을 VARCHAR(10)으로 선언하여 Employees 테이블을 생성하고, DESC 명령으로 테이블 구조를 확인합니다.
mysql> Create Table Employees(FirstName CHAR(10), LastName VARCHAR(10)); Query OK, 0 rows affected (0.64 sec) mysql> Desc Employees; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | FirstName | char(10) | YES | | NULL | | | LastName | varchar(10) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ 2 rows in set (0.03 sec)
CHAR와 VARCHAR의 주요 차이점
- CHAR(n): 항상 지정된 길이(n)만큼의 저장 공간을 차지합니다. 입력값이 지정 길이보다 짧으면 나머지 부분이 공백으로 채워지며, 값을 조회할 때 후행 공백은 제거됩니다.
- VARCHAR(n): 실제 저장된 값의 길이에 필요한 만큼만 공간을 사용하므로, 입력되는 데이터의 길이가 들쭉날쭉한 경우 저장 공간을 더 효율적으로 활용할 수 있습니다.
이처럼 데이터의 특성에 따라 CHAR와 VARCHAR를 적절히 조합하면 하나의 테이블에서도 두 종류의 문자열을 효과적으로 저장할 수 있습니다.