嵌套查询
SQL学习笔记-嵌套查询定义:
SQL学习笔记-嵌套查询
1 .指在一个外层查询中包含有另一个内层查询。其中外层查询称为主查询,内层查询称为子查询。
SQL学习笔记-嵌套查询
2 .SQL允许多层嵌套,由内而外地进行分析,子查询的结果作为主查询的查询条件
SQL学习笔记-嵌套查询
3 .子查询中一般不使用order by子句,只能对最终查询结果进行排序
SQL学习笔记-嵌套查询子查询(sub query)
SQL学习笔记-嵌套查询
where  表达式  [ not ]   in  (子查询)
SQL学习笔记-嵌套查询
where  表达式 比较运算符 [ any|all ]  子查询
SQL学习笔记-嵌套查询
where   [ not ]   exists  (子查询)
SQL学习笔记-嵌套查询
SQL学习笔记-嵌套查询
1 .子查询-单值比较
SQL学习笔记-嵌套查询返回单值子查询,只返回一行一列
SQL学习笔记-嵌套查询主查询与单值子查询之间用比较运算符进行连接:
SQL学习笔记-嵌套查询运算符:
> , >= , < , <= , = , <>
SQL学习笔记-嵌套查询例:找出与太行同龄的同事
SQL学习笔记-嵌套查询
select   *   from  company
SQL学习笔记-嵌套查询
where  age  =  ( select  age  from  company
SQL学习笔记-嵌套查询             
where  name = taihang)
SQL学习笔记-嵌套查询
SQL学习笔记-嵌套查询
2 .子查询- in
SQL学习笔记-嵌套查询例:查询选修了‘
001 ’课程的学生学号,姓名。
SQL学习笔记-嵌套查询
select  id,name
SQL学习笔记-嵌套查询
from  student
SQL学习笔记-嵌套查询
where  id  in  ( select  id 
SQL学习笔记-嵌套查询             
from  taihang
SQL学习笔记-嵌套查询             
where  id = ' 001 ' )
SQL学习笔记-嵌套查询
SQL学习笔记-嵌套查询
3 .子查询-多值比较all
SQL学习笔记-嵌套查询多行一列
SQL学习笔记-嵌套查询
1 .父查询与多值子查询之间的比较需用all来连接
SQL学习笔记-嵌套查询
2 .标量值S比子查询返回集R中的每个都大时,s >all ,r为true
SQL学习笔记-嵌套查询
3 .all表示所有
SQL学习笔记-嵌套查询
4 . >all , <all , >=all , <=all , <>all ,注:all等价于not  in
SQL学习笔记-嵌套查询例:找出年龄最小的学生
SQL学习笔记-嵌套查询
select   *   from  student
SQL学习笔记-嵌套查询
where  age <all ( select  age  from  student)
SQL学习笔记-嵌套查询
SQL学习笔记-嵌套查询
4 .子查询-多值比较some /any
SQL学习笔记-嵌套查询
1 .父查询与多值子查询之间的比较需用some / any来连接
SQL学习笔记-嵌套查询
2 .标量值S比子查询返回集r中的某一个都大时,s > some时r为true 或s > any时r为true
SQL学习笔记-嵌套查询
3 .some表示部分
SQL学习笔记-嵌套查询
4 . >some , >=some , =some , <some , <=some , <>some ,注: = some等价于in, <> some不等价于not  in .
SQL学习笔记-嵌套查询例:找出不是最小年龄的学生
SQL学习笔记-嵌套查询
select   *   from  student
SQL学习笔记-嵌套查询
where  age  >   some ( select  age  from  student)
SQL学习笔记-嵌套查询
SQL学习笔记-嵌套查询
5 .子查询-存在判断exists
SQL学习笔记-嵌套查询
1 . exists+ 子查询用来判断该子查询是否返回元组
SQL学习笔记-嵌套查询
2 .当子查询的结果集非空时,exists为true
SQL学习笔记-嵌套查询
3 .当子查询的结果集为空时,exists为false
SQL学习笔记-嵌套查询
4 .不关心子查询的具体内容,因此用select  *
SQL学习笔记-嵌套查询例:列出先修了C01课程的学习的学号,姓名
SQL学习笔记-嵌套查询
select  son,sname
SQL学习笔记-嵌套查询
from  strdent
SQL学习笔记-嵌套查询
where   exists ( select   *   from  sc
SQL学习笔记-嵌套查询             
where  sc.sno = stusent.sno  and
SQL学习笔记-嵌套查询             cno
= ' C01 ' )
SQL学习笔记-嵌套查询最后这一个不是很好理解呀!等用多了就好了。

相关文章: