#### 13.1.20.3 CREATE TABLE ... LIKE 语句

[](<>)[](<>)

采用`创建表...喜欢`根据另一个表的定义创建一个空表，包括原始表中定义的任何列属性和索引：

```
CREATE TABLE new_tbl LIKE orig_tbl;
```

使用与原始表相同版本的表存储格式创建副本。这[`选择`](privileges-provided.html#priv_select)原始表需要特权。

`喜欢`仅适用于基表，不适用于视图。

重要的

你不能执行`创建表`要么`创建表...喜欢`而一个[`锁定表`](lock-tables.html)声明生效。

[`创建表...喜欢`](create-table.html)进行相同的检查[`创建表`](create-table.html).这意味着如果当前 SQL 模式与创建原始表时生效的模式不同，则表定义可能被认为对新模式无效并导致语句失败。

为了`创建表...喜欢`，目标表保留从原始表生成的列信息。

为了`创建表...喜欢`，目标表保留原始表中的表达式默认值。

为了`创建表...喜欢`，目标表保留`查看`来自原始表的约束，除了生成所有约束名称。

`创建表...喜欢`不保留任何`数据目录`要么`索引目录`为原始表指定的表选项或任何外键定义。

如果原始表是`暂时的`桌子，`创建表...喜欢`不保存`暂时的`.创建一个`暂时的`目标表，使用`创建临时表...喜欢`.

中创建的表`mysql`表空间`InnoDB`系统表空间 (`innodb_system`)，或者一般表空间包括`表空间`表定义中的属性，它定义了表所在的表空间。由于暂时的回归，`创建表...喜欢`保留`表空间`属性并在定义的表空间中创建表，而不管[`innodb_file_per_table`](innodb-parameters.html#sysvar_innodb_file_per_table)环境。为了避免`表空间`根据此类表的定义创建空表时的属性，请改用以下语法：

```
CREATE TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0;
```

[`创建表...喜欢`](create-table-like.html)操作适用于所有`引擎属性`和`SECONDARY_ENGINE_ATTRIBUTE`新表的值。
