CREATE TABLE ... LIKE语句
用于CREATE TABLE ... LIKE
根据另一个表的定义创建一个空表,包括在原始表中定义的任何列属性和索引:
CREATE TABLE new_tbl LIKE orig_tbl;
使用与原始表相同的表存储格式版本创建副本。该SELECT
权限需要对原始表。
LIKE
仅适用于基表,不适用于视图。
重要您无法执行
CREATE TABLE
或CREATE TABLE ... LIKE
在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_tblSELECT *FROM orig_tblLIMIT 0;