10.2 Наборы символов и сортировки в MySQL
Сервер MySQL поддерживает несколько наборов символов. Для отображения доступных наборов символов используйте таблицу INFORMATION_SCHEMA CHARACTER_SETS или оператор SHOW CHARACTER SET. Ниже представлен частичный список. Более полную информацию см. в Разделе 10.10, «Поддерживаемые наборы символов и сортировки».
mysql> SHOW CHARACTER SET;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
...
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
...
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
...
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
...
| binary | Binary pseudo charset | binary | 1 |
...
По умолчанию оператор SHOW CHARACTER SET отображает все доступные наборы символов. Он принимает необязательное условие LIKE или WHERE, указывающее, какие имена наборов символов должны соответствовать. Например:
mysql> SHOW CHARACTER SET LIKE 'latin%';
+---------+-----------------------------+-------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+-----------------------------+-------------------+--------+
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
+---------+-----------------------------+-------------------+--------+
У данного набора символов всегда есть по крайней мере одна сортировка, и большинство наборов символов имеют несколько. Чтобы вывести сортировки для набора символов, используйте таблицу INFORMATION_SCHEMA COLLATIONS или оператор SHOW COLLATION.
По умолчанию оператор SHOW COLLATION отображает все доступные сортировки. Он принимает необязательное условие LIKE или WHERE, указывающее, какие имена сортировок отобразить. Например, чтобы увидеть сортировки для набора символов по умолчанию, latin1 (cp1252 Западноевропейский), используйте этот оператор:
mysql> SHOW COLLATION WHERE Charset = 'latin1';
+-------------------+---------+----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+-------------------+---------+----+---------+----------+---------+
| latin1_german1_ci | latin1 | 5 | | Yes | 1 |
| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 |
| latin1_danish_ci | latin1 | 15 | | Yes | 1 |
| latin1_german2_ci | latin1 | 31 | | Yes | 2 |
| latin1_bin | latin1 | 47 | | Yes | 1 |
| latin1_general_ci | latin1 | 48 | | Yes | 1 |
| latin1_general_cs | latin1 | 49 | | Yes | 1 |
| latin1_spanish_ci | latin1 | 94 | | Yes | 1 |
+-------------------+---------+----+---------+----------+---------+
Сортировки latin1 имеют следующие значения.
| Сортировка | Значение |
|---|---|
latin1_bin | Бинарная согласно кодировке latin1 |
latin1_danish_ci | Датский/Норвежский |
latin1_general_ci | Многоязычный (Западная Европа) |
latin1_general_cs | Многоязычный (ISO Западная Европа), чувствительный к регистру |
latin1_german1_ci | Немецкий DIN-1 (словарный порядок) |
latin1_german2_ci | Немецкий DIN-2 (порядок телефонной книги) |
latin1_spanish_ci | Современный испанский |
latin1_swedish_ci | Шведский/Финский |
Сортировки обладают следующими общими характеристиками:
Два разных набора символов не могут иметь одинаковую сортировку.
Каждый набор символов имеет по умолчанию сортировку. Например, сортировки по умолчанию для
latin1иutf8соответственно равныlatin1_swedish_ciиutf8_general_ci. ТаблицаINFORMATION_SCHEMACHARACTER_SETSи операторSHOW CHARACTER SETуказывают сортировку по умолчанию для каждого набора символов. ТаблицаINFORMATION_SCHEMACOLLATIONSи операторSHOW COLLATIONимеют столбец, указывающий для каждой сортировки, является ли она сортировкой по умолчанию для своего набора символов (Yesесли да, пустой, если нет).Имена сортировок начинаются с имени набора символов, к которому они относятся, за которым обычно следуют один или несколько суффиксов, указывающих другие характеристики сортировки. Дополнительную информацию о соглашениях об именовании см. в Разделе 10.3.1, «Соглашения об именовании сортировок».
Когда у набора символов несколько сортировок, может быть неясно, какая сортировка наиболее подходит для данного приложения. Чтобы избежать выбора неподходящей сортировки, выполните несколько сравнений с типичными данными, чтобы убедиться, что данная сортировка сортирует значения так, как вы ожидаете.
© 2025 Oracle
Licensed under the GPLv2 License.