#### 13.7.7.10 SHOW CREATE TABLE 语句

[](<>)

```
SHOW CREATE TABLE tbl_name
```

显示[`创建表`](create-table.html)创建命名表的语句。要使用此语句，您必须对表具有某些特权。该语句也适用于视图。

```
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 实现`查看`约束和[`显示创建表`](show-create-table.html)显示它们。全部`查看`约束显示为表约束。这是一个`查看`最初指定为列定义的一部分的约束显示为单独的子句，而不是列定义的一部分。例子：

```
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.html)根据值引用表和列名[`sql_quote_show_create`](server-system-variables.html#sysvar_sql_quote_show_create)选项。看[第 5.1.8 节，“服务器系统变量”](server-system-variables.html).

更改表的存储引擎时，不适用于新存储引擎的表选项将保留在表定义中，以便在必要时将具有先前定义的选项的表恢复为原始存储引擎。例如，当将存储引擎从 InnoDB 更改为 MyISAM 时，InnoDB 特定的选项，例如`ROW_FORMAT=紧凑`被保留。

```
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
```

当创建一个表时[严格模式](glossary.html#glos_strict_mode)禁用，如果不支持指定的行格式，则使用存储引擎的默认行格式。表格的实际行格式报告在`行格式`列响应[`显示表状态`](show-table-status.html).[`显示创建表`](show-create-table.html)显示在[`创建表`](create-table.html)陈述。
