1. 查询“1”课程比“2”课程成绩高的所有学生的学号
select sc1.sid from sc sc1 join sc sc2 on sc1.sid=sc2.sid where sc1.score>sc2.score;
说明:在针对同一关键字下的不同项目 可以将一张表利用取别名的方法出现两张表,使得查找不至于混淆。
2. 查询所有同学的学号、姓名、选课数、总成绩
select student.sid,student.snam,count(cid),sum(score) from student left join sc on
student.sid=sc.sid group by student.sid;
说明:sc的表中sid并不是唯一的,所以要用group by 使得sc被分成以sid为依据的几个小组;
3.查询姓“李”的老师的个数
4.查询没学过“叶平”老师课的同学的学号、姓名
说明:由于老师姓名是在表teacher中姓名在表student中,两者之间需要表sc,course来关联,所以要用到四张表查询;
5.查询学过“1”并且也学过编号“2”课程的同学的学号、姓名
6.查询学过“叶平”老师所教的所有课的同学的学号、姓名
说明:查找所有课程小于60分比较复杂,所以实际操作取对立集合
8. 查询没有学全所有课的同学的学号、姓名
说明:因为在表sc中每个sid下的课程有重复,如果只用count(cid)总是查不到没有学全所有课程的同学;
9.查询平均成绩大于60分的同学的学号和平均成绩