SQL笔试题解:复杂查询与分析

需积分: 10 1 下载量 172 浏览量 更新于2024-09-09 收藏 47KB DOCX 举报
"这些SQL笔试题涵盖了数据库查询的多个方面,包括比较不同课程的成绩、计算平均成绩、统计个人信息、查询特定条件的教师数量以及找出满足特定条件的学生。这些问题主要涉及Oracle和MySQL数据库系统,测试了对SQL语言的基本操作,如JOIN、GROUP BY、HAVING、LIKE、IN和EXISTS子句的掌握程度。" 1. 查询“001”课程比“002”课程成绩高的所有学生的学号: 这个查询使用了子查询来分别获取“001”和“002”课程的成绩,然后通过比较这两个子查询的结果找出分数更高的学生。它展示了如何在同一个查询中使用多个FROM子句和WHERE子句。 2. 查询平均成绩大于60分的同学的学号和平均成绩: 这个查询首先按学生学号分组(GROUP BY),然后计算每个学生所有课程的平均成绩(AVG(score)),最后使用HAVING子句过滤出平均成绩超过60分的学生。这体现了如何结合GROUP BY和HAVING子句进行聚合函数的条件筛选。 3. 查询所有同学的学号、姓名、选课数、总成绩: 此查询使用LEFT OUTER JOIN连接学生表和成绩表,确保所有学生即使没有成绩也会被包含在结果中。COUNT函数用于计算选课数,SUM函数用于计算总成绩。GROUP BY子句用于按学号和姓名分组。 4. 查询姓“李”的老师的个数: 这里使用LIKE操作符匹配以“李”开头的教师名字,并使用COUNT和DISTINCT结合来计算不重复的“李”姓教师数量。 5. 查询没学过“叶平”老师课的同学的学号、姓名: 这个查询使用NOT IN子句,配合子查询找出所有学过“叶平”老师课程的学生学号,然后从学生表中排除这些学号,得到未学过“叶平”课程的学生列表。 6. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名: 此查询首先找到学过“001”课程的学生,然后使用EXISTS子句检查这些学生是否还学过“002”课程。这显示了如何使用嵌套查询和EXISTS子句来验证两个条件同时成立的情况。 总结来说,这些SQL题目测试了对基本SQL语法的理解,包括但不限于:子查询、JOIN操作、聚合函数、WHERE和HAVING子句的使用、LIKE和IN操作符以及EXISTS子句。它们对于理解数据库查询和数据操作是至关重要的。