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