请帮忙解答个SQL数据库的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 19:54:44
对于教学数据库的三个基本表:
学生 Student(Sno,SNAME,AGE,SEX) (学号,姓名,年龄,性别)
选课 SC(Sno,Cno,GRADE) (学号,课程号,成绩)
课程 Course(Cno,CNAME,TEACHER) (课程号,课程名,授课教师)
试用 SQL 的查询语句表达下列查询:

/*检索全部学生都选修的课程的课程号与课程名*/
select cno,cname
from c
where not exists
(select *
from s
where not exists
(select *
from sc
where sno=s.sno and cno=c.cno));

在这个查询中,not exists是什么意思啊?
帮忙解释一下这段语句是什么意思啊?

感觉他这语句写的有问题..可能是本人菜鸟一个吧

select cno,cname from c where not exists
(select * from s where not exists
(select * from sc where sno=s.sno and cno=c.cno));

据我了解..查询出来的东西.

应该是列出没有被学生选中的课程号与课程名

与你说的那个刚好相反..不知道为什么...

not exists是不存在的意思..就是当前查询中不存在任何一条记录

not exists 就相当于 not in
就是 不存在于 满足条件的 筛选结果中
但是存在于自身的表的数据

这个题目 你画三个圆圈 两两相交 用数学的交集差集理解下就明白了

解释:
1.先在SC选课表中查出所有选课学生的学号,课程号
2.然后在S学生表中查出没有选课学生的学号
3.最后在C课程表中检索出没有哪个学生没选的课程名,即全部学生都选修的课程名