MySQL에서 데이터베이스, 테이블, 컬럼(열)에 설정된 문자 집합(character set)을 확인하는 방법을 예제와 함께 살펴보겠습니다. 이 글에서는 'business'라는 데이터베이스와 그 안에 이미 생성되어 있는 'student' 테이블을 예시로 사용합니다.
1. 테이블의 문자 집합 확인하기
특정 테이블의 문자 집합을 조회하려면 information_schema의 TABLES와 COLLATION_CHARACTER_SET_APPLICABILITY 테이블을 조인하여 확인할 수 있습니다.
SELECT CCSA.character_set_name
FROM information_schema.`TABLES` T,
information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = "yourDatabaseName"
AND T.table_name = "yourTableName";
위 구문을 실제로 적용하여 'business' 데이터베이스의 'student' 테이블 문자 집합을 조회해 보겠습니다.
mysql> SELECT CCSA.character_set_name
-> FROM information_schema.`TABLES` T,
-> information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
-> WHERE CCSA.collation_name = T.table_collation
-> AND T.table_schema = "business"
-> AND T.table_name = "student";
실행 결과는 다음과 같습니다.
+--------------------+ | CHARACTER_SET_NAME | +--------------------+ | utf8mb4 | +--------------------+ 1 row in set (0.13 sec)
'student' 테이블은 utf8mb4 문자 집합을 사용하고 있음을 확인할 수 있습니다.
2. 데이터베이스의 문자 집합 확인하기
데이터베이스의 기본 문자 집합(default character set)을 조회하려면 information_schema.SCHEMATA 테이블을 활용합니다.
SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = "yourDatabaseName";
위 구문을 'business' 데이터베이스에 적용해 보겠습니다.
mysql> SELECT default_character_set_name
-> FROM information_schema.SCHEMATA
-> WHERE schema_name = "business";
실행 결과는 다음과 같습니다.
+----------------------------+ | DEFAULT_CHARACTER_SET_NAME | +----------------------------+ | utf8mb4 | +----------------------------+ 1 row in set (0.00 sec)
'business' 데이터베이스 역시 기본 문자 집합으로 utf8mb4가 설정되어 있습니다.
3. 컬럼(열)의 문자 집합 확인하기
특정 컬럼의 문자 집합을 확인하려면 information_schema.COLUMNS 테이블을 조회하면 됩니다.
SELECT character_set_name FROM information_schema.`COLUMNS` WHERE table_schema = "yourDatabaseName" AND table_name = "yourTableName" AND column_name = "yourColumnName";
이번에는 'business' 데이터베이스의 'student' 테이블에서 'Name' 컬럼의 문자 집합을 조회해 보겠습니다.
mysql> SELECT character_set_name
-> FROM information_schema.`COLUMNS`
-> WHERE table_schema = "business"
-> AND table_name = "student"
-> AND column_name = "Name";
실행 결과는 다음과 같습니다.
+--------------------+ | CHARACTER_SET_NAME | +--------------------+ | utf8mb4 | +--------------------+ 1 row in set (0.00 sec)
정리
MySQL에서는 information_schema를 활용하면 별도의 관리 도구 없이 SQL 쿼리만으로 데이터베이스, 테이블, 컬럼 각각의 문자 집합을 손쉽게 확인할 수 있습니다. 특히 한글이나 이모지 등 멀티바이트 문자를 다룰 때는 utf8mb4 사용 여부를 반드시 점검하는 것이 좋습니다.