图3-20
5) 找出选修了全部课程的学生姓名; 输入sql语句为:
select sname from student where not exists(select * from course where not exists (select * from Grade where sno=student.sno and cno=course.cno))
在下面窗口显示查询结果如下图3-21所示。
图3-21
第 37 页 共 50 页
4. 依据上述的四个表,用SQL语句完成如下查询
1) 查询选修了某课程的学生学号和姓名及成绩,按成绩降序排序; 查询选修了“数据库”课程的学生学号、姓名和成绩,并按成绩降序排列。
输入sql语句为:
select Sname, student.Sno, Gmark from Grade,student where
student.Sno=Grade.Sno and Grade.Cno=(select Cno from course where Cname='数据库') order by DESC
在下面窗口显示查询结果如下图3-22所示。
图3-22
2) 查询全体学生信息,结果按班级号升序,同一个班的学生按年龄降序排序; 输入sql语句为:
select * from student order by Clno,Sage desc 在下面窗口显示查询结果如下图3-23所示。
第 38 页 共 50 页
图3-23
3) 求每门课程及相应的选课人数; 输入sql语句为:
select course.Cname,count(*) as 选课人数 from Grade, course where course.Cno=Grade.Cno group by course.Cname 在下面窗口显示查询结果如下图3-24所示。
第 39 页 共 50 页
图3-24
4) 查询选修了3门(含)以上课程的学生学号; 输入sql语句为:
select s.Sno,s.Sname, count(Grade.Cno) from Student s, Grade where s.Sno=Grade.Sno group by s.Sno,s.Sname having count(Grade.Cno)>=3 在下面窗口显示查询结果如下图3-25所示。
图3-25
第 40 页 共 50 页