49,50

学生表

课程表

成绩表

教师表

16.查询课程名称为“数据库”,且分数低于60分的学生姓名和分数。

SELECT sname,score, FORM student s, scores sc WHERE s.sno=sc.sno AND sc.score<60 AND sc.cno=(SELECT cno FORM c WHERE cname='数据库')

解题思路:需要检索出数据库的课程编号,两个表之间的关联条件为s.sno=sc.sno;
其它限制条件写在WHERE字句,sc.score<60。

17.查询所有学生的选课情况。

SELECT sname,cname FROM student s,course c,scores sc WHERE s.sno=c.sno AND sc.cno=c.cno

解题思路:检索学生姓名和课程名,两个表之间需要通过成绩进行关联。

18.查询课程成绩在70分以上的姓名、课程名称和分数。

SELECT sname,cname,score FROM student s,scores sc,course c WHERE s.sno=sc.sno AND sc.cno=c.cno AND score>70

解题思路:SELECT字句用到姓名、课程名和分数需要多表连接;
关联条件 s.sno=c.sno AND sc.cno=c.cno;
成绩在70分以上表示为score>70。

19.查询那些课程的分数小于60分,并按课程号从大到小排列。

SELECT cname FROM course c WHERE c.cno IN(SELECT cno FROM scores sc WHERE score<60) ORDER BY c.cno desc 

20.查询课程编号为c001且课程成绩在80分以上的学生的学号和姓名。

SELECT  sno,sname FROM student s WHERE sno IN(SELECT sno FROM scores WHERE cno='c001' AND score >80)

解题思路:主查询的限制条件是课程编号和课程成绩,子查询检索出课程编号为c001且课程成绩在80分以上的学号有哪些。

21.求选了课程的学生人数。

SELECT count(DISTINCT sno) FROM scores

解题思路:统计成绩表中的学号数,相同的去掉。

22.查询各个课程及相应的选修人数。

SELECT count(sno) FROM scores GROUP BY cno

解题思路:以课程编号分组,统计每组的学生编号数。

23.检索至少选修两门课程的学生学号。

SELECT sno FROM student s WHERE sno IN (SELECT sno FROM scores GROUP BY sno HAVING count(cno) >1)

解题思路:子查询以学号分组,限制条件是课程数大于1,即HAVING count(cno)>1,检索符合条件的学号对应的学生。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容