简介

将查询语句查询的结果集作为数据插入到数据表中。

一、通过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

SELECT查询结果集INSERT到数据表的更多相关文章

  1. Oracle生成查询包括对应于所有数据表记录语句中指定的字段名

    应用:已知的字段名,表中的所有数据的查询数据库中包含的所有数据表的字段名 操作方法:指定字段名,用户数据库表,它可以执行以下查询 --Oracle生成查询包括对应于所有数据表记录语句中指定的字段名 d ...

  2. CASE函数 sql server——分组查询(方法和思想) ref和out 一般处理程序结合反射技术统一执行客户端请求 遍历查询结果集,update数据 HBuilder设置APP状态栏

    CASE函数   作用: 可以将查询结果集的某一列的字段值进行替换 它可以生成一个新列 相当于switch...case和 if..else 使用语法: case 表达式/字段 when 值 then ...

  3. 循环select查询结果集

    --标记id --每次查询特定列比标记id大的第一条数据, --同时更新标记id,直到查询结果为空 ) set @id='' begin @id=id from T_SGZ where id>@ ...

  4. PL/SQL 查询结果集直接修改数据

    使用t.rowid,查询可以直接在查询结果中修改提交 SELECT t.rowid,t.* from  UC_ROLE t where ROLE_NAME like '% %'

  5. 【MySQL】 查询某个数据库有多少张数据表

    SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = 'performanc ...

  6. 遍历查询结果集,update数据

    select NULL mykey, * into #mytemp from dbo.DIM_DISTRIBUTOR declare @i int begin ) print @i )) where ...

  7. create table 使用select查询语句创建表的方法分享

    转自:http://www.maomao365.com/?p=6642 摘要:下文讲述使用select查询语句建立新的数据表的方法分享 ---1 mysql create table `新数据表名` ...

  8. MySQL数据表查询操作

    准语法结构:编写DQL时一定要严格按照此语法的顺序来实现!/* SELECT [ALL | DISTINCT] ALL表示查询出所有的内容 DISTINCT 去重 {* | 表名.* | 表名.字段名 ...

  9. MySQL数据表查询操

    准语法结构:编写DQL时一定要严格按照此语法的顺序来实现!/* SELECT [ALL | DISTINCT] ALL表示查询出所有的内容 DISTINCT 去重 {* | 表名.* | 表名.字段名 ...

随机推荐

  1. Java之建造者模式(Builder Pattern)(转)

    1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者 ...

  2. MYSQL中常用的强制性操作(例如强制索引)

    mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的 ...

  3. NHibernate 有好几种数据库查询方式

    NHibernate 有好几种数据库查询方式 1.原生SQL var employeeQuery = Database.Session .CreateSQLQuery("select * f ...

  4. 微信小程序开发语言的选择

    微信使用的开发语言和文件很「特殊」. 小程序所使用的程序文件类型大致分为以下几种: ①WXML(WeiXin Mark Language,微信标记语言) ②WXSS(WeiXin Style Shee ...

  5. k8s服务网关ambassador部署

    1.ambassador是datawire开源的服务网关,很好的支持kubernetes.具体详细介绍参考官网:https://www.getambassador.io/about/why-ambas ...

  6. Spring中通配符问题

    一.加载路径中的通配符 (1)?(匹配单个字符) (2)*(匹配除/外任意字符) (3)**/(匹配任意多个目录) 示例: (1)classpath:app-Beans.xml 说明:无通配符,必须完 ...

  7. SpringMVC源码阅读系列汇总

    1.前言 1.1 导入 SpringMVC是基于Servlet和Spring框架设计的Web框架,做JavaWeb的同学应该都知道 本文基于Spring4.3.7源码分析,(不要被图片欺骗了,手动滑稽 ...

  8. [转]Build beautiful, responsive sites with Bootstrap and ASP.NET Core

    本文转自:https://docs.microsoft.com/en-us/aspnet/core/client-side/bootstrap?view=aspnetcore-2.1 Bootstra ...

  9. .net 多线程的使用(Thread)

    上篇 net 同步异步 中篇 多线程的使用(Thread) 下篇 net 任务工厂实现异步多线程 Thread多线程概述 上一篇我们介绍了net 的同步与异步,我们异步演示的时候使用的是委托多线程来实 ...

  10. Eclipse启动tomcat后404错误

    题描述 在eclipse部署web项目后,发现tomcat可以启动,但是访问http://localhost:8080地址报404错误.而不使用eclipse启动tomcat,直接通过通过tomcat ...