SQL面试题解析:学生、课程与教师数据操作

4星 · 超过85%的资源 需积分: 4 6 下载量 130 浏览量 更新于2024-07-24 收藏 48KB DOCX 举报
"经典SQL面试" 在SQL面试中,考察的知识点通常包括但不限于数据查询、联接操作、聚合函数、子查询、条件过滤以及数据处理等。以下是对给定问题中涉及的SQL知识点的详细解释: 1. 查询“001”课程比“002”课程成绩高的所有学生的学号: 这个问题使用了子查询和内连接来比较两门课程的成绩。首先,创建两个子查询分别获取“001”和“002”课程的学生分数,然后通过内连接找出在两门课程中都得分且“001”课程分数高于“002”课程的学生。 2. 查询平均成绩大于60分的同学的学号和平均成绩: 这里运用了`GROUP BY`语句和聚合函数`AVG()`来计算每个学生的平均成绩,再配合`HAVING`子句筛选出平均分超过60分的学生。 3. 查询所有同学的学号、姓名、选课数、总成绩: 使用左外连接将`Student`表与`SC`表关联,计算每个学生的选课数(`COUNT(SC.C#)`)和总成绩(`SUM(score)`)。`GROUP BY`语句用于按学生分组。 4. 查询姓“李”的老师的个数: `LIKE`操作符用于模糊匹配,这里匹配以“李”开头的老师名字。`COUNT(DISTINCT Tname)`则计算不重复的姓“李”老师数量。 5. 查询没学过“叶平”老师课的同学的学号、姓名: 这个问题使用了子查询和`NOT IN`操作符。首先,子查询找出上过“叶平”老师课程的学生学号,然后主查询通过`NOT IN`排除这些学号。 6. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名: 这个问题使用了主查询和存在子查询。主查询首先找出上过“001”课程的学生,然后子查询检查这些学生是否也上过“002”课程。 7. 查询学过“叶平”老师所教的所有课的同学的学号、姓名: 这个问题较为复杂,需要找出上过所有“叶平”老师课程的学生。通常,这需要使用自连接和集合操作,但由于题目没有给出完整的信息,这里只能假设有办法获取“叶平”老师教授的所有课程编号,然后用`IN`操作符筛选出这些课程的学生。 以上七个问题展示了SQL在实际问题中的应用,涵盖了基础查询、联接、子查询、聚合函数、条件过滤等多个方面,这些都是SQL面试中常见的考察点。理解并掌握这些知识点对于准备SQL面试至关重要。