简单解释:
其实你的关键在于两点a、not exists b、嵌套
1、not exists表示相应的子查询(subquery)没有结果,也就是没查到一条记录
2、嵌套是指从最里层的subquery一层一层往外执行,对于每一个“主查询”(我自定义的)的记录,子查询都要执行一次。
其实你的关键在于两点a、not exists b、嵌套
1、not exists表示相应的子查询(subquery)没有结果,也就是没查到一条记录
2、嵌套是指从最里层的subquery一层一层往外执行,对于每一个“主查询”(我自定义的)的记录,子查询都要执行一次。
SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.SNO=S.SNO AND SC.CNO=C.CNO))是说没有一个学生选修任何课程的班级(没有学生选修的班级)
SELECT SN FROM S WHERE NOT EXISTS
(SELECT * FROM C WHERE NOT EXISTS
(SELECT * FROM SC WHERE SC.SNO=S.SNO AND SC.CNO=C.CNO))
就可理解为不存在有学生不选修的班级,
总之,打印全班都选修课程的班级的学生姓名
select * from sc where sc.sno=s.sno and sc.cno=c.cno
这是如何理解呀,他为什么要在sc中检索,为什么还要把 那两个连接
能不能给我解释一下where 要是翻译成中文做什么最容易理解!!
我不明白那两个连接的实质是什么?是不是就是建立一个映射?
sc存放学生选课信息,通过此表将课程和学生建立联系
这个连接我个人以为应该看成AXB比较合适