1. MySQL 문자 세트
ㅇ DBMS인 MySQL은, 각 레벨별로 다양한 문자 세트를 각각 지원 가능
- 다음의 각 레벨별로 개별적으로 지정 가능 : 서버,데이터베이스,테이블,컬럼,문자열 상수
ㅇ 문자세트 차이 : 소요 저장 공간, 정렬 및 검색 규칙에 차이가 생김
2. MySQL 문자셋 확인 및 변경
ㅇ 현재 문자셋 확인
- SHOW VARIABLES LIKE 'char%' ;
. character_set_client : utf8, utf8mb4 등
. character_set_connection : utf8, utf8mb4 등
. character_set_database : utf8, utf8mb4 등
. character_set_filesystem : binary
. character_set_results : utf8, utf8mb4 등
. character_set_server : utf8, utf8mb4 등
. character_set_system : utf8, utf8mb4 등
. character_sets_dir : (MySQL)\share\charsets\
. collation_connection : utf8_general_ci, utf8_general_ci, utf8mb4_unicode_ci 등
. collation_database : utf8_general_ci, utf8_general_ci, utf8mb4_unicode_ci 등
. collation_server : utf8_general_ci, utf8_general_ci, utf8mb4_unicode_ci 등
ㅇ 기존 테이블별로 문자셋 변경
- ALTER TABLE 테이블명 CONVERT TO CHARACTER SET '문자셋명';
ㅇ 데이터베이스 통째로 문자셋 변경
- ALTER DATABASE db명 CHARACTER SET 문자세트명 COLLATE 콜레이션명;
. 例) alter database db명 character set utf8mb4 collate utf8mb4_unicode_ci;
ㅇ 데이터베이스 생성시 통째로 문자셋 설정
- CREATE DATABASE db명 CHARACTER SET 문자세트명 COLLATE 콜레이션명;
. 例) create database db명 character set utf8mb4 collate utf8mb4_unicode_ci;
ㅇ 클라이언트,결과셋,커넥션 3개 문자셋을 동시 변경
- SET NAMES '문자셋명';
. SET character_set_client = '문자셋명' ;
. SET character_set_results = '문자셋명' ;
. SET character_set_connection = '문자셋명' ;
3. MySQL 서버 문자셋을 UTF-8로 설정하는 例)
ㅇ 5.1
[mysqld]
character_set_server = utf8
[client]
default_character_set=utf8
[mysql]
default_character_set=utf8
ㅇ 5.5.3 이상
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci
character_set_client_handshake = FALSE
[mysql]
default_character_set = utf8mb4
[client]
default_character_set = utf8mb4
※ 한편, MYSQL 5.5.3 부터, utf8mb4가 지원됨 ☞ 유니코드 참조
- utf8 : (기본다국어평면) 만
- utf8mb4 : (기본다국어평면) + (써로게이트영역)
※ 위에서,
- [mysqld] : 서버 문자셋 설정
- [client] : 서버에 접속하는 프로그램 문자셋 설정 (例, 웹상의 PHP 등)
- [mysql] : (MySQL\bin) 내 mysql 프로그램 문자셋 설정