web-dev-qa-db-ja.com

明示的なデフォルトの文字セットで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のドキュメントで何も見つかりませんでした。

23
DanInDC

Word DEFAULTはオプションです。つまり、2つは同等です。つまり、テーブルのデフォルトの文字セットを設定します。

MySQLのドキュメントで CREATE TABLE を参照してください。ここに関連するビットがあります:

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

SHOW CREATE TABLE コマンドを使用してこれを確認できます。

28
martin clayton

MySQLのデフォルト設定には、サーバー、データベース、テーブル、カラムの4つのレベルがあります。より低いレベルのデフォルトを使用すると、より高いレバーのデフォルトをオーバーライドできます。

デフォルトの文字セットがデータベースで設定されているもの以外に設定されているテーブルを変更すると、テーブルのデフォルトがデータベースのデフォルトを上書きします。

14
code_burgar