EXISTS与NOT EXISTS理解

1.学生表
Student(Sno,Sname,Sage,Ssex) --Sno 学号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
主键Sno
2.教师表
Teacher(Tno,Tname) --Tno 教师编号,Tname 教师姓名
主键Tno
3.课程表
Course(Cno,Cname,Tno) --Cno --课程编号,Cname 课程名称,Tno 教师编号
主键Cno 外键Tno参照教师表
4.成绩表
SC(Sno,Cno,score) --Sno 学生编号,Cno 课程编号,score 分数
主键(Sno,Cno) 外键Sno,Cno分别参照学生表和课程表
-- 2、查询没有学全所有课程的同学的信息(要显示没有选课的同学信息)
SELECT *
FROM student
WHERE EXISTS (SELECT * FROM course WHERE
NOT EXISTS (SELECT * FROM sc WHEREcourse.Cno = sc.Cno AND sc.Sno = student.Sno));

其中SELECT * FROM sc WHERE course.Cno = sc.Cno AND sc.Sno = student.Sno将学生选的课查出来,再通过SELECT * FROM course WHERE NOT EXISTS () 来在课程表里面查询学生没有选的课,如果存在学生没有选的课 则最外面的SELECT * FROM student WHERE EXISTS () 返回true,最后就将没有选所有课的学生打印出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值