用于CREATE TABLE ... LIKE根据另一个表的定义创建一个空表,包括原始表中定义的任何列属性和索引:
CREATE TABLE new_tbl LIKE orig_tbl;
副本是使用与原始表相同版本的表存储格式创建的。SELECT原始表需要
该
权限。
LIKE仅适用于基表,不适用于视图。
您不能执行CREATE TABLEor
CREATE TABLE ... LIKEwhile
LOCK TABLES语句生效。
CREATE TABLE ...
LIKE进行与 相同的检查
CREATE TABLE。这意味着如果当前 SQL 模式与创建原始表时有效的模式不同,则表定义可能被认为对新模式无效并导致语句失败。
对于CREATE TABLE ... LIKE,目标表保留从原始表生成的列信息。
对于CREATE TABLE ... LIKE,目标表保留原始表中的表达式默认值。
对于CREATE TABLE ... LIKE,目标表保留CHECK来自原始表的约束,除了生成所有约束名称。
CREATE TABLE ... LIKE不保留为原始表指定的任何
DATA DIRECTORY或INDEX
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;
CREATE TABLE
... LIKE操作将所有
ENGINE_ATTRIBUTE和
SECONDARY_ENGINE_ATTRIBUTE值应用于新表。