MySQL 테이블의 기본 문자 집합 변경하기
MySQL에서 테이블의 기본 문자 집합(default charset)을 변경해야 하는 경우가 종종 있습니다. 예를 들어 다국어 데이터를 저장하거나 기존 인코딩 문제를 해결할 때가 그렇습니다. 이때 ALTER TABLE ... CONVERT TO 구문을 사용하면 간단하게 처리할 수 있습니다.
기본 문법
테이블의 기본 문자 집합을 변경하는 기본 문법은 다음과 같습니다.
ALTER TABLE yourTableName CONVERT TO CHARACTER SET yourCharsetName;
이 구문은 테이블의 기본 문자 집합을 변경할 뿐만 아니라, 테이블 내 모든 문자열 컬럼(CHAR, VARCHAR, TEXT 등)의 문자 집합까지 함께 변환해 줍니다.
예제 테이블 생성
먼저 실습에 사용할 테이블을 만들어 보겠습니다.
mysql> CREATE TABLE CharsetDemo
-> (
-> Id int,
-> Name varchar(200),
-> Age int
-> );
Query OK, 0 rows affected (0.73 sec)문자 집합 변경 적용
이제 위에서 설명한 ALTER TABLE 구문을 사용하여 테이블의 문자 집합을 latin7로 변경해 보겠습니다.
mysql> ALTER TABLE CharsetDemo CONVERT TO CHARACTER SET latin7; Query OK, 0 rows affected (1.59 sec) Records: 0 Duplicates: 0 Warnings: 0
명령이 성공적으로 실행되면 테이블의 기본 문자 집합이 latin7으로 변경됩니다.
변경 결과 확인하기
문자 집합이 실제로 변경되었는지 확인하려면 SHOW CREATE TABLE 명령을 사용하면 됩니다.
mysql> SHOW CREATE TABLE CharsetDemo;
실행 결과는 다음과 같습니다.
+-------------+-------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------------+-------------------------------------------------------------------------------------------------------------------+ | CharsetDemo | CREATE TABLE `charsetdemo` (`Id` int(11) DEFAULT NULL, `Name` varchar(200) DEFAULT NULL, `Age` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin7 | +-------------+-------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
출력 결과 마지막 부분에서 DEFAULT CHARSET=latin7이라는 항목을 확인할 수 있습니다. 이것은 테이블의 기본 문자 집합이 성공적으로 latin7으로 변경되었음을 의미합니다.
참고 사항
한글 데이터를 다루는 경우에는 latin7보다 utf8mb4 문자 집합을 사용하는 것이 좋습니다. utf8mb4는 이모지를 포함한 모든 유니코드 문자를 지원하며, MySQL 5.5.3 이상 버전에서 사용할 수 있습니다. 예를 들어 다음과 같이 실행하면 됩니다.
ALTER TABLE CharsetDemo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;