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

SELECT INTO 與 INSERT INTO SELECT:資料表複製兩大語法實戰

     編輯:關於SqlServer

在開發測試階段,常需將資料從一個資料表複製到另一個資料表。T-SQL 提供兩種核心語法,適用場景截然不同:

1. INSERT INTO SELECT —— 目標表已存在

INSERT INTO Table2 (col1, col2, ...)
SELECT col1, col2, ... FROM Table1;
  • 目標表 Table2 必須預先建立
  • 可同時插入來源表欄位與常數值
  • 適合「定期同步」、「資料遷移至固定結構表」等場景

完整範例

-- 建立測試表
CREATE TABLE Table1 (a VARCHAR(10), b VARCHAR(10), c VARCHAR(10), PRIMARY KEY (a));
CREATE TABLE Table2 (a VARCHAR(10), c VARCHAR(10), d INT, PRIMARY KEY (a));

-- 插入測試資料
INSERT INTO Table1 VALUES ('趙','asds','90'), ('錢','asds','100'), ('孫','asds','80'), ('李','asds',NULL);

-- 複製並帶入常數 5
INSERT INTO Table2 (a, c, d) SELECT a, c, 5 FROM Table1;

-- 驗證結果
SELECT * FROM Table2;

2. SELECT INTO —— 目標表不存在,自動建立

SELECT col1, col2, ... INTO Table2 FROM Table1;
  • 目標表 Table2 必須不存在,語句執行時自動建立結構並複製資料
  • 無法指定常數值、索引、主鍵等結構屬性
  • 適合「臨時備份」、「建立測試資料集」、「快速複製結構與資料」

完整範例

-- 建立來源表與資料(同上)
-- 自動建立 Table2 並複製 a、c 兩欄
SELECT a, c INTO Table2 FROM Table1;

-- 驗證
SELECT * FROM Table2;

選擇建議

需求推薦語法
目標表已存在、需保留索引/主鍵INSERT INTO SELECT
需插入常數或衍生欄位INSERT INTO SELECT
快速建立備份表、結構與資料一次完成SELECT INTO
臨時分析、一次性查詢結果落地SELECT INTO
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved