Наборы символов и сопоставления MySQL можно интерпретировать как нисходящий список приоритетных элементов. Самое верхнее имеет наименьший приоритет, а самое нижнее — наиболее приоритетное.
Порядок старшинства, где наивысший является наименьшим приоритетом:
- Сопоставление серверов
- Сопоставление для конкретного соединения
- Сопоставление базы данных
- Сортировка таблиц
- Сопоставление столбцов
- Сопоставление запросов (с использованием
CAST
или CONVERT
)
Сопоставление сервера задается сервером, который устанавливается либо внутри my.cnf
, либо при сборке сервера из исходного кода. По умолчанию это обычно будет latin1
или utf8
, в зависимости от вашей платформы.
Сопоставление для конкретного соединения задается клиентом с помощью запроса типа SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
. Большинство клиентов не устанавливают сопоставление для конкретного соединения, поэтому сервер будет использовать собственное значение по умолчанию, как описано выше.
Сортировка базы данных задается во время создания базы данных или вручную путем ее последующего обновления. Если вы не укажете его, будет использоваться следующая сортировка более высокого уровня, которая будет либо специфичной для соединения, либо сортировкой сервера.
Параметры сортировки таблицы такие же, как параметры сортировки базы данных, за исключением того, что если оставить это поле пустым, будет использоваться база данных по умолчанию, затем параметры сортировки для конкретного соединения и, наконец, параметры сортировки сервера.
Сопоставление столбцов использует сопоставление таблицы по умолчанию, и если сопоставление не установлено, оно будет следовать по цепочке, чтобы найти сопоставление для использования, останавливаясь на сервере, если все остальные не были установлены.
Сопоставление запроса указывается в запросе с помощью CAST
или CONVERT
, но в противном случае будет использоваться следующее доступное сопоставление в цепочке. Невозможно установить это, если вы не используете функцию.
Также см. страницу руководства Поддержка набора символов.
person
Carl Bennett
schedule
22.06.2014
SELECT 'e' = 'é'
? Без таблицы для ссылки должна быть какая-то более высокая сортировка, верно? - person Niet the Dark Absol   schedule 23.06.2014