根据给定文件的信息,我们可以将这些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”课程的成绩。 - **表连接**:通过表连接的方式,将两个子查询结果进行比较。 - **条件筛选**:使用`WHERE`子句来确保只有当两个课程的学号相同时才进行比较,并且“001”课程的成绩确实高于“002”课程的成绩。 ### 2. 查询平均成绩大于60分的同学的学号和平均成绩 ```sql select S#, avg(score) from sc group by S# having avg(score) > 60; ``` **知识点:** - **聚合函数**:使用`AVG()`函数计算每个学生的平均成绩。 - **分组查询**:通过`GROUP BY`子句按学号分组。 - **HAVING子句**:用于筛选分组后的结果集,只有满足条件的分组才会被返回。 ### 3. 查询所有同学的学号、姓名、选课数、总成绩 ```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 ``` **知识点:** - **外连接**:使用左外连接来确保即使有学生没有选课记录也能被查询到。 - **聚合函数**:使用`COUNT()`和`SUM()`来统计选课数量和总成绩。 - **分组查询**:按学号和姓名进行分组。 ### 4. 查询姓“李”的老师的个数 ```sql select count(distinct(Tname)) from Teacher where Tname like '李%'; ``` **知识点:** - **模糊匹配**:使用`LIKE`操作符进行模糊匹配。 - **聚合函数**:使用`COUNT()`来统计满足条件的行数。 - **DISTINCT**:确保计数时不会重复计算相同的名字。 ### 5. 查询没学过“叶平”老师课的同学的学号、姓名 ```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”课程的同学的学号、姓名 ```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子句**:用于检查内层查询是否有结果,如果有则返回真。 - **别名**:为`SC`表创建别名`SC_2`来方便引用。 ### 7. 查询学过“叶平”老师所教的所有课的同学的学号、姓名 ```sql select S#, Sname from Student where S# in (select S# from SC, Course, Teacher where SC.C# = Course.C# and Teacher.T# = Course.T# and Teacher.Tname = '叶平' group by S# having count(SC.C#) = (select count(C#) from Course, Teacher where Teacher.T# = Course.T# and Tname = '叶平')) ``` **知识点:** - **子查询嵌套**:内层子查询用来获取“叶平”老师教授的课程总数。 - **HAVING子句**:用于筛选出选课数等于“叶平”老师教授课程总数的学生。 ### 8. 查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名 ```sql Select S#, Sname from (select Student.S#, Student.Sname, score, (select score from SC SC_2 where SC_2.S# = Student.S# and SC_2.C# = '002') score2 from Student, SC where Student.S# = SC.S# and C# = '001') S_2 where score2 < score; ``` **知识点:** - **子查询嵌套**:外层子查询获取“001”课程的成绩,内层子查询获取同一学生在“002”课程的成绩。 - **比较运算**:使用`<`来判断“002”课程的成绩是否低于“001”课程的成绩。 ### 9. 查询所有课程成绩小于60分的同学的学号、姓名 ```sql select S#, Sname from Student where S# not in (select Student.S# from Student, SC where S.S# = SC.S# and score > 60) ``` **知识点:** - **子查询**:使用子查询来获取成绩大于60分的学生学号。 - **NOT IN**:用于排除成绩大于60分的学生。 ### 10. 查询没有学全所有课的同学的学号、姓名 ```sql select Student.S#, Student.Sname from Student, SC where Student.S# = SC.S# group by Student.S#, Student.Sname having count(C#) < (select count(C#) from Course) ``` **知识点:** - **子查询**:使用子查询来获取所有课程的数量。 - **HAVING子句**:用于筛选出未选修所有课程的学生。 ### 11. 查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名 ```sql select S#, Sname from Student, SC where Student.S# = SC.S# and C# in (select C# from SC where S# = '1001') ``` **知识点:** - **子查询**:使用子查询来获取学号为“1001”的学生所学课程的课程编号。 - **IN子句**:用于匹配学生所学的课程。 ### 12. 查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名 ```sql select distinct SC.S#, Sname from Student, SC where Student.S# = SC.S# and C# in (select C# from SC where S# = '001') ``` **知识点:** - **子查询**:使用子查询来获取学号为“001”的学生所学课程的课程编号。 - **DISTINCT**:用于去除重复的学号。 ### 13. 把“SC”表中“叶平”老师教的 这部分题目似乎没有完成,但从上下文可以推测可能涉及更新或删除操作,例如更新“叶平”老师教的所有学生的成绩,或者删除这些学生的记录等。这里我们假设是更新操作,比如更新所有“叶平”老师教的学生的成绩: ```sql UPDATE SC SET score = score + 10 FROM SC, Course, Teacher WHERE SC.C# = Course.C# AND Teacher.T# = Course.T# AND Teacher.Tname = '叶平'; ``` **知识点:** - **UPDATE语句**:用于更新数据表中的数据。 - **表连接**:使用表连接确保只更新“叶平”老师教的学生的成绩。 - **条件筛选**:使用`WHERE`子句来指定哪些记录需要被更新。 以上是对给定文件中的SQL笔试题目的解析及知识点总结。每一道题目都涉及到了SQL语言的不同方面,涵盖了子查询、表连接、聚合函数、分组查询等多个知识点,对于准备SQL面试的人来说是非常好的练习材料。
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 没用333333333333333333333333333333
- 基于Vue和SpringBoot的企业员工管理系统2.0版本设计源码
- 【C++初级程序设计·配套源码】第2期-基本数据类型
- 基于Java和Vue的kopsoftKANBAN车间电子看板设计源码
- 影驰战将PS3111 东芝芯片TT18G23AIN开卡成功分享,图片里面画线的选项很重要
- 【C++初级程序设计·配套源码】第1期-语法基础
- 基于JavaScript、CSS、HTML的简易DOM版飞机游戏设计源码
- 基于Java开发的日程管理FlexTime应用设计源码
- SM2258XT-BGA144-4BGA180-6L-R1019 三星KLUCG4J1CB B0B1颗粒开盘工具 , EC, 3A, 94, 43, A4, CA 七彩虹SL300这个固件有用
- GJB 5236-2004 军用软件质量度量