2009-12-02 60 views
94
CREATE TABLE foo SELECT * FROM bar 

抄表foo和重复它作为一个叫巴没有复制数据复制表

我如何foo的模式复制到一个叫巴新表,而不必复制过来的数据作为新表好?

+1

如何在sqlserver 2005中做同样的事情? – Thunder 2011-01-21 04:44:18

+0

从酒吧意味着什么? – 2017-04-24 11:17:43

回答

87

尝试:

CREATE TABLE foo SELECT * FROM bar LIMIT 0 

或者:

CREATE TABLE foo SELECT * FROM bar WHERE 1=0 
+2

我认为第二个例子是通用的方式:-) – Khb 2009-12-02 17:38:04

+0

如何在sqlserver 2005中做同样的事情? – Thunder 2011-01-21 04:45:02

+3

@ Thunder:尝试'从* 1 = 0的栏中选择*进入foo – Andomar 2011-01-21 12:32:54

17
SHOW CREATE TABLE bar; 

你会得到该表的create语句,编辑表的名称,或其他任何你喜欢的,然后执行它。

这将允许您复制索引并手动调整表的创建。

您也可以在程序中运行查询。

+0

如何将'show create table bar'转换为动态可执行语句? – Pacerier 2015-02-02 12:23:29

+0

'show create table bar'给出的结果已经可执行,如果脚本具有创建表的权限,则可以解析它,然后执行alter table语句。 – 2015-02-05 20:38:12

+0

你是先生,是宇宙的主人。谢谢 – bonitzenator 2017-03-14 11:31:18

272

尝试

CREATE TABLE foo LIKE bar; 

所以键和索引复制的,很好。

Documentation

+26

这是一个更好的答案,因为这复制索引以及! – Chaitan 2013-09-28 19:51:41

+1

这是最好的方式!谢啦。 – Aldee 2013-12-15 01:57:28

+1

它好得多,但仍不会复制外键。 – 2014-04-17 11:53:36