Spec-Zone.ru › MySQL 5.7

10.3.3 Набор символов и сортировка базы данных

Каждая база данных имеет набор символов базы данных и сортировку базы данных. У CREATE DATABASE и ALTER DATABASE операторов есть необязательные предложения для указания набора символов и сортировки базы данных:

CREATE DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]

ALTER DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]

Ключевое слово SCHEMA может быть использовано вместо DATABASE.

Все параметры базы данных хранятся в текстовом файле с именем db.opt, который находится в каталоге базы данных.

Предложения CHARACTER SET и COLLATE позволяют создавать базы данных с различными наборами символов и сортировками на одном сервере MySQL.

Пример:

CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;

MySQL выбирает набор символов и сортировку базы данных следующим образом:

  • Если оба CHARACTER SET charset_name и COLLATE collation_name указаны, используются набор символов charset_name и сортировка collation_name.

  • Если CHARACTER SET charset_name указан без COLLATE, используется набор символов charset_name и его сортировка по умолчанию. Чтобы увидеть сортировку по умолчанию для каждого набора символов, используйте оператор SHOW CHARACTER SET или запрос к таблице INFORMATION_SCHEMA CHARACTER_SETS.

  • Если COLLATE collation_name указан без CHARACTER SET, используется набор символов, связанный с collation_name, и сортировка collation_name.

  • В противном случае (ни CHARACTER SET, ни COLLATE не указаны), используются набор символов и сортировка сервера.

Набор символов и сортировка базы данных по умолчанию могут быть определены по значениям системных переменных character_set_database и collation_database. Сервер устанавливает эти переменные всякий раз, когда изменяется база данных по умолчанию. Если базы данных по умолчанию нет, переменные имеют то же значение, что и соответствующие системные переменные на уровне сервера, character_set_server и collation_server.

Чтобы увидеть набор символов и сортировку по умолчанию для данной базы данных, используйте эти операторы:

USE db_name;
SELECT @@character_set_database, @@collation_database;

В качестве альтернативы, чтобы отобразить значения без изменения базы данных по умолчанию:

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';

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

  • Для операторов CREATE TABLE набор символов и сортировка базы данных используются в качестве значений по умолчанию для определений таблиц, если набор символов и сортировка таблицы не указаны. Чтобы переопределить это, укажите явные CHARACTER SET и COLLATE параметры таблицы.

  • Для операторов LOAD DATA, которые не содержат предложения CHARACTER SET, сервер использует набор символов, указанный в системной переменной character_set_database, для интерпретации информации в файле. Чтобы переопределить это, укажите явное предложение CHARACTER SET.

  • Для хранимых процедур (процедур и функций) набор символов и сортировка базы данных, действующие во время создания процедуры, используются в качестве набора символов и сортировки параметров символьных данных, для которых объявление не включает CHARACTER SET или атрибут COLLATE. Чтобы переопределить это, укажите явные CHARACTER SET и COLLATE.

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

Spec-Zone.ru

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