MySQL 9.0 發行說明
SHOW CREATE TABLE tbl_name
顯示建立指定資料表的 CREATE TABLE
陳述式。要使用此陳述式,您必須擁有該資料表的某些權限。此陳述式也適用於檢視表。
mysql> SHOW CREATE TABLE t\G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
`id` int NOT NULL AUTO_INCREMENT,
`s` char(60) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
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 DEFAULT NULL,
`i2` int 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
選項的值,引用資料表和欄名稱。請參閱 第 7.1.8 節,「伺服器系統變數」。
當變更資料表的儲存引擎時,不適用於新儲存引擎的資料表選項會保留在資料表定義中,以便在必要時將資料表還原為具有先前定義選項的原始儲存引擎。例如,當將儲存引擎從 InnoDB
變更為 MyISAM
時,InnoDB
特有的選項(例如 ROW_FORMAT=COMPACT
)會被保留,如下所示:
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
當在停用嚴格模式的情況下建立資料表時,如果指定的列格式不受支援,則會使用儲存引擎的預設列格式。資料表的實際列格式會在回應 SHOW TABLE STATUS
時的 Row_format
欄位中回報。SHOW CREATE TABLE
會顯示在 CREATE TABLE
陳述式中指定的列格式。
SHOW CREATE TABLE
也會預設包含資料表的產生隱形主鍵的定義(如果有的話)。您可以透過設定 show_gipk_in_create_table_and_information_schema = OFF
來在陳述式的輸出中隱藏此資訊。有關更多資訊,請參閱第 15.1.20.11 節,「產生的隱形主鍵」。