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


84

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


1
您是否尝试使用phpMyAdmin之类的内容导出结构,然后仅更改表名?
jprofitt 2012年

Answers:


176

要基于其他表结构/约束创建新表,请使用:

CREATE TABLE new_table LIKE old_table;     

跨数据复制(如果需要),使用

INSERT INTO new_table SELECT * FROM old_table;  

创建表格文档

当心关于LIKE选项的注意事项:

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

CREATE TABLE new_table类似于original_table; 使用与原始表相同的表存储格式版本创建副本。原始表具有SELECT特权。

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

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


6
+1已经使用MySQL多年了,并且完全不知道您可以LIKECREATE语句中使用它。
jprofitt 2012年

@jprofitt我只知道,因为前几天我想这样做以测试生产服务器上的某些内容(重要查询)->非常有用!
Manse 2012年

@ManseUK如果我想从一个数据库复制表并将其重新创建到另一个数据库怎么办?
Yaje 2014年

这很棒!谢谢...确实非常有用!
哈桑2014年

如果某人在另一个数据库中需要相同的表结构,则您需要做的是CREATE TABLE new_db.new_table LIKE old_db.old_table:)
Jimmy Adaro

13

如果只想复制结构,请使用

create table new_tbl like old_tbl;

如果要复制结构以及数据,请使用

create table new_tbl select * from old_tbl;

5

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

CREATE TABLE new_table AS SELECT * FROM old_table;

4

你为什么不这样走

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;

1
是否可以在一个语句中同时使用likeselect *?我出错了。也请检查这个答案stackoverflow.com/questions/10147565/create-table-like-a1-as-a2
chanchal118

我不确定使用mysql
Trikaldarshiii 2014年

sqlserver也有类似的东西,它可以从* <OldTableName>中选择*到<NewTableName>中。
Trikaldarshiii 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.