在MySQL中创建与另一个表匹配的表?

时间:2012-01-06 16:52:08

标签: mysql

我正在使用MySQL。我有一个名为EMP的表,现在我需要创建一个具有相同模式,相同列和相同约束的表(EMP_TWO)。我怎么能这样做?

5 个答案:

答案 0 :(得分:147)

要基于另一个表结构/约束创建新表,请使用:

CREATE TABLE new_table LIKE old_table;     

要复制数据,请根据需要使用

INSERT INTO new_table SELECT * FROM old_table;  

Create table docs

请注意LIKE选项上的注释:

  

使用LIKE根据另一个的定义创建一个空表   表,包括在中定义的任何列属性和索引   原表:

     

CREATE TABLE new_table LIKE original_table;使用相同的副本创建副本   表格存储格式的版本为原始表格。 SELECT   原始表格上需要特权。

     

LIKE仅适用于基表,不适用于视图。

     

CREATE TABLE ... LIKE不保留任何DATA DIRECTORY或INDEX   为原始表指定的DIRECTORY表选项,或   任何外键定义。

答案 1 :(得分:10)

如果您只想复制Structure,请使用

create table new_tbl like old_tbl;

如果要复制Structure和数据,请使用

create table new_tbl select * from old_tbl;

答案 2 :(得分:3)

在MySQL中创建与另一个表匹配的表? 答:

CREATE TABLE new_table AS SELECT * FROM old_table;

答案 3 :(得分:2)

你为什么不这样去

CREATE TABLE new_table LIKE Select * from Old_Table;   

或者你可以过滤这样的数据

CREATE TABLE new_table LIKE Select column1, column2, column3 from Old_Table where column1 = Value1;   

为了在新表中首先使用相同的约束,您必须创建模式,然后您应该为模式创建创建数据

CREATE TABLE new_table LIKE Some_other_Table;

答案 4 :(得分:0)

仅在 MySQL 命令行 8.0 上使用以下命令会显示以下错误
[mysql> select * into at from af;]

<块引用>

ERROR 1327 (42000):未声明的变量:at

所以只是复制没有数据的确切模式,您可以使用带有类似语句的创建表,如下所示:

<块引用>

像EMP一样创建表EMP_TWO;

并随数据使用复制表:

<块引用>

创建表 EMP_TWO select * from EMP;

只在创建空表后复制表数据:

<块引用>

insert into EMP_TWO select * from EMP;