MySQL 8.4 發行說明
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,“產生的不可見主鍵”。