MySQL에서 특정 열(Column)의 문자 집합(Character Set)을 변경하려면 ALTER TABLE 문과 함께 MODIFY 절을 사용하면 됩니다. 이 글에서는 실제 예제를 통해 열 단위로 문자 집합을 설정하고 확인하는 전체 과정을 단계별로 살펴보겠습니다.
기본 문법
열의 문자 집합을 설정하는 기본 문법은 다음과 같습니다.
ALTER TABLE 테이블이름 MODIFY 열이름 데이터타입 CHARACTER SET 문자집합이름;
문자 집합 이름은 utf8, utf8mb4, euckr 등 원하는 값으로 지정할 수 있습니다.
1단계: 테스트용 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리는 FirstName이라는 varchar 타입의 열 하나를 가진 테이블을 만듭니다.
mysql> create table setCharsetDemo -> ( -> FirstName varchar(60) -> ); Query OK, 0 rows affected (2.09 sec)
2단계: 현재 문자 집합 확인
테이블 생성 후, SHOW CREATE TABLE 명령으로 현재 열에 적용된 문자 집합을 확인할 수 있습니다.
mysql> show create table setCharsetDemo;
실행 결과는 다음과 같습니다.
+----------------+-------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------------+-------------------------------------------------------------------------------------------------------------------+ | setCharsetDemo | CREATE TABLE `setcharsetdemo` (`FirstName` varchar(60) COLLATE utf8mb4_unicode_ci DEFAULT NULL) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci | +----------------+-------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
출력 결과를 보면 별도의 설정 없이 테이블을 생성했기 때문에, MySQL 서버의 기본 문자 집합인 utf8mb4가 자동으로 적용된 것을 확인할 수 있습니다.
3단계: 열의 문자 집합 변경하기
이번에는 해당 열의 문자 집합을 utf8mb4에서 utf8로 변경해 보겠습니다. ALTER TABLE 문에 MODIFY 절을 사용합니다.
mysql> alter table setCharsetDemo modify FirstName varchar(60) CHARACTER SET utf8; Query OK, 0 rows affected, 1 warning (2.81 sec) Records: 0 Duplicates: 0 Warnings: 1
참고: utf8mb4는 이모지(Emoji) 등 4바이트 유니코드 문자를 저장할 수 있는 반면, utf8(utf8mb3)은 최대 3바이트까지만 지원합니다. 따라서 이모지 데이터를 저장해야 하는 경우라면 utf8mb4 사용을 권장합니다.
4단계: 변경 결과 검증
문자 집합이 정상적으로 변경되었는지 다시 한번 확인해 보겠습니다.
mysql> show create table setCharsetDemo;
아래 출력 결과에서 FirstName 열에 CHARACTER SET utf8과 COLLATE utf8_general_ci가 적용된 것을 볼 수 있습니다. 즉, 열 단위 문자 집합 변경이 성공적으로 완료되었습니다.
+----------------+-------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------------+-------------------------------------------------------------------------------------------------------------------+ | setCharsetDemo | CREATE TABLE `setcharsetdemo` (`FirstName` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci | +----------------+-------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
마무리 정리
지금까지 MySQL에서 특정 열의 문자 집합을 변경하는 방법을 알아보았습니다. 핵심은 다음과 같습니다.
- ALTER TABLE ... MODIFY 문법으로 열 단위 문자 집합을 지정할 수 있습니다.
- SHOW CREATE TABLE 명령으로 현재 적용된 문자 집합과 콜레이션(Collation)을 손쉽게 확인할 수 있습니다.
- 테이블 전체 기본 문자 집합과 개별 열의 문자 집합은 서로 독립적으로 설정될 수 있으므로, 혼용 시 데이터 저장 시 주의가 필요합니다.