Создание таблицы mysql с явным набором символов по умолчанию, что если я не сделаю? - PullRequest
20 голосов
/ 26 января 2010

В 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.

Ответы [ 2 ]

26 голосов
/ 26 января 2010

Слово DEFAULT здесь необязательно, поэтому они эквивалентны, т. Е. Они устанавливают набор символов по умолчанию для таблицы.

См. Документацию MySQL для CREATE TABLE . Вот соответствующий бит:

table_option:
    ENGINE [=] engine_name
  ... other options ...
  | [DEFAULT] CHARACTER SET [=] charset_name
  ... more options ...

Вы можете подтвердить это с помощью команды SHOW CREATE TABLE .

12 голосов
/ 26 января 2010

В MySQL есть четыре уровня настроек по умолчанию: сервер, база данных, таблица и столбец. Используя значения по умолчанию для более низкого уровня, вы можете переопределить значения по умолчанию для более высоких рычагов.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...