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.