2010-07-13 32 views

回答

38

右鍵單擊SQL Management Studio中的表。

選擇腳本...創建到...新的查詢窗口。

這將生成一個腳本來在新的查詢窗口中重新創建表格。

將腳本中表的名稱更改爲想要命名新表的任何內容。

執行腳本。

+2

可笑,即使在2012年!感謝Avalanchis! – Bojangles 2015-07-07 07:26:32

22
SELECT * 
INTO target 
FROM source 
WHERE 1 = 2 
+6

這隻會捕獲一些結構。相同的列名稱,數據類型和可爲空的設置。但其他一切都會被拋在後面。在我留下的頭頂留下的東西將包括PK,英國,FK和檢查約束,身份屬性和計算列。這取決於OP需要多少結構來滿足OP的需求。 – 2010-07-13 23:17:44

+0

where子句是可選的。 – Dhinakar 2013-03-16 04:07:28

+0

爲什麼'1 = 2'?這永遠是假的嗎? – 2014-07-14 23:48:02

-2

我的SQL Server Management Studio不斷問我如何讓它變得更好,我有一個主意!突出顯示錶格的能力,然後按ctrl c,ctrl V!會很好,同時也是這個問題的答案!

+0

您是否正在通過發明一項新功能來回答問題,並表示會解決問題? – Yunnosch 2017-05-26 06:23:22

1

對於從一個表從現有表創建一個新的表

SELECT * INTO NEW_TABLE FROM OLD_TABLE

插入數據的另一個表

插入Table_Name2選擇頂部1 *從Table_Name1

+0

歡迎來到StackOverflow並感謝您的幫助。請解釋你的答案的主要觀點,代碼只是沒有那麼有用。特別是,有一個與您的答案几乎完全相同的答案。它只是避免複製內容。不做複製價值似乎是OP期望的行爲的一部分。你能解釋你的理由嗎? – Yunnosch 2017-05-26 06:27:03

2

在這裏,我會告訴你2個不同的實現:

第一個:

如果你只需要創建一個重複表,然後只需運行命令:

SELECT top 0 * INTO [dbo].[DuplicateTable] 
FROM [dbo].[MainTable] 

當然,它完全不起作用。約束不會被複制,也不會執行主鍵或默認值。該命令僅創建一個具有相同列結構的新表,並且您要將數據插入到新表中。

二(推薦):

,但如果你要複製的表的所有約束&鍵遵循以下步驟如下:

  1. 打開在SQL Management Studio中的數據庫。
  2. 右鍵單擊要複製的表格。
  3. 選擇腳本表爲 - >創建到 - >新建查詢編輯器窗口。這將生成一個腳本來在新的查詢窗口中重新創建表。
  4. 在腳本中更改表名和相對密鑰&約束。
  5. 執行腳本。
0
SELECT * INTO newtable FROM oldtable where 1=2 


    where 1=2, this statement is use when only Copy complete structure of a 
    table in sql without Copying data of table 

SELECT * INTO newtable FROM oldtable 
create table with data you can use this statement 
相關問題