Создание таблицы mysql с явным набором символов по умолчанию, что, если я этого не сделаю?
В 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.
Ответы
Ответ 1
Слово DEFAULT
не является обязательным, поэтому два эквивалентны, т.е. устанавливают набор символов по умолчанию для таблицы.
См. документацию по MySQL для CREATE TABLE. Здесь соответствующий бит:
table_option:
ENGINE [=] engine_name
... other options ...
| [DEFAULT] CHARACTER SET [=] charset_name
... more options ...
Вы можете подтвердить это, используя команду SHOW CREATE TABLE.
Ответ 2
В MySQL существует 4 уровня настроек по умолчанию: сервер, база данных, таблица и столбец. Используя значения по умолчанию нижнего уровня, вы можете переопределить значения по умолчанию более высокого уровня.
Если вы измените таблицу, которая имеет набор символов по умолчанию для чего-то другого, кроме того, что задана базой данных, значение по умолчанию для таблицы будет отменено по умолчанию.