SQL查询实例:从基础到高级操作

需积分: 0 36 下载量 61 浏览量 更新于2024-12-04 收藏 62KB DOC 举报
"这些SQL查询示例展示了在数据库操作中如何使用SQL语句来获取特定信息,涵盖了子查询、联接、聚合函数、条件过滤等多个重要概念。" 1. SQL查询"001"课程成绩高于"002"课程的学生学号: 这个查询使用了子查询,首先分别获取了"001"和"002"课程的成绩,然后通过比较这两个子查询的结果找出成绩更高的学生。这里涉及到子查询嵌套和条件筛选。 2. 查询平均成绩大于60分的学生学号和平均成绩: 这个查询利用了`GROUP BY`和`HAVING`子句,先按学生学号分组,再计算每个学生的平均成绩,最后筛选出平均成绩大于60分的学生。`AVG()`函数用于计算平均值。 3. 获取所有学生的学号、姓名、选课数和总成绩: 这个查询采用了左连接(`LEFT OUTER JOIN`),将学生表与成绩表连接,通过`COUNT()`和`SUM()`函数统计每个学生的选课数和总成绩。`GROUP BY`用于按学号和姓名分组。 4. 统计姓“李”的老师数量: 此查询使用了`LIKE`关键字进行模糊匹配,配合`COUNT(DISTINCT())`统计不同姓“李”的老师数量。 5. 查找未学过“叶平”老师课程的学生学号和姓名: 这个查询首先通过内连接找出所有上过“叶平”老师课程的学生,然后使用`NOT IN`操作符排除这些学生,得到未学过“叶平”老师课程的学生列表。 6. 查询同时学过“001”和“002”课程的学生学号和姓名: 这个查询结合了`EXISTS`子句,先找出学过“001”课程的学生,然后检查这些学生是否存在“002”课程的记录。 7. 查找学过“叶平”老师所有课程的学生学号和姓名: 此查询使用`IN`操作符配合子查询,找出所有上过“叶平”老师课程的学生,即所有课程的学号都在“叶平”老师教授的课程学号列表内的学生。 8. 查询每门课程的最高分和最低分: 可以使用`GROUP BY`和`MIN()`、`MAX()`函数,按课程编号分组,分别找出每个课程的最低分和最高分。 9. 查询每门课程的及格率: 可以计算出每个课程成绩大于等于60分的学生人数占总人数的比例,这需要`COUNT()`函数配合`WHERE`子句筛选及格学生,再除以总的选课人数。 10. 查询各科成绩的中位数: 计算中位数通常需要排序和分组,可以先按课程编号和成绩排序,然后根据学生人数是奇数还是偶数来确定中位数的位置。 这些例子涵盖了SQL查询的基础到进阶用法,对于理解SQL语言的功能和实际应用非常有帮助。