现有一个校园数据库,现如何推断出哪个学生没有选课

现有一个校园数据库,如图所示,其中有五张表,五张表中的字段如下,请问现如何推断出哪个学生没有选课?

img

1、解答思路:要推断哪个学生没有选课,那肯定涉及到学生信息和课程信息,根据数据模型学生表和成绩表相连,成绩表里有课程编号字段,所以取数逻辑在学生表和成绩表上即可。
2、下面为实现sql,可能会存疑是否需要跟课程表相连,连了也可以,但是本人认为,学生选了课,正常就应该存在成绩(即便考虑成绩为0的情况),所以只用学生表和成绩表可以实现。

--方式一:学生表里学号在成绩表里不存在的,就是没有选课的学生
select t.学号,t.学生姓名
   from 学生表 t 
     where t.学号 not in
( select 学号 from 成绩表);

--方式二:用not exists方式
select t.学号,t.学生姓名
   from 学生表 t 
     where not exists
( select 1 from 成绩表 t1 where t.学号=t1.学号);
  

根据课程表查询成绩表,查询结果再与学生表对比,没成绩的学生就没选该课程