Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL CHAR와 VARCHAR의 차이점 완벽 비교

CHAR와 VARCHAR는 모두 MySQL에서 문자 데이터를 저장하는 데 사용되는 데이터 타입으로, 겉보기에는 매우 유사해 보입니다. 하지만 데이터를 저장하고 검색하는 방식에서 중요한 차이점을 가지고 있으며, 이러한 차이는 실제 데이터베이스 설계와 성능에 큰 영향을 미칩니다.

CHAR와 VARCHAR의 주요 차이점

CHAR 데이터 타입VARCHAR 데이터 타입
정식 명칭은 CHARACTER입니다.정식 명칭은 VARIABLE CHARACTER(가변 문자)입니다.
값을 고정 길이로 저장하며, 지정된 길이에 맞추기 위해 남는 공간은 공백 문자로 채워집니다.값을 가변 길이로 저장하며, 실제 데이터 길이 정보를 담는 1바이트 또는 2바이트의 길이 접두사(prefix)를 함께 저장합니다. 공백으로 채우지 않습니다.
최대 255자까지 저장할 수 있습니다.최대 65,535자까지 저장할 수 있습니다.
정적(static) 메모리 할당 방식을 사용합니다.
mysql> create table emp(name CHAR(20));
Query OK, 0 rows affected (0.25 sec)
동적(dynamic) 메모리 할당 방식을 사용합니다.
mysql> create table emp1(name VARCHAR(20));
Query OK, 0 rows affected (0.21 sec)

어떤 상황에서 무엇을 사용해야 할까?

CHAR가 적합한 경우

저장되는 데이터의 길이가 항상 일정한 경우 CHAR가 유리합니다. 예를 들어 국가 코드('KR', 'US' 등), 성별 코드('M', 'F'), 우편번호처럼 길이가 고정된 값이라면 CHAR를 사용하는 것이 저장 공간 낭비 없이 효율적입니다.

VARCHAR가 적합한 경우

데이터 길이가 들쭉날쭉한 경우에는 VARCHAR가 좋습니다. 사용자 이름, 이메일 주소, 게시글 제목처럼 입력마다 길이가 달라지는 데이터는 VARCHAR로 저장해야 불필요한 공백 패딩으로 인한 공간 낭비를 막을 수 있습니다.

정리

CHAR는 고정 길이 저장 방식으로 최대 255자까지 지원하며 정적 메모리 할당을 사용하고, VARCHAR는 가변 길이 저장 방식으로 최대 65,535자까지 지원하며 동적 메모리 할당을 사용합니다. 따라서 길이가 고정된 짧은 데이터는 CHAR, 가변적인 길이의 데이터는 VARCHAR를 선택하는 것이 MySQL 데이터베이스를 효율적으로 설계하는 핵심 포인트입니다.