Каждая база данных имеет символьный набор и порядок сопоставления, которые могут быть ненулевыми.
Операторы CREATE DATABASE и ALTER DATABASE имеют необязательные конструкции для спецификации набора символов и порядка сопоставления для базы данных:
CREATE DATABASE имя__базы__д анных
[[DEFAULT] CHARACTER SET имя_яабора]
[[DEFAULT] COLLATE имя_порядка_сопоставления] ALTER DATABASE имя_базы_данных
[[DEFAULT] CHARACTER SET имя__набора]
[[DEFAULT] COLLATE имя__порядка_сопоставления]
Пример:
CREATE DATABASE имя_базы_данных
DEFAULT CHARACTER SET latinl COLLATE latinl_swedish_ci;
MySQL выбирает символьный набор и порядок сопоставления для базы данных следующим образом:
- Если указаны и CHARACTER SET X, и COLLATE Y, принимается набор символов X и
порядок сопоставления Y. - Если CHARACTER SET X указан без COLLATE, принимается набор символов X и его
порядок сопоставления по умолчанию. - В противном случае принимается символьный набор и порядок сопоставления,
установленные на сервере.
Синтаксис оператора MySQL CREATE DATABASE.. .DEFAULT CHARACTER SET… аналогичен стандартному синтаксису SQL CREATE SCHEMA…CHARACTER SET…
Таким образом, существует возможность создавать базы данных с различными наборами символов и порядками сопоставления на одном сервере MySQL.
Набор символов и порядок сопоставления по умолчанию, установленный для базы данных, можно прочитать через системные переменные character_set_database и collation_database. Сервер устанавливает значение этих переменных всякий раз, когда меняется база данных по умолчанию. Если в данный момент нет базы по умолчанию, эти переменные принимают значение, равное значению соответствующих переменных уровня сервера, – character_set_server и collation_server