10.2. MySQL의 문자 셋과 콜레션
MySQL 서버는 다양한 문자 셋을 지원한다. 사용 가능한 문자 셋을 보기 위해서는, SHOW CHARACTER SET 명령문을 입력한다. 아래에 있는 리스트는 사용 가능한 문자 셋의 일부분이며, 보다 자세한 정보는 Section 10.10, “MySQL이 지원하는 문자 셋과 콜레션”을 참조하기 바란다.
mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| tis620 | TIS620 Thai | tis620_thai_ci | 1 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
...
모든 문자 셋은 적어도 하나의 콜레션을 가지고 있다. 어떤 것들은 여러 개의 콜레션을 가지고 있기도 한다. 특정 문자 셋에 대한 콜레션은 SHOW COLLATION 명령문을 통해 확인할 수 있다. 예를 들면, latin1 (cp1252 서 유럽어) 문자 셋의 콜레션을 보고자 한다면, 아래와 같이 입력을 한다:
mysql> SHOW COLLATION LIKE 'latin1%';
+---------------------+---------+----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+---------------------+---------+----+---------+----------+---------+
| latin1_german1_ci | latin1 | 5 | | | 0 |
| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 |
| latin1_danish_ci | latin1 | 15 | | | 0 |
| latin1_german2_ci | latin1 | 31 | | Yes | 2 |
| latin1_bin | latin1 | 47 | | Yes | 1 |
| latin1_general_ci | latin1 | 48 | | | 0 |
| latin1_general_cs | latin1 | 49 | | | 0 |
| latin1_spanish_ci | latin1 | 94 | | | 0 |
+---------------------+---------+----+---------+----------+---------+
latin1 콜레션은 아래와 같은 의미를 가지고 있다:
|
Collation |
Meaning |
|
latin1_german1_ci |
German DIN-1 |
|
latin1_swedish_ci |
Swedish/Finnish |
|
latin1_danish_ci |
Danish/Norwegian |
|
latin1_german2_ci |
German DIN-2 |
|
latin1_bin |
Binary according to latin1 encoding |
|
latin1_general_ci |
Multilingual (Western European) |
|
latin1_general_cs |
Multilingual (ISO Western European), case sensitive |
|
latin1_spanish_ci |
Modern Spanish |
콜레션은 다음과 같은 일반적인 특성을 가지고 있다:
- 두 개의 서로 다른 문자 셋은 동일한 콜레션을 가질 수 없다.
- 각각의 문자 셋은 디폴트 콜레션을 하나씩 가지고 있다. 예를 들면, latin1에 대한 디폴트 콜레션은 latin1_swedish_ci이다. SHOW CHARACTER SET 결과 값은 출력되는 각각의 문자 셋에 대한 디폴트 콜레션이 어떤 것인지를 가리킨다.
- 콜레션 이름 변환이 존재한다: 콜레션 이름은 서로 연관된 문자 셋의 이름을 가지고 시작되고, 이것들은 일반적으로 언어 이름을 포함하며, _ci (대소 문자 구분 없음), _cs (대소 문자 구분 있음), 또는 _bin (바이너리)로 끝을 맺는다.