数据库SQL语句中 查询选修了全部课程的学生的学号和姓名 理解

 我来答
革寄蓝傅辰
2019-05-07 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:31%
帮助的人:697万
展开全部
楼主别着急!
为好理解我们先从这条SQL语句所要实现的功能入手。
功能:查出选修了全部课程的学信息。那么SQL在查询数据的时候的遍历每一个学生信息。判断该学生是否满足条件。
1
如果存在这么一条Course记录A(暂命名为A),
则不选择该学生。否则该学生就被查询出来
2
那么记录A,是怎么查出来的呢?A查出的条件是:不存在SC记录B,只要不存在B,就可查出A
3
那么B记录是什么?B记录是选课信息表,根据学号和课程号可查出记录B
如果B为空(该学生有没有选的课程)也就是不存在,则A就有一条记录,根据规则2可知:因为有A,所以该学生信息将不被输出。
如果在SC中每一个课程编号和该学生编号为条件都能够查出一条记录B(也就是该学生选修了全部课程),所以A记录不存在,则输出该学生的信息。
也就是在选课表中,如果学生选了全部课程(也就是满足SELECT
*
FROM
SC
WHERE
Sno=
Student.Sno
AND
Cno=
Course.Cno)始终存在,当然,课程编号是任意的)。那么就输出该学生的信息。你不要为理解这条SQL而忘记了它本身是要做什么.
带着SQL的目的(要实现的功能)去理解就好了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式