"常考SQL语句.pdf 是一份关于SQL语句的学习资料,包含了数据库操作的基础知识,如增、删、改、查等,适用于解决数据库课后习题或作为练习材料。文档通过例题的形式讲解了SQL在实际场景中的应用,涵盖了与学生表(Student)、课程表(Course)、成绩表(SC)和教师表(Teacher)相关的查询操作。"
以下是这些SQL语句涉及的知识点详解:
1. **子查询**:在第一个问题中,使用了两个子查询分别获取“001”和“002”课程的成绩,然后通过比较子查询的结果找出成绩更高的学生。
2. **聚合函数 AVG() 和 HAVING 子句**:第二题中,`AVG(score)`用于计算平均成绩,`GROUP BY S#`按学号分组,`HAVING avg(score) > 60`则筛选出平均成绩超过60分的学生。
3. **LEFT OUTER JOIN** 和 **COUNT(), SUM() 函数**:第三题展示了如何通过左连接(LEFT OUTER JOIN)来获取所有学生的信息,包括选课数和总成绩。`COUNT(SC.C#)`计算每名学生的选课数,`SUM(score)`求总成绩。
4. **LIKE 操作符** 和 **COUNT() 函数**:第四题用`LIKE '李%'`匹配姓“李”的老师,并通过`COUNT(DISTINCT Tname)`计算个数,`DISTINCT`确保不重复计数。
5. **NOT IN 子句** 和 **JOIN**:第五题使用`NOT IN`来排除学过“叶平”老师课程的学生,同时通过JOIN操作关联了SC、Course和Teacher表,找出未学过“叶平”课程的学生。
6. **EXISTS 子句** 和 **INNER JOIN**:第六题通过INNER JOIN找到学过“001”课程的学生,然后利用EXISTS子句检查这些学生是否也学过“002”课程。
7. **IN 子句** 和 **JOIN**:第七题查找学过“叶平”老师所有课程的学生,首先找到“叶平”老师教授的所有课程,再用IN子句筛选出学过这些课程的学生。
以上知识点是SQL基础操作的核心,包括数据检索(SELECT)、数据分组(GROUP BY)、条件过滤(WHERE, HAVING, NOT IN, EXISTS)、连接操作(JOIN)以及聚合函数(COUNT, AVG, SUM)。掌握这些概念和语法对于理解和操作关系型数据库至关重要。在实际工作中,能够灵活运用这些技能可以有效处理复杂的数据查询和分析任务。