Создание таблицы 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 уровня настроек по умолчанию: сервер, база данных, таблица и столбец. Используя значения по умолчанию нижнего уровня, вы можете переопределить значения по умолчанию более высокого уровня.

Если вы измените таблицу, которая имеет набор символов по умолчанию для чего-то другого, кроме того, что задана базой данных, значение по умолчанию для таблицы будет отменено по умолчанию.