目录
一、INSERT 语句中使用 SELECT子句
二、UPDATE 语句中使用 SELECT子句
三、DELETE 语句中使用 SELECT子句
一、INSERT 语句中使用 SELECT子句
在 INSERT 语句中使用 SELECT子句,可以将一个或多个表或视图中的数据添加到另外一个表中。使用 SELECT 子句还可以同时插入多行。
-- 语法结构
INSERT [ INTO ] table_name [ ( column_list ) ]
SELECT select_list
FROM table_name
[ WHERE search_condition ]
-- 示例:创建一个成绩表副本(#TempOrder)表,将 sc表中成绩大于等于80分的数据添加到该表中,并查询里面的内容。
create table #TempOrder
(
sno char(9),
cno char(4),
score in,
)
go
insert into #TempOrder (sno, cno, score)
select * from sc
where score >= 80
go
select * from #TempOrder
go
drop table #TempOrder
或
select * into #TempOrder
from sc
where score >= 80
go
select * from #TempOrder
go
drop table #TempOrder
- 不要把 SELECT 子句写在圆括号中;
- INSERT 语句中的列名列表应当放在圆括号中,而且不适用 VALUES关键字。如果来源表与目标表的结构完全相同,则可以省略 INSERT 语句中的列名列表;
- SELECT 子句中的列名列表必须与 INSERT 语句中的列名列表相匹配。如果没有在 INSERT语句中给出列名列表,SELECT 子句中的列必须与目标表中的列相匹配。
二、UPDATE 语句中使用 SELECT子句
在 UPDATE 语句中使用 SELECT子句中,可以将子查询的结果作为修改数据的条件。
-- 语法结构
UPDATE table_name
SET { column_name = { expression } } [ , .. n ]
WHERE { condition_expression }
-- condition_expression:包含 SELECT子句,SELECT子句要写在圆括号中。
-- 示例:将学号为 201602001号学生选修的操作系统的成绩改为86。
update sc
set score = 86
where sno = '201602001' and
cno = (select cno from course where cname = '操作系统')
-- 示例:将2016级计算机专业王一选修的 C001号课程的成绩改为92。
update sc
set score = 92
where cno = 'C001' and
sno = (select sno from student where specialty = '计算机' and sname = '王一')
三、DELETE 语句中使用 SELECT子句
在 DELETE 语句中使用 SELECT子句中,可以将子查询的结果作为删除数据的条件。
-- 语法结构
DELETE table_name
[ WHERE { condition_expression } ]
-- 示例:将学号为 201602001号学生选修的操作系统课程删除。
delete sc
where sno = '201602001' and
cno = (select cno from course where cname = '操作系统')