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

MySQL 데이터베이스·테이블·컬럼의 문자 집합(Character Set) 확인 방법

MySQL에서 데이터베이스, 테이블, 컬럼(열)에 설정된 문자 집합(character set)을 확인하는 방법을 예제와 함께 살펴보겠습니다. 이 글에서는 'business'라는 데이터베이스와 그 안에 이미 생성되어 있는 'student' 테이블을 예시로 사용합니다.

1. 테이블의 문자 집합 확인하기

특정 테이블의 문자 집합을 조회하려면 information_schemaTABLESCOLLATION_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 사용 여부를 반드시 점검하는 것이 좋습니다.