简介数据库
将查询语句查询的结果集做为数据插入到数据表中。数据结构
1、经过INSERT SELECT语句形式向表中添加数据spa
例如,建立一张新表AddressList来存储班级学生的通信录信息,而后这些信息刚好存在学生表中,则能够从学生表中提取相关的数据插入建好的AddressList表中。code
T-SQL语句以下:blog
insert into AddressList(姓名,地址,邮箱) select name,address,email from Students
语法快记:该语句和常规的插入语句语法很类似,为了更好的记住语法,便可理解此插入语句把values替换成了查询语句。io
使用该语句插入数据的注意事项:class
1.查询语句部分其中列的个数、顺序、数据类型必须与INSERT语句的指定列要保持一致,列名能够不相同。email
2.INSERT语句插入数据的表必须是预先建立好的。List
INSERT SELECT语句形式中的查询部分不只能够是单表,能够支持不一样形式的查询语句,只要保证查询结果集的列和要插入数据的列是匹配的便可。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
2、经过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