MySQL에서 데이터베이스나 테이블의 문자셋(character set)이 무엇으로 설정되어 있는지 확인하는 것은 인코딩 문제를 예방하고 다국어 데이터를 올바르게 처리하는 데 매우 중요합니다. 이 글에서는 간단한 SQL 쿼리만으로 문자셋과 콜레이션(collation) 설정을 확인하는 방법을 알아보겠습니다.
데이터베이스 문자셋 확인하기
데이터베이스의 기본 문자셋을 확인하려면 SHOW CREATE DATABASE 문을 사용합니다. 예를 들어 'web'이라는 데이터베이스의 설정을 확인해 보겠습니다.
mysql> SHOW CREATE DATABASE web;
위 쿼리를 실행하면 다음과 같이 해당 데이터베이스의 생성 구문과 함께 기본 문자셋 정보가 출력됩니다.
+----------+-----------------------------------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------------------------------+ | web | CREATE DATABASE `web` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ | +----------+-----------------------------------------------------------------------------------------+ 1 row in set (0.03 sec)
출력 결과에서 확인할 수 있듯이, 'web' 데이터베이스는 utf8 문자셋과 utf8_unicode_ci 콜레이션으로 설정되어 있습니다.
특정 테이블의 문자셋 확인하기
데이터베이스가 아닌 특정 테이블의 문자셋을 알고 싶다면 SHOW CREATE TABLE 문을 사용합니다. 여기서는 'web' 데이터베이스에 있는 DemoTable 테이블의 설정을 확인해 보겠습니다.
mysql> SHOW CREATE table web.DemoTable;
실행 결과는 다음과 같으며, 테이블의 문자셋 정보를 포함한 생성 구문이 표시됩니다.
+--------------+----------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +--------------+----------------------------------------------------------------------------------------------------------------------------------+ | DemoTable | CREATE TABLE `DemoTable` (`Value` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +--------------+----------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
DemoTable은 InnoDB 엔진으로 생성되었으며, 마찬가지로 utf8 문자셋과 utf8_unicode_ci 콜레이션이 적용된 것을 확인할 수 있습니다.
참고: information_schema로 조회하는 방법
생성 구문 대신 시스템 카탈로그를 통해 직접 조회할 수도 있습니다. 아래 쿼리를 활용하면 여러 데이터베이스나 테이블의 문자셋을 한 번에 확인할 수 있어 관리 작업에 유용합니다.
-- 스키마(데이터베이스)별 기본 문자셋 조회 SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA; -- 테이블별 문자셋 조회 SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_COLLATION FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'web';
마무리
SHOW CREATE DATABASE와 SHOW CREATE TABLE 문은 MySQL에서 문자셋 설정을 가장 빠르게 확인할 수 있는 방법입니다. 특히 한국어 등 멀티바이트 문자를 다루는 서비스라면 utf8mb4 문자셋 사용을 권장하며, 데이터베이스 생성 시점부터 일관된 인코딩 정책을 적용하는 것이 좋습니다.