MySQL 캐릭터셋 설정하기

created Sep 18, 2022 | updated Oct 15, 2022

MySQL의 Character Set과 Collation을 설정하는 방법, 주로 사용하는 값에 대해서도 알아보자.

개념


  • 캐릭터셋 (Character Set; 문자 집합)
    • 기호(symbol)와 인코딩의 집합이다.
    • 그래픽 문자(휴먼 언어와 같은)에 숫자를 할당하는 것을 캐릭터 인코딩(Character Encoding)이라고 한다.
    • 한 개의 캐릭터는 한 개의 숫자 값에 매핑되고, 맵핑된 다수의 값들은 집합이 되어 캐릭터셋(Character Set)이 된다.
  • 정렬 (Collation; 비교 및 대조)
    • 캐릭터셋의 캐릭터를 비교하기 위한 규칙의 집합이다.

Character Set과 Collation 설정하기


Character Set

  • 주로 utf8mb4 사용한다.
  • utf8mb3의 경우 이모지(emoji)는 깨질 수 있다.

Collation

  • 주로 utf8mb4_general_ci 사용한다.
  • utf8mb4_general_ci는 대소문자 구별없이 정렬하고 정렬 속도가 빠르다.
    • ci는 case-insensitive의 약자이고, 대소문자를 구분을 하지 않는 다는 것을 알 수 있다.
  • 만일 대소문자 구별이 필요하다면 utf8mb4_bin를 사용한다. 하지만 bin() 함수를 대신 사용할 수도 있다.
  • 다국어 처리가 필요한 경우 utf8mb4_unicode_ci를 사용한다.

데이터베이스의 character set과 collation 확인하기

SHOW CHARACTER SET;

+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
...
| utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 |
| utf8mb4  | UTF-8 Unicode                   | utf8mb4_general_ci  |      4 |
...

(예제) 데이터베이스와 테이블 생성하기

character set과 collation은 데이터베이스, 테이블, 컬럼 정의할 때 설정할 수 있다.

CREATE DATABASE IF NOT EXISTS d_foo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS t_bar (
    id bigint(20) NOT NULL AUTO_INCREMENT,
    type char(10) NOT NULL,
    description varchar(256) NULL CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci
    
) ENGINE=InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;

참고


※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

유리아쥬 제모스 스틱 레브르 립밤 4g x 10개, 12개, 무향솔가 어드밴스드 칼슘 컴플렉스 타블렛, 120개입, 1개커세어 코리아 정품 DARK CORE PRO 무선 충전 RGB 게이밍 마우스 / 다용도 에코백 사은품 증정, 혼합색상, RGP0076