第7讲 SQL语言复杂查询之-Theta-some与Theta-all

 Theta-some与Theta-all(子查询)

语法:  表达式  Theta some  (子查询)

              表达式  Theta all   (子查询)

其中 Theta 是比较运算符: <,>,>=,=<,<>.

语义将表达式的值与子句进行比较:

     1.如果表达式中至少与子查询结果比较有一个满足 Theata关系,“ 表达式  Theta some  (子查询)”的值为真。

     2..如果表达式中所有的值与子查询结果比较有一个满足 Theata关系,“ 表达式  Theta all  (子查询)”的值为真。

例: 找出工资最低的教师名字

select Tname From Teacher
where salary<=all(select salary From teacher);
--语义表示若有个个教师的salary小于等于所有教师的salary,那么他的工资----就是最小的

例: 查询001号课程成绩不是最高的所有同学的学号

select S# From SC
where C#='001' and score<some(sellect score From SC
where C#='001');
--如果某同学的分数小于所有同学分数集合的某一个那么他就不是最高的

例:找出所有课程成绩都不及格的学生的姓名

select Sname From student
where 60>all(select score From SC
where S#=student.S#);
--子查询为该同学所有的课程成绩,如果每一门都小于60,那么他就符合条件

例:找出001号课程成绩最高的所有学生的姓名

select Sname From student S ,SC
where SC='001' and S.S#=C.S# 
and score>=all(select score From SC where C#='001');

例:找出张三同学成绩最低的课程

select C#  From student S,SC
where Sname='张三' and S.S#=SC.S#
and score <=all(select score From SC where S.S#=SC>S#);

等价变换问题

如下两种表达式是相同的:

     表达式 = some(子查询)   等价于  表达式 in (子查询)

     表达式 <> all (子查询)  等价于  表达式 not in(子查询)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值