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;
