SQL嵌套查询

一、带IN谓词的子查询

查询和张三同一个系的学习的学生

时间复杂度M+N

select sname
from student
where sdept in (select sdept 
                from student 
                where name = '张三')

用连接查询同样可以实现 

时间复杂度M*N(SQL是高度非过程化语言,内部会优化)

select y.sname
from student as x, student as y
where x.sname = '张三' and x.sdept = y.sdept and x.sname <> y.sname

查询选修了陈国教授课程的学生

select sname 
from student 
where sno in(
    select sno
    from sc
    where cno in(
    select cno 
    from course
    where teacher = '陈国'))

连接查询

select sname
from student,sc,course
where student.sno = sc.sno and course.cno = sc.cno and teacher = '陈国'

子查询不依赖于父查询的查询称为不相关子查询

二、带有比较运算符的子查询(>,<、=、>=、<=、!=、<>...)

三、带有限量谓词的子查询

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值