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
ステートメントで指定された行形式が表示されます。