Spec-Zone.ru › MySQL 5.7

10.2 Наборы символов и сортировки в MySQL

  • 10.2.1 Набор символов
  • 10.2.2 UTF-8 для метаданных

Сервер 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_SCHEMA CHARACTER_SETS и оператор SHOW CHARACTER SET указывают сортировку по умолчанию для каждого набора символов. Таблица INFORMATION_SCHEMA COLLATIONS и оператор SHOW COLLATION имеют столбец, указывающий для каждой сортировки, является ли она сортировкой по умолчанию для своего набора символов (Yes если да, пустой, если нет).

  • Имена сортировок начинаются с имени набора символов, к которому они относятся, за которым обычно следуют один или несколько суффиксов, указывающих другие характеристики сортировки. Дополнительную информацию о соглашениях об именовании см. в Разделе 10.3.1, «Соглашения об именовании сортировок».

Когда у набора символов несколько сортировок, может быть неясно, какая сортировка наиболее подходит для данного приложения. Чтобы избежать выбора неподходящей сортировки, выполните несколько сравнений с типичными данными, чтобы убедиться, что данная сортировка сортирует значения так, как вы ожидаете.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/charset-mysql.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API