MySQL에서 새로운 데이터베이스를 생성할 때 기본 문자 집합(character set)과 정렬 규칙(collation)을 함께 지정하면, 이후 해당 데이터베이스에 만들어지는 모든 테이블이 일관된 인코딩을 사용하게 됩니다. 한글이나 다국어 데이터를 다룰 때 특히 중요한 설정입니다.
기본 문자 집합 설정 문법
데이터베이스 생성 시 기본 문자 집합을 지정하는 기본 문법은 다음과 같습니다.
CREATE DATABASE IF NOT EXISTS yourDatabaseName
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
- DEFAULT CHARACTER SET utf8: 데이터베이스의 기본 문자 집합을 UTF-8로 지정합니다.
- DEFAULT COLLATE utf8_general_ci: 대소문자를 구분하지 않는(ci = case insensitive) UTF-8 정렬 규칙을 지정합니다.
실제 적용 예시
위 문법을 활용하여 기본 문자 집합을 UTF8로 설정한 데이터베이스를 생성해 보겠습니다.
mysql> CREATE DATABASE IF NOT EXISTS instant_app
-> DEFAULT CHARACTER SET utf8
-> DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected, 1 warning (0.13 sec)
명령이 성공적으로 실행되면 'Query OK' 메시지가 출력됩니다.
생성된 데이터베이스 설정 확인하기
데이터베이스가 의도한 대로 생성되었는지 확인하려면 아래 명령어를 실행합니다.
mysql> show create database instant_app;
출력 결과
위 명령은 다음과 같은 결과를 반환합니다.
+-------------+----------------------------------------------------------------------+
| Database | Create Database |
+-------------+----------------------------------------------------------------------+
| instant_app | CREATE DATABASE `instant_app` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+-------------+----------------------------------------------------------------------+
1 row in set (0.03 sec)
출력 결과를 보면 instant_app 데이터베이스에 기본 문자 집합으로 utf8이 올바르게 설정된 것을 확인할 수 있습니다.
참고 사항
MySQL 5.5.3 이상 버전에서는 이모지(emoji)처럼 4바이트가 필요한 문자까지 저장할 수 있는 utf8mb4 문자 집합과 utf8mb4_unicode_ci 정렬 규칙을 사용하는 것이 권장됩니다. 최신 프로젝트라면 다음과 같이 설정하는 것이 좋습니다.
CREATE DATABASE IF NOT EXISTS yourDatabaseName
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_unicode_ci;