В mysql 5.x, Что является различием, если я делаю что-то вроде этого:
CREATE TABLE aTable (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
aNumber bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
с этим:
CREATE TABLE aTable (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
aNumber bigint(20) DEFAULT NULL
) ENGINE=InnoDB CHARACTER SET=utf8;
Заметьте, что я не указываю набор символов как значение по умолчанию в первом. Я ничего не мог найти в mysql документах.
Слово по умолчанию
не является обязательным - поэтому два эквивалентны, то есть они устанавливают набор символов по умолчанию для таблицы.
См. Документация MySQL для Таблицы создания . Вот соответствующий бит:
table_option:
ENGINE [=] engine_name
... other options ...
| [DEFAULT] CHARACTER SET [=] charset_name
... more options ...
Вы можете подтвердить это с помощью команды Show Create Table .
Существует 4 уровня настройки по умолчанию в MySQL: сервер, база данных, таблица и столбец. Используя более низкие значения по умолчанию, вы можете переопределить более высокий рычаг по умолчанию.
Если вы измените таблицу, которая имеет Charset по умолчанию, установленным на что-то другое, кроме чего установлена база данных, таблица по умолчанию будет переопределить по умолчанию DB.