SQL學習——SELECT INTO和INSERT INTO SELECT


 

原文鏈接

SELECT INTO 作用

SELECT INTO 語句從一個表中復制數據,然后將數據插入到另一個新表中。

SELECT INTO 語法

我們可以把所有的列都復制到新表中:

SELECT *
INTO newtable [IN externaldb]
FROM table1;

或者只復制希望的列插入到新表中:

SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;

 

提示:將使用SELECT語句中定義的列名和類型創建新表。您可以使用AS子句來應用一個新名稱。

 

示例數據庫

我們使用"Customers"表來作示例

 

 

 

SELECT INTO 實例

創建 Customers 的備份復件:

SELECT *
INTO CustomersBackup2018
FROM Customers;

可以得到一個和Customers表結構及數據一模一樣的表CustomersBackup2018

 

 

 

下面我們來復制表到另一個數據庫AdventureWorks中,結果與Customers表中的一樣。

SELECT *
INTO AdventureWorks.dbo.CustomersBackup2018
FROM Customers;

如下就是AdventureWorks數據庫中剛復制過來的表CustomersBackup2018 

 

 

 

只復制一些列插入到新表中:

SELECT 姓名, 地址
INTO CustomersBackup2018_1
FROM Customers;

CustomersBackup2018_1表中的結果:

 

 

 

只復制廣東省的客戶插入到新表中:

SELECT *
INTO CustomersBackup2018_2
FROM Customers
WHERE 省份='廣東省';

CustomersBackup2018_2中的數據如下:

 

 

 

復制多個表中的數據插入到新表中:

SELECT c.姓名, o.訂單ID
INTO CustomersOrderBackup2018
FROM Customers c
LEFT JOIN Orders o
ON c.客戶ID=o.客戶ID;

CustomersOrderBackup2018表中的數據如下:

 

 

 

提示:SELECT INTO 語句可以用於在另一種模式下創建一個新的空表,即只有表結構,沒有數據。只需添加WHERE子句,使查詢返回時沒有數據:

SELECT *
INTO newtable
FROM table1
WHERE 1=0;

 

INSERT INTO SELECT 作用

INSERT INTO SELECT 語句從表中復制數據,並將數據插入現有的表中。目標表中的任何現有行都不會受到影響。

 

INSERT INTO SELECT 語法

我們可以將所有列從一個表中復制到另一個已經存在的表中:

INSERT INTO table2
SELECT * FROM table1;

或者我們可以把想要的列復制到另一個現有的表中:

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

 

示例數據庫

以下是"Customers"表中的數據:

選自 "Suppliers" 表的數據:

 

 

 

INSERT INTO SELECT 實例

把 "Suppliers" 一欄復制到 "Customers" 一欄:

實例

INSERT INTO Customers (姓名, 省份)
SELECT 供應商名稱, 省份 FROM Suppliers;

結果如下:

 

 

 

只將上海供應商的副本插入 "Customers" :

實例

INSERT INTO Customers (姓名, 省份)
SELECT 供應商名稱, 省份 FROM Suppliers
WHERE 省份='上海市';

結果如下:

 

批注

SELECT INTO 用來復制表和表結構是非常方便的,特別是在進行表之間計算時,可以將部分數據先插入到一個臨時表中,計算完成再刪除該臨時表。INSERT INTO SELECT則是插入語句的另外的一種寫法,可以直接將查詢的結果插入到需要的表中,從而省去逐條手工插入數據的過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM