我正在使用MySQL。我有一个名为EMP的表,现在我需要创建一个具有相同模式,相同列和相同约束的表(EMP_TWO)。我怎么能这样做?
答案 0 :(得分:147)
要基于另一个表结构/约束创建新表,请使用:
CREATE TABLE new_table LIKE old_table;
要复制数据,请根据需要使用
INSERT INTO new_table SELECT * FROM old_table;
请注意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;