SQL查询技巧:学生、课程与教师数据操作

需积分: 9 4 下载量 107 浏览量 更新于2024-07-27 收藏 1.09MB PDF 举报
"该PDF文件包含了SQL查询的经典实例,涉及了多个关于学生、课程、教师和成绩的数据表操作。" 在SQL中,我们通常使用不同的查询来获取、分析和操作数据库中的数据。以下是对给定文件中各问题的详细解释: 1. 查询“001”课程比“002”课程成绩高的所有学生的学号: 这个查询通过子查询分别获取两门课程的成绩,然后比较并找出分数更高的学生。 2. 查询平均成绩大于60分的同学的学号和平均成绩: 使用`GROUP BY`和`HAVING`子句按学号分组,并计算每个学生的平均成绩,筛选出平均分大于60的学生。 3. 查询所有同学的学号、姓名、选课数、总成绩: 此查询使用左连接将学生表与成绩表连接,通过`GROUP BY`计算每个学生的选课数量和总成绩。 4. 查询姓“李”的老师的个数: 利用`LIKE`操作符匹配姓“李”的老师,`DISTINCT`确保计数不重复。 5. 查询没学过“叶平”老师课的同学的学号、姓名: 使用`NOT IN`子句排除学过“叶平”老师课程的学生。 6. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名: 结合`INNER JOIN`和`EXISTS`子句,找出既学过“001”又学过“002”的学生。 7. 查询学过“叶平”老师所教的所有课的同学的学号、姓名: 通过`IN`子句匹配叶平老师教的所有课程,并使用`HAVING`检查学生是否学过所有课程。 8. 查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名: 使用子查询来比较两个课程的分数。 9. 查询所有课程成绩小于60分的同学的学号、姓名: 使用`NOT IN`子句排除所有课程分数大于60的学生。 10. 查询没有学全所有课的同学的学号、姓名: 通过`HAVING`子句检查学生选修的课程数量是否少于所有课程的数量。 11. 查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名: 使用`IN`子句匹配至少有一门相同课程的学生。 12. 查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名: 找出至少学过“001”同学所有一门课程的其他学生。 13. 把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩: 使用`UPDATE`语句配合子查询,更新叶平老师所教课程的平均分。 14. 删除学习“叶平”老师课的SC表记录: `DELETE`语句与子查询结合,移除叶平老师课程的相关记录。 15. 向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号,号课的平均成绩: `INSERT INTO`语句结合子查询,为未上过“003”课程的学生插入新记录。 16. 按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩: 多列子查询用于显示指定课程的成绩,`GROUP BY`和`AVG`计算平均分,`ORDER BY`进行排序。 17. 查询各科成绩最高和最低的分: 通过自连接和子查询找出每门课程的最高分和最低分。 这些例子展示了SQL在处理关系型数据库时的强大功能,包括聚合函数(如`COUNT`, `AVG`, `MAX`, `MIN`)、连接操作(如`JOIN`, `LEFT JOIN`, `INNER JOIN`)、子查询以及条件过滤(如`WHERE`, `HAVING`, `IN`, `NOT IN`, `LIKE`)。理解并熟练运用这些技术对于SQL查询和数据管理至关重要。