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

需积分: 1 0 下载量 103 浏览量 更新于2024-09-13 收藏 46KB DOC 举报
"数据库SQL语句" SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言,本摘要中提到了几个具体的SQL查询实例,涵盖了联接查询、子查询、聚合函数、分组以及条件筛选等多个方面。以下是这些SQL语句详解: 1. 查询“001”课程成绩高于“002”课程的所有学生的学号: 这个查询通过两个子查询分别获取“001”和“002”课程的成绩,然后通过外连接比较这两个子查询的结果,找出分数更高的学生。子查询a和b分别对应两个课程的成绩,最终通过`WHERE a.score > b.score AND a.s# = b.s#`筛选出满足条件的学生。 2. 查询平均成绩大于60分的同学的学号和平均成绩: 此查询首先按学号分组`GROUP BY S#`,然后计算每个学生的平均成绩`AVG(score)`,并使用`HAVING AVG(score) > 60`来过滤出平均成绩大于60分的学生。 3. 查询所有同学的学号、姓名、选课数、总成绩: 该查询使用左外连接将`Student`表与`SC`表联接,确保所有学生的信息都能被列出,即使他们没有成绩。通过`COUNT(SC.C#)`统计每个学生的选课数,`SUM(score)`计算总成绩,最后按学号和姓名分组。 4. 查询姓“李”的老师的个数: 这里使用`LIKE '李%'`来匹配姓“李”的老师,`DISTINCT`关键字确保不重复计数,`COUNT()`函数计算满足条件的老师数量。 5. 查询没学过“叶平”老师课的同学的学号、姓名: 这个查询使用`NOT IN`操作符,找出不在从`SC`、`Course`和`Teacher`表联接结果中出现的学生,即没有选过“叶平”老师课程的学生。 6. 查询学过“001”并且也学过编号“002”课程的同学的学号、姓名: 首先,根据学生学号和“001”课程的关联找出这部分学生,然后在这些学生中使用`EXISTS`子查询来检查他们是否同时学过“002”课程。 这些SQL语句展示了如何利用SQL进行复杂的数据查询和分析,包括子查询、联接、分组、聚合函数等高级特性,对于理解和掌握SQL语言非常重要。在实际的数据库管理、数据分析或软件开发工作中,熟练运用这些技巧能够帮助我们更高效地从数据库中获取所需信息。