Spec-Zone.ru › MySQL 8.4

12.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.

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

Параметры базы данных хранятся в словаре данных и могут быть просмотрены, проверив таблицу схемы информации SCHEMATA.

Пример:

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-8.4-en/charset-database.html

Spec-Zone.ru

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