Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  SHOW CREATE TABLE Statement

15.7.7.11 显示创建表语句

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节,“服务器系统变量”

当更改表的存储引擎时,存储引擎不适用于的表选项将保留在表定义中,以便在必要时将表 revert 到原来的存储引擎和选项。例如,当从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 STATUSRow_format列中报告。 SHOW CREATE TABLE显示了在CREATE TABLE语句中指定的行格式。

SHOW CREATE TABLE还包括表的生成不可见主键的定义,如果该表具有这样的键。您可以通过设置show_gipk_in_create_table_and_information_schema = OFF来抑制该信息在语句的输出中。更多信息,请见第15.1.20.11节,“生成不可见主键”