Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  CREATE TABLE ... LIKE Statement

15.1.20.3 创建表 ... LIKE 语句

使用 CREATE TABLE ... LIKE 创建一个基于另一个表的空表,包括原始表中的所有列属性和索引:

CREATE TABLE new_tbl LIKE orig_tbl;

副本使用与原始表相同的表存储格式版本。需要在原始表上拥有 SELECT 权限。

LIKE 只适用于基本表,不适用于视图。

Important

您不能在 LOCK TABLES 语句生效时执行 CREATE TABLECREATE TABLE ... LIKE

CREATE TABLE ... LIKE 执行与 CREATE TABLE 相同的检查。这意味着,如果当前 SQL 模式不同于原始表创建时的模式,表定义可能会被认为无效并导致语句失败。

对于 CREATE TABLE ... LIKE,目标表保留原始表中的生成列信息。

对于 CREATE TABLE ... LIKE,目标表保留原始表中的默认表达式值。

对于 CREATE TABLE ... LIKE,目标表保留原始表中的 CHECK 约束,除了所有约束名称都是生成的。

CREATE TABLE ... LIKE 不保留原始表中的任何 DATA DIRECTORYINDEX DIRECTORY 表选项,也不保留任何外键定义。

如果原始表是一个 TEMPORARY 表,CREATE TABLE ... LIKE 不保留 TEMPORARY。要创建一个 TEMPORARY 目标表,请使用 CREATE TEMPORARY TABLE ... LIKE

mysql 表空间、InnoDB 系统表空间 (innodb_system) 或通用表空间中创建的表包括一个 TABLESPACE 属性,该属性定义了表所在的表空间。由于临时回归,CREATE TABLE ... LIKE 保留 TABLESPACE 属性,并在定义的表空间中创建表,而不管 innodb_file_per_table 设置如何。要避免在创建基于另一个表定义的空表时的 TABLESPACE 属性,请使用以下语法:

CREATE TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0;

创建表 ... LIKE 操作将所有 ENGINE_ATTRIBUTESECONDARY_ENGINE_ATTRIBUTE 值应用于新表。