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

来源:互联网 发布:万得股票软件mac版本 编辑:程序博客网 时间:2024/06/11 19:24

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

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

              表达式  Theta all   (子查询)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

等价变换问题

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

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

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



0 0
原创粉丝点击