数据库查询之(Ⅳ)子查询与合并查询

(以下例子操作的表都在如下表中)

嵌套查询:在Where子句中包含一个形如Select-From-Where的查询块,次查询块成为子查询或嵌套查询

1. 返回一个值的子查询(使用比较运算符(=>,<,>=,<=,!=))

例:查询与“刘伟”老师职称相同的教师号、姓名。

Select TNo,TN from T where prof=(select prof from T where TN=’刘伟’)

2. 使用ANY 关键字

1:查询讲授课程号为C5的教师姓名

Select TN from T where TNo= ANY(select TNo from TC where CNo=’C5’)(注释:该语句等价于select TN from T,TC where T.TNo=TC.TNo and TC.CNo=’C5’)

2:查询其它系中比计算机系某一教师工资高的教师的姓名和工资。

Select TN,Sal from T where (Sal>ANY(select Sal from T where Dept=’计算机’)) and Dept<>’计算机

(注:该语句等价于Select TN,Sal from T where (Sal>(select MinSal from T where Dept=’计算机’)) and Dept<>’计算机))

3,使用All关键字

1:查询其它系中比计算机系所有教师工资都高的教师的姓名和工资

Select TN,Sal from T where (Sal>Allselect sal from T where Dept=’计算机) and Dept<>’计算机

(注:该语句等价于Select TN,Sal from T where (Sal>select Maxsal from T where Dept=’计算机) and Dept<>’计算机))

2:查询不讲授课程号为C5的教师的姓名

Select distinct TN from T where TNo<>All(select TNo from TC where CNo<>C5)

(1:该语句等价于 select distinct TN from T where (‘C5’<>All(Select CNo from TC where TNo=T.TNo)))

(2’<>All’等价于’not in’)

合并查询:就是用UNION操作符将来自不同查询的数据组合起来,形成一个具有综合信息的查询结果(特别注意,参加合并的各子查询的使用的表机构应该相同)

例:从SC数据表中查询出学号为S1同学的学号和总分,再从SC数据表中查询出学号为S5的同学的学号和总分,然后将两个查询结果合并到一个结果集。

Select SNo as 学号,SUM(Score) as 总分 from SC where (SNo=’S1’) group by SNo union Select SNo as 学号,SUM(Score) as 总分 from SC where (SNo=’S5’) group by SNo

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值