根据提供的文件信息,我们可以深入分析并总结出一系列与SQL查询相关的知识点。这些知识点不仅涵盖了具体的SQL查询语句,还涉及到了这些查询背后的逻辑和技术要点。 ### 知识点1:查询“001”课程比“002”课程成绩高的所有学生的学号 这个查询涉及到子查询和连接查询的概念。其主要思想是通过比较同一学生在不同课程中的成绩来筛选出符合条件的学生。 ```sql SELECT a.S# FROM ( SELECT S#, Score FROM SC WHERE C# = '001' ) a, ( SELECT S#, Score FROM SC WHERE C# = '002' ) b WHERE a.Score > b.Score AND a.S# = b.S#; ``` - **子查询**: 子查询用于构建临时表,这里分别构造了两组子查询,一组为选修了课程“001”的学生及其成绩,另一组为选修了课程“002”的学生及其成绩。 - **连接查询**: 使用`AND`条件将两个子查询结果集进行连接,确保比较的是同一个学生在两个不同课程中的成绩。 ### 知识点2:查询平均成绩大于60分的同学的学号和平均成绩 此查询使用了聚合函数`AVG()`以及`GROUP BY`和`HAVING`子句,以便计算每个学生的平均成绩,并筛选出平均成绩大于60分的学生。 ```sql SELECT S#, AVG(Score) FROM SC GROUP BY S# HAVING AVG(Score) > 60; ``` - **聚合函数**: `AVG()`函数用于计算每组数据的平均值。 - **GROUP BY**: 按照学号对成绩进行分组。 - **HAVING**: 在聚合操作后进行筛选,只保留那些平均成绩大于60分的记录。 ### 知识点3:查询所有同学的学号、姓名、选课数、总成绩 这是一个典型的多表连接查询,它使用了左外连接(`LEFT OUTER JOIN`)来确保所有的学生信息都能被包含在结果集中,即使某些学生没有选修任何课程。 ```sql SELECT Student.S#, Student.Sname, COUNT(SC.C#), SUM(Score) FROM Student LEFT OUTER JOIN SC ON Student.S# = SC.S# GROUP BY Student.S#, Sname; ``` - **多表连接**: 使用`LEFT OUTER JOIN`确保所有学生的信息都被包括在内。 - **聚合函数**: 使用`COUNT()`和`SUM()`函数统计每个学生的选课数量和总成绩。 ### 知识点4:查询所有老师的数量 这个查询相对简单,使用了`DISTINCT`关键字来去除重复的教师名字,并统计教师的数量。 ```sql SELECT COUNT(DISTINCT(Tname)) FROM Teacher WHERE Tname LIKE '%'; ``` - **DISTINCT**: 去除教师名称中的重复项。 - **LIKE**: 用于模糊匹配教师的名字,这里使用`%`表示匹配任何名字。 ### 知识点5:查询没学过叶平老师课程的所有学生学号和姓名 该查询使用了`NOT IN`子句来排除那些学过指定老师课程的学生。 ```sql SELECT Student.S#, Student.Sname FROM Student WHERE S# NOT IN ( SELECT DISTINCT(SC.S#) FROM SC, Course, Teacher WHERE SC.C# = Course.C# AND Teacher.T# = Course.T# AND Teacher.Tname = '叶平' ); ``` - **子查询**: 用于找出所有学过叶平老师课程的学生学号。 - **NOT IN**: 排除子查询的结果,只保留那些未学过叶平老师课程的学生。 ### 知识点6:查询学习了001课程也学习了002课程的学生学号和姓名 这里使用了`EXISTS`子句来判断一个学生是否同时选修了两门课程。 ```sql SELECT Student.S#, Student.Sname FROM Student, SC WHERE Student.S# = SC.S# AND SC.C# = '001' AND EXISTS ( SELECT * FROM SC AS SC_2 WHERE SC_2.S# = SC.S# AND SC_2.C# = '002' ); ``` - **EXISTS**: 判断是否有满足内部子查询条件的记录存在。 以上仅列举了一部分知识点,后续还有更多关于SQL查询的高级用法和技巧,如条件判断、子查询嵌套等。通过这些具体的示例,我们可以更深入地理解SQL语言的强大功能及其在实际应用中的灵活性。
- 粉丝: 1
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- asm-西电微机原理实验
- Arduino-arduino
- C语言-leetcode题解之70-climbing-stairs.c
- C语言-leetcode题解之68-text-justification.c
- C语言-leetcode题解之66-plus-one.c
- C语言-leetcode题解之64-minimum-path-sum.c
- C语言-leetcode题解之63-unique-paths-ii.c
- C语言-leetcode题解之62-unique-paths.c
- C语言-leetcode题解之61-rotate-list.c
- C语言-leetcode题解之59-spiral-matrix-ii.c