2009-12-02 65 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