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则是插入语句的另外的一种写法,可以直接将查询的结果插入到需要的表中,从而省去逐条手工插入数据的过程。
最新文章
- java多线程-读写锁
- Android显示等宽图片的问题
- 【WEB API项目实战干货系列】- 接口文档与在线测试(二)
- 线性判别分析(Linear Discriminant Analysis)转载
- 基于BaseAdapter的GridView设置ImageView大小
- 64bit Ubuntu, Android AAPT, R.java
- Linq 内联左联等
- MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库【转载】
- 用html+css+js做打地鼠小游戏
- git使用教程之了解git
- YII2 用 in查询的时候出现无结果, 删除某些值后查询有结果 提前sort数组即可
- ubuntu10.04 32 编译android源码的问题
- Java匹马行天下——开篇
- 【CSS】元素样式
- IAR中的 identifier ";FILE"; is undefined 问题
- 订单状态 Mark
- python中如何使输出不换行
- Android获取程序路径 (/data/data/appname)
- HTTP头的Expires与Cache-control区别
- ubuntu14.04 64 位 vmware tools 问题