Поиск

Наборы символов и порядки сопоставления на уровне базы данных

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

Операторы 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