文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF(美国信纸) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  SHOW CREATE TABLE 语句

15.7.7.11 SHOW CREATE TABLE 语句

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 节,“生成的不可见主键”