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_nameCOLLATEуказаны, используется набор символовcollation_namecharset_nameи сортировкаcollation_name.Если
CHARACTER SETуказан безcharset_nameCOLLATE, используется набор символовcharset_nameи его сортировка по умолчанию. Чтобы увидеть сортировку по умолчанию для каждого набора символов, используйте утверждениеSHOW CHARACTER SETили запросите таблицу схемы информацииINFORMATION_SCHEMACHARACTER_SETS.Если
COLLATEуказан безcollation_nameCHARACTER 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.