首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

善用 SELECT INTO 快速複製資料表結構

     編輯:DB2 教學

前言

在 SQL Server 環境下,若需複製資料表結構但不複製資料,許多開發者習慣透過 Enterprise Manager 圖形介面操作,步驟繁瑣。其實只要一行 SELECT INTO 敘述即可輕鬆完成,本文說明其用法與注意事項。

核心語法

SELECT * INTO NewTable FROM SourceTable WHERE 1 = 0

運作原理

  • WHERE 1 = 0 條件永遠為假,查詢結果為 0 筆資料。
  • SELECT INTO 會根據查詢結果的欄位定義,自動建立 NewTable 並複製欄位名稱、資料類型、可空性等結構屬性。
  • 由於無資料列,新資料表為空表,僅保留結構定義。

前置條件

資料庫必須啟用 SELECT INTO 功能,執行以下指令設定:

EXEC sp_dboption 'DatabaseName', 'select into/bulkcopy', 'true'

或在 SSMS 中:資料庫屬性 → 選項 → 允許 SELECT INTO/大量複製 = True。

實務範例

-- 將 Orders 表結構複製為 OrderHistory
SELECT * INTO OrderHistory FROM Orders WHERE 1 = 0;

優缺點比較

方法優點缺點
SELECT INTO語法簡潔、速度快、無需手動定義欄位不複製索引、主鍵、限制條件、觸發器、權限等
圖形介面/腳本產生可完整複製所有物件屬性步驟多、易出錯
手寫 CREATE TABLE完全掌控耗時、維護成本高

補充說明

  • 若需同時複製資料,移除 WHERE 條件即可:SELECT * INTO NewTable FROM SourceTable。
  • 新資料表的身分識別欄位(IDENTITY)屬性會被保留。
  • 此技巧適用於 SQL Server、Sybase、PostgreSQL 等支援 SELECT INTO 的資料庫;Oracle 需使用 CREATE TABLE AS SELECT。

結語

SELECT INTO ... WHERE 1=0 是 DBA 與開發人員快速複製表結構的利器,配合啟用選項,能大幅簡化開發與測試環境建置流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved