连接查询–嵌套查询
一、单层嵌套查询
嵌套查询分为相关嵌套查询、不相关嵌套查询。区分条件是分离之后是否可以单独查询。
不相关嵌套查询:由里向外查询,先执行子查询,得到的结果用来构造外部查询的条件。子查询中不可以排序
例如:使用 IN(可以返回多个值),或者 = (使用=时,返回值必须为单个值 , 表示大小关系时用 <, > ,>=,<=, !=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18---查询跟刘晨在一个系的学生的姓名(使用in,考虑可能会有重名的情况分布在不同的系) select Sname from Student where Sdepe in ( select Sdepe from Student where Sname='刘晨') ---查询年龄比学号为‘201215121’的学生 小的学生,学号,姓名,所在系 select Sno,Sname,Sdepe from Student where Sage < ( select Sage from Student where Sno = '201215121' )
**'> ANY 等价于 >MIN **大于子查询结果中的某个值
'>'ALL 等价于>MAX大于子查询结果中的所有值
**'<'ANY 等价于 <MAX **小于子查询结果中的某个值
‘<’ ALL等价于<MIN小于子查询结果中的所有值
‘>’= ANY等价于 >MIN大于等于子查询结果中的某个值
‘>’= ALL等价于>=MAX大于等于子查询结果中的所有值
**<= ANY 等价于 <=MAX **小于等于子查询结果中的某个值
<= ALL等价于<=MIN小于等于子查询结果中的所有值
= ANY 等价于IN等于子查询结果中的某个值
=ALL等于子查询结果中的所有值(通常没有实际意义)
**!= (或<> )ALL等价于NOT IN ** ANY不等于子查询结果中的某个值
!= (或<> ) ALL不等于子查询结果中的任何一个值
NULL+num=NULL,NULL做比较运算结果是unknow
二、多层嵌套查询
例如:查询选修了课程名为‘信息系统’的学生学号和姓名。
分析:1)首先应该在Course表中找出信息系统的课程号
2)然后再SC表中找出选修了该课程的学生的学号
3)然后再根据学号,在Student表中找到该学生姓名
1
2
3
4
5
6
7
8
9
10
11select Sno,Sname from Student where Sno in ( select Sno from SC where Cno in ( select Cno from Course where (Cname = '信息系统') ) )
最后
以上就是优美胡萝卜最近收集整理的关于连接查询--嵌套查询的全部内容,更多相关连接查询--嵌套查询内容请搜索靠谱客的其他文章。
发表评论 取消回复