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

MySQL 데이터베이스 문자셋(Charset) 설정 확인 방법

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 DATABASESHOW CREATE TABLE 문은 MySQL에서 문자셋 설정을 가장 빠르게 확인할 수 있는 방법입니다. 특히 한국어 등 멀티바이트 문자를 다루는 서비스라면 utf8mb4 문자셋 사용을 권장하며, 데이터베이스 생성 시점부터 일관된 인코딩 정책을 적용하는 것이 좋습니다.