SQL Server 数据查询④ 数据更新 空值的处理 视图

本文详细介绍了SQL Server中数据查询的集合操作,包括并集(UNION)、交集(INTERSECT)和差集(EXCEPT),以及基于派生表的查询。接着讲解了数据更新,包括插入、修改和删除数据的操作。空值的处理方面,讨论了空值的产生、判断和运算。最后,文章深入探讨了视图的定义、查询、更新及其在数据库管理中的作用。
摘要由CSDN通过智能技术生成

数据查询

1、集合查询

SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT

注意:参加集合操作的各查询结果的列数必须相同;对应的数据类型也必须相同

例 查询计算机科学系的学生及年龄不大于19岁的学生

select *
from student
where sdept='cs'
union
select *
from student
where sage<=19;

在这里插入图片描述

本查询实际上是求计算机科学系的所有学生与年龄不大于19岁的学生的并集。使用UNION将多个查询结果结合并起来,系统会自动去除重复元组。如果要保留重复元组则用UNION ALL操作符

例 查询计算机科学系的学生与年龄不大于19岁的学生的交集

select *
from student
where sdept='cs'
intersect
select *
from student
where sage<=19;

这实际上就是查询计算机科学系中年龄不大于19岁的学生

select *
from student
where sdept='cs' and
	  sage<=19;

例 查询计算机科学系的学生与年龄不大于19岁的学生的差集

select *
from student
where sdept='cs'
except
select *
from student
where sage<=19;

在这里插入图片描述

也就是查询计算机科学系中年龄大于19岁的学生

select *
from student
where sdept='cs' and
	  sage>19;
2、基于派生表的查询

子查询不仅可以出现在WHERE字句中,还可以出现在FROM字句中。这时子查询生成的临时**派生表(derived table)**成为主查询的对象

例 找出每个学生超过他自己选修课程平均成绩的课程号

select sno,cno
from sc,(select sno,avg(grade)
		 from sc
		 group by sno) 
		 as avg_sc(avg_sno,avg_grade)
where sc.sno=avg_sc.avg_sno and sc.grade>=avg_sc.avg_grade;

在这里插入图片描述

这里FROM子句中的子查询将生成一个派生表 Avg_sc。该表由avg_sno和avg_grade两个属性组成,记录了每个学生的学号及平均成绩。主查询将SC于Avg_sc按学号相等进行连接,选出选修课成绩大于其平均成绩的课程号

如果子查询中没有聚集函数,派生表可以不指定属性列,子查询SELECT子句后面的列名为其默认属性。

例 查询所有选修了1号课程的学生姓名

select sname
from student,(select sno
			  from sc
			  where cno='1'
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值