首页 > 技术文章 > 15 SELECT INTO和INSERT INTO的用法

yongzhao 2021-05-31 18:46 原文

15.1 SELECT INTO作用

SELECT INTO语句从一个表中复制数据,然后将数据插入到另一个新表中。

 

15.2 SELECT INTO语句

--可以把所有的列都复制到新表中:
SELECT *
INTO newtable[IN externaldb]
FROM table1;
--或者
SELECT coulumn_name(s)
INTO newtable[IN externaldb]
FROM table1;

注意:将使用SELECT语句定义的列名和类型创建新表。可以使用AS子句来应用一个新名称。

 

15.3 SELECT INTO实例

--创建Customers的备份复件
SELECT *
INTO CustomersBackup
FROM Customers;
--只复制一些列插入到新表中
SELECT 姓名,地址
INTO CustomersBackup_1
FROM Customers;
--只复制广东省的客户插入到新表中
SELECT *
INTO CustomerBackup_2
FROM Customers WHERE 省份='广东省';
--复制多个表中的数据插入到新表中
SELECT c.姓名,o.订单 AS ID
INTO CustomerOrderBackup
FROM Customers AS c
LEFT JOIN Orders AS o
ON c.客户ID=o.客户 ID;

注意:SELECT INTO语句可以用于在另一种模式下创建一个新的空表,即只有表结构,没有数据。只需添加WHERE子句,使查询返回时没有数据:

SELECT *
INTO newtable
FROM table1
WHERE 1=0;

 

15.4 INSERT INTO SELECT作用

INSERT INTO SELECT语句从表中复制数据,并将数据插入现有的表中。目标表中的任何现有行都不会受到影响。

 

15.5 INSERT INTO SELECT语法

--可以将所有列从一个表中复制到另一个已经存在的表中
INSERT INTO table2
SELECT * FROM table1;
--或者
--把想要的列复制到另一个现有的表中
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

 

15.6 INSERT INTO SELECT实例

--把“Suppliers”一栏复制到“Customers”一栏
INSERT INTO Customers(姓名,省份)
SELECT 供应商名称,省份
FROM Suppliers; 
--只将上海供应商的副本插入“Customers”
INSERT INTO Customers(姓名,省份)
SELECT 供应商名称,省份
FROM Suppliers
WHERE 省份='上海市'; 

 

推荐阅读