簡介 將查詢語句查詢的結果集作為數據插入到數據表中。 一、通過INSERT SELECT語句形式向表中添加數據 例如,創建一張新表AddressList來存儲班級學生的通訊錄信息,然後這些信息恰好存在學生表中,則可以從學生表中提取相關的數據插入建好的AddressList表中。 T-SQL語句如下: ...
簡介
將查詢語句查詢的結果集作為數據插入到數據表中。
一、通過INSERT SELECT語句形式向表中添加數據
例如,創建一張新表AddressList來存儲班級學生的通訊錄信息,然後這些信息恰好存在學生表中,則可以從學生表中提取相關的數據插入建好的AddressList表中。
T-SQL語句如下:
insert into AddressList(姓名,地址,郵箱)
select name,address,email
from Students
語法快記:該語句和常規的插入語句語法很相似,為了更好的記住語法,即可理解此插入語句把values替換成了查詢語句。
使用該語句插入數據的註意事項:
1.查詢語句部分其中列的個數、順序、數據類型必須與INSERT語句的指定列要保持一致,列名可以不相同。
2.INSERT語句插入數據的表必須是預先創建好的。
INSERT SELECT語句形式中的查詢部分不僅可以是單表,可以支持不同形式的查詢語句,只要保證查詢結果集的列和要插入數據的列是匹配的即可。
1.聯接查詢作為數據
insert into AddressList (name,address) select a.UserName,b.address from SYSTEM_Users a inner join BASE_Customer b on a.code=b.code
2.UNION合併多個結果集作為數據
insert into AddressList(name,address) select '張三','洛杉磯' union select '李四','舊金山' union select '王五','華盛頓'
3.數據來自其他資料庫(跨資料庫插入)
insert into StudentInfo(name) select lxr FROM AgroDB.dbo.BASE_Customer
二、通過SELECT INTO語句形式將查詢結果集的數據添加到新數據表
SELECT INTO語句形式的插入方式和INSERT INTO 語句形式插入方式有相同處和不同處。
相同:它們插入的數據都是來自SELECT查詢結果集
不同:INSERT INTO 語句形式插入的數據表必須是預先創建,SELECT INTO語句形式的插入的數據表是在執行該語句時新創建的。
T-SQL語句如下:
select name,address,email into AddressList from Students
語法快記:整體結構就是查詢語句的結構,即在from關鍵字之上指派了INTO關鍵字加新數據表名。
語句執行邏輯:
1.創建新數據表,新表的數據結構來自於查詢語句指定的列。
2.將查詢結果集的信息插入到新表中,只會插入SELECT 中指派的列,列可以指定部分也可以全部。
SELECT INTO語句形式會執行插入數據和創建表兩種命令,這樣會延伸到一個新問題:如何給新表中指定一個標識列?
因為標識列的數據是自增的,因此我們可以在SELECT INTO語句中加入標識列的創建,語法如下:
select IDENTITY(int,1,1) as Aid ,Students.name,Students.address,Students.email
into AddressList
from Students