MySQL 8.0 リファレンスマニュアル


13.7.7.10 SHOW CREATE TABLE ステートメント

SHOW CREATE TABLE tbl_name

指定されたテーブルを作成する CREATE TABLE ステートメントを表示します。 このステートメントを使用するには、そのテーブルに対する何らかの権限が必要です。 また、このステートメントはビューでも機能します。

mysql> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
       Table: t
Create Table: CREATE TABLE `t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `s` char(60) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

MySQL 8.0.16 では、MySQL によって CHECK 制約が実装され、SHOW CREATE TABLE によって表示されます。 すべての CHECK 制約がテーブル制約として表示されます。 つまり、カラム定義の一部として最初に指定された CHECK 制約は、カラム定義の一部ではなく別の句として表示されます。 例:

mysql> CREATE TABLE t1 (
         i1 INT CHECK (i1 <> 0),      -- column constraint
         i2 INT,
         CHECK (i2 > i1),             -- table constraint
         CHECK (i2 <> 0) NOT ENFORCED -- table constraint, not enforced
       );

mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `i1` int(11) DEFAULT NULL,
  `i2` int(11) DEFAULT NULL,
  CONSTRAINT `t1_chk_1` CHECK ((`i1` <> 0)),
  CONSTRAINT `t1_chk_2` CHECK ((`i2` > `i1`)),
  CONSTRAINT `t1_chk_3` CHECK ((`i2` <> 0)) /*!80016 NOT ENFORCED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

SHOW CREATE TABLE は、sql_quote_show_create オプションの値に従って、テーブル名とカラム名を引用符で囲みます。 セクション5.1.8「サーバーシステム変数」を参照してください。

テーブルのストレージエンジンを変更する場合、新しいストレージエンジンに適用できないテーブルオプションはテーブル定義に保持され、必要に応じて、以前に定義されたオプションを持つテーブルを元のストレージエンジンに戻すことができます。 たとえば、ストレージエンジンを InnoDB から MyISAM に変更する場合、ROW_FORMAT=COMPACT などの InnoDB 固有のオプションは保持されます。

mysql> CREATE TABLE t1 (c1 INT PRIMARY KEY) ROW_FORMAT=COMPACT ENGINE=InnoDB;
mysql> ALTER TABLE t1 ENGINE=MyISAM;
mysql> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `c1` int NOT NULL,
  PRIMARY KEY (`c1`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=COMPACT

strict mode を無効にしてテーブルを作成する場合、指定した行フォーマットがサポートされていないと、ストレージエンジンのデフォルトの行フォーマットが使用されます。 テーブルの実際の行形式は、SHOW TABLE STATUS に応じて Row_format カラムにレポートされます。 SHOW CREATE TABLE には、CREATE TABLE ステートメントで指定された行形式が表示されます。


関連キーワード:  ステートメント, CREATE, TABLE, DROP, テーブル, CHECK, サブクエリー, FUNCTION, 制約, SLAVE