查询–嵌套查询

查询–嵌套查询连接查询嵌套查询嵌套查询分为相关嵌套相关查询、不相关嵌套查询。区分条件是分离之后是否可以单独查询。不相关嵌套查询:由里向外查询,先执行子查询,得到的结果用来构造外部查询的条件。子查询中不可以排序相关查询(一)单层嵌套查询例如:使用IN(可以返回多个值),或者=(使用=时,返回值

大家好,欢迎来到IT知识分享网。

连接查询–嵌套查询

嵌套查询分为相关嵌套相关查询、不相关嵌套查询。区分条件是分离之后是否可以单独查询。

不相关嵌套查询:由里向外查询,先执行子查询,得到的结果用来构造外部查询的条件。子查询中不可以排序

相关查询

( 一)单层嵌套查询

例如:使用 IN(可以返回多个值),或者 = (使用=时,返回值必须为单个值 , 表示大小关系时用 <, > ,>=,<=, !=

  ---查询跟刘晨在一个系的学生的姓名(使用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表中找到该学生姓名

  select Sno,Sname
  from Student
  where Sno in (
              select Sno
              from SC
              where Cno in (
                          select Cno
                          from Course where (Cname = '信息系统')
                              )
                  )

 

相关嵌套查询

不关心返回内容,只关心返回的false、true。建立内外查询的联系

 select Sname
 from Student
 where exists(
  select *
     from SC
     where Sno = Student.Sno and Cno='1'
 )

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30685.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信