原文链接

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则是插入语句的另外的一种写法,可以直接将查询的结果插入到需要的表中,从而省去逐条手工插入数据的过程。

最新文章

  1. java多线程-读写锁
  2. Android显示等宽图片的问题
  3. 【WEB API项目实战干货系列】- 接口文档与在线测试(二)
  4. 线性判别分析(Linear Discriminant Analysis)转载
  5. 基于BaseAdapter的GridView设置ImageView大小
  6. 64bit Ubuntu, Android AAPT, R.java
  7. Linq 内联左联等
  8. MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库【转载】
  9. 用html+css+js做打地鼠小游戏
  10. git使用教程之了解git
  11. YII2 用 in查询的时候出现无结果, 删除某些值后查询有结果 提前sort数组即可
  12. ubuntu10.04 32 编译android源码的问题
  13. Java匹马行天下——开篇
  14. 【CSS】元素样式
  15. IAR中的 identifier "FILE" is undefined 问题
  16. 订单状态 Mark
  17. python中如何使输出不换行
  18. Android获取程序路径 (/data/data/appname)
  19. HTTP头的Expires与Cache-control区别
  20. ubuntu14.04 64 位 vmware tools 问题

热门文章

  1. Class.ForName()读取配置文件
  2. WPF清爽酷炫的界面Mahapps.metro
  3. ansible安装、配置ssh、hosts、测试连接
  4. 纯css实现表单输入验证
  5. Packages window(包窗口)
  6. redis分布式锁,面试官请随便问,我都会
  7. python3 安装pip提示没有distutils.util模块错误的解决
  8. beego conf配置文件
  9. Vue的作用域插槽
  10. CentOS7.1 VNC Server服务配置