Следующие примеры показывают, как MySQL определяет заданные по умолчанию набор символов и объединение.
Пример 1: определение таблицы и столбца
CREATE TABLE t1 (c1 CHAR(10) CHARACTER SET latin1 COLLATE latin1_german1_ci)
DEFAULT CHARACTER SET latin2
COLLATE latin2_bin;
Здесь мы имеем столбец с набором символов latin1 и объединением latin1_german1_ci. Определение явно, так что это просто. Обратите внимание, что не имеется никакой проблемы с сохранением столбца latin1 в таблице latin2.
Пример 2: определение таблицы и столбца
CREATE TABLE t1 (c1 CHAR(10) CHARACTER SET latin1)
DEFAULT CHARACTER SET latin1
COLLATE latin1_danish_ci;
На сей раз мы имеем столбец с набором символов latin1 и заданным по умолчанию объединением. Хотя это могло бы показаться естественным, заданное по умолчанию объединение не принимается из уровня таблицы. Вместо этого, поскольку заданное по умолчанию объединение для latin1 обязательно latin1_swedish_ci, столбец c1 имеет объединение latin1_swedish_ci (не latin1_danish_ci).
Пример 3: определение таблицы и столбца
CREATE TABLE t1 (c1 CHAR(10))
DEFAULT CHARACTER SET latin1
COLLATE latin1_danish_ci;
Мы имеем столбец с заданными по умолчанию набором символов и объединением. В этой ситуации MySQL проверяет уровень таблицы, чтобы определить набор символов столбца и объединение. Следовательно, набор символов для столбца c1 latin1 и объединение latin1_danish_ci.
Пример 4: определение базы данных, таблицы и столбца
CREATE DATABASE d1 DEFAULT CHARACTER SET latin2
COLLATE latin2_czech_ci; USE d1;
CREATE TABLE t1 (c1 CHAR(10));
Мы создаем столбец без того, чтобы определить набор символов и объединение. Мы также не определяем набор символов и объединение в уровне таблицы. В этой ситуации MySQL проверяет уровень базы данных, чтобы определить параметры настройки таблицы, которые с этого времени станут параметрами настройки столбца. Следовательно, набор символов для столбца c1 latin2 и объединение latin2_czech_ci.