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
.
CHARACTER SET
и
COLLATE
положения позволяют создавать
базы данных с различными наборами символов и сопоставлениями на
тот же сервер MySQL.
Опции базы данных хранятся в словаре данных и могут быть
проверяется путем проверки информационной схемы
SCHEMATA
стол.
СОЗДАТЬ БАЗУ ДАННЫХ db_name НАБОР СИМВОЛОВ latin1 COLLATE latin1_swedish_ci;Если оба
CHARACTER SET
charset_name
и
COLLATE
collation_name
являются
указанный, набор символов
charset_name
и сопоставление
collation_name
используются.Если НАБОР СИМВОЛОВ
charset_name
это
указано безCOLLATE
, набор символов
charset_name
и его значение по умолчанию
используются сопоставления. Чтобы увидеть параметры сортировки по умолчанию для каждого
набор символов, используйтеSHOW CHARACTER
SET
заявление или запрос
INFORMATION_SCHEMACHARACTER_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 ;
ВЫБЕРИТЕ @@character_set_database, @@collation_database; В качестве альтернативы, чтобы отобразить значения без изменения
база данных по умолчанию:
ВЫБЕРИТЕ DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
ИЗ 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 явно.
. MySQL может иметь сотни тысяч таблеток, поэтому рекомендуется использовать действующую смену кодировки, допускающую действие:
2. Открыть раздел SQL . ( В столбце сравнение сравнения кодировки сопоставления)
3. Скопируйте запрос, представленный ниже, вставьте его в окно SQL- запрос и из применения «нужная_кодировка», «сопоставление» и «имя_базы» на кодировку, которая вам требуется, кодировка предъявляется и соответствует имени. Далее нажмите кнопку « Вперед ».
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET нужная_кодировка COLLATE сопоставление;') as sqlcode
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'имя_базы'
ORDER BY 1
4. В ответ возвращен список исходящих файлов для смены кодировки каждой таблицы. Выберите пункт « Полные тексты » и нажал « Вперед ».
5. Скопируйте запросы, которые появились.
6. Вернитесь в раздел SQL и вставьте в окно запроса скопированные данные.
7. Нажмите кнопку « Вперед
». Кодировка во всех таблицах базы данных успешно изменена.
Ознакомиться с выгодной линейкой тарифов виртуального хостинга можно на нашем сайте.
Иногда в MySQL вместо данных отображается бессвязный набор символов. Это связано с неверно установленной кодировкой. Чтобы данные отображались корректно, нужно настроить верную кодировку для каждой таблицы. Ниже мы покажем, как это сделать сразу для всех таблиц.
В столбце «Сравнение» вы увидите кодировки, установленные для базы данных:
3. Скопируйте запрос:
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET нужная_кодировка COLLATE сопоставление;') as sqlcode
FROM `information_schema`.`TABLES` t
AND t.`TABLE_SCHEMA` = 'имя_базы'
ORDER BY 1
- нужная_кодировка — кодировка, которую вы хотите применить,
- сопоставление — нужное сопоставление кодировки (шаг 2 — столбец «Сравнение»),
- имя_базы — имя базы данных.
4. Откройте раздел SQL
:
5. В окно запроса MySQL добавьте запрос из шага 3 и нажмите Вперёд
, чтобы выполнить его:
Пример запроса для всех таблиц базы данных, чтобы изменить кодировку на utf8 и сопоставление кодировки на utf8_general_ci
6. В ответ на запрос отобразится список запросов для смены кодировки каждой таблицы. Перейдите на вкладку Параметры и галочкой отметьте пункт «Полные тексты». Затем кликните Вперёд
:
7. Скопируйте запросы:
8. Перейдите на вкладку SQL и добавьте запросы в окно запросов MySQL. Затем нажмите Вперёд
:
Готово, вы изменили кодировку во всех таблицах MySQL.
10.3.4 Table Character Set and Collation
Every table has a table character set and a table collation. The CREATE TABLE and ALTER TABLE statements have optional clauses for specifying the table character set and collation:
CREATE TABLE tbl_name ( column_list
) [[DEFAULT] CHARACTER SET charset_name
] [COLLATE collation_name
]]
ALTER TABLE tbl_name [[DEFAULT] CHARACTER SET charset_name
] [COLLATE collation_name
]
CREATE TABLE t1 ( ... )
CHARACTER SET latin1 COLLATE latin1_danish_ci;
If both CHARACTER SET
charset_name
and
COLLATE
collation_name
are
specified, character set
charset_name
and collation
collation_name
are used.
If CHARACTER SET
charset_name
is
specified without COLLATE
, character set
charset_name
and its default
collation are used. To see the default collation for each
character set, use the SHOW CHARACTER
SET
statement or query the
INFORMATION_SCHEMA
CHARACTER_SETS
table.
If COLLATE
collation_name
is
specified without CHARACTER SET
, the
character set associated with
collation_name
and collation
collation_name
are used.
Otherwise (neither CHARACTER SET
nor
COLLATE
is specified), the database
character set and collation are used.
The table character set and collation are used as default values
for column definitions if the column character set and collation
are not specified in individual column definitions. The table
character set and collation are MySQL extensions; there are no
such things in standard SQL.

