Какая разница в схеме VS таблицы VS столбца CHARSET в MySQL? - PullRequest
0 голосов
/ 14 апреля 2020

Какая разница в схеме CHARSET VS таблица CHARSET VS столбец CHARSET в MySQL?

Когда я изменю кодировку своей таблицы на utf8, могу ли я использовать utf8mb4 кодировка в моей колонке?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

При создании таблицы в качестве параметров схемы используются резервная копия набора символов и параметров сортировки.

После создания таблицы теперь она имеет набор символов и параметры сортировки по умолчанию. (Это немного отличается от того, что сказал fancyPants.)

Точно так же, при создании столбца (либо как часть создания таблицы, либо с помощью ALTER .. ADD COLUMN), вы можете явно указать набор символов и параметры сортировки или может наследовать от значений по умолчанию, указанных для таблицы. Опять же, определение столбца теперь заморожено.

Выполнение SHOW CREATE TABLE покажет переопределение или продолжит выходить из неявного наследования. SELECT .. FROM information_schema.columns .. проясняет, что у каждого столбца есть кодировка и сопоставление.

То есть, нет наследования "dynamici c" во время выполнения. Наследование происходит только при создании таблицы или столбца.

Обратите внимание, что у каждой кодировки есть сопоставление по умолчанию. И каждое сопоставление принадлежит определенной кодировке c (см. Первую часть имени сопоставления). Таким образом, указание либо набора символов, либо сопоставления неявно указывает другое.

1 голос
/ 14 апреля 2020

Указание набора символов на уровне базы данных фактически определяет набор символов default для таблиц.

То же самое для таблиц определяет набор символов default для столбцы.

Поскольку вы не можете go двигаться дальше, указание набора символов в столбце определенно будет использовать набор символов для всего, что вы храните в этом столбце.
Когда вы этого не сделаете указать набор символов на уровне столбца, используется набор символов таблицы. И если это не указано, используется набор символов базы данных.

...