通常我们使用INSERT命令向表中插入行,而有时用户需要根据已有表和视图的记录,讲其中特定的数据添加到目标表中,这是可以使用
INSERT...SELECT语句来实现。该语句实际上包含两个部分:INSERT(插入语句)和SELECT(查询语句),其语法可表示如下:
Insert into Table2(field1,field2,...)
select value1,value2,... from Table1
这样,通过INSERT...SELECT语句一次性向目标表中插入大量数据。另外,使用该语句时,需要注意一下几点:
INSERT语句不能从正在被插入的表和视图中选择数据。
在INSERT INTO语句红,列的数目必须等于从SELECT语句返回列的数目。
在INSERT INTO语句中,列的数据类型必须与SELECT语句返回列的数据类型相同。
T-SQL中相同效果的语法如下:SELECT vale1, value2 into Table2 from
Table1。
INSERT...SELECT语句通常用来创建一个查找表,已提高检索性能。查找表可以包含分布在多个数据库的多个表中的数据。因为多个表连接起来比简单茶韵要慢,对一个表执行SELECT查询,则明显快于执行又长又复杂的连接查询。
16使用子查询插入数据信息
使用子查询插入数据信息实际上是insert into…select 语句,并将子查询放置在查询条件中。
16使用子查询插入数据信息实例
样例数据:
要求:将在表4中有成绩的同学的序号、班级和年龄备份到新表中。
create table 备份表3
(序号 int,
班级 int null,
年龄 int null)
insert into 备份表3
select 序号,班级,年龄 from Table_5 as T
where EXISTS(select 序号 from Table_4 where 序号=T.序号)
order by 序号
select * from 备份表3
执行结果: