SQL查询实战:解决32道经典Java实训题目

需积分: 9 1 下载量 69 浏览量 更新于2024-09-08 收藏 18KB DOCX 举报
在本篇文档中,提供了多个关于Java实训中的MySQL语句练习题,主要针对数据库操作和查询技巧进行深入学习。以下是针对几个关键知识点的详细解析: 1. 删除特定学生特定课程成绩: 该SQL命令 `DELETE FROM tb_sc WHERE sid = '002' AND cid = '001';` 是用来从成绩表(tb_sc)中删除学号为002的学生在课程编号为001的记录。这是对SQL基础操作——删除数据的一个实例,展示了如何根据特定条件删除数据。 2. 检索不及格分数并排序: 查询 `SELECT sid FROM tb_sc WHERE cid = '004' AND score < 60 ORDER BY score DESC;` 用于查找课程ID为004且分数低于60的学生学号,并按分数从高到低排序。这涉及到查询、条件过滤和排序功能。 3. 计算不及格门数与平均成绩: `SELECT sid, SUM(score < 60) AS 挂科门数, AVG(score) AS 平均分 FROM tb_sc GROUP BY sid HAVING 挂科门数 >= 2;` 此查询统计每个学生的挂科门数以及平均成绩,仅返回选修课程中有两门或更多不及格的学生信息。 4. 查询未选修特定老师课程的学生: 这个查询通过子查询排除了张三老师授课的所有课程,然后筛选出 `SELECT sname FROM tb_student WHERE sid IN ...` 的学生姓名。这展示了如何使用NOT IN和多表联接来完成复杂的条件筛选。 5. 检索至少选修两门课程的学生学号: `SELECT sid FROM tb_sc GROUP BY cid HAVING cid >= 2;` 通过GROUP BY和HAVING子句,找出选修课程数量超过一门的学生学号。 6. 统计选修人数并按条件排序: `SELECT cid, COUNT(cid) AS 选修课程人数 FROM tb_sc GROUP BY cid HAVING 选修课程人数 >= 10 ORDER BY 选修课程人数 DESC, cid ASC;` 此查询计算每门课程的选修人数,只显示选修人数超过10的学生,结果按照人数降序和课程号升序排列。 7. 查询每门课成绩最好的前两名: 最后一个查询没有提供完整的SQL,但可以推断出其目的是获取每门课程的最高分学生,可能需要结合子查询和窗口函数(如RANK或ROW_NUMBER)来实现。这个部分体现了高级SQL查询技术,特别是处理排名和竞赛型结果的能力。 这些题目涵盖了MySQL基础操作(如增删改查)以及更复杂的查询策略,包括联接多个表、聚合函数、排序和分组等,有助于巩固Java开发人员在实际项目中的SQL查询技能。通过解答这些问题,学员不仅可以掌握MySQL语法,还能提升数据处理和分析能力。