DBA专题
DBA授课
DBA公开课
DBA训练营三天
01.Mysql基础入门-数据库简介
02.Mysql基础入门-部署与管理体系
03.MySQL主流版本版本特性与部署安装
04.Mysql-基础入门-用户与权限
05 MySQL-SQL基础2
06 SQL高级开发-函数
07 MySQL-SQL高级处理
08 SQL练习 作业
09 数据库高级开发2
10 Mysql基础入门-索引
11 Mysql之InnoDB引擎架构与体系结构
12 Mysql之InnoDB存储引擎
13 Mysql之日志管理
14 Mysql备份,恢复与迁移
15 主从复制的作用及重要性
16 Mysql Binlog Event详解
17 Mysql 主从复制
18 MySQL主从复制延时优化及监控故障处理
19 MySQL主从复制企业级场景解析
20 MySql主从复制搭建
21 MySQL高可用-技术方案选型
22 MySQL高可用-MHA(原理篇)
23 MySQL MHA实验
24 MySQL MGR
25 部署MySQL InnoDB Cluster
26 MySQL Cluster(MGR)
27 MySQL ProxySQL中间件
相信可能就有无限可能
-
+
首页
08 SQL练习 作业
# **Mysql 练习题** **使用的Mysql版本是5.7.22。** ## **练习数据** 数据表 --1.学生表 Student(SId,Sname,Sage,Ssex) - -SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 - -2.课程表 Course(CId,Cname,TId) --CId --课程编号,Cname 课程名称,TId 教师编号 - -3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 - -4.成绩表 SC(SId,CId,score) --SId 学生编号,CId 课程编号,score 分数 创建测试数据 >学生表 Student ```sql create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values('01' , '赵雷' , '1990-01-01' , '男'); insert into Student values('02' , '钱电' , '1990-12-21' , '男'); insert into Student values('03' , '孙风' , '1990-05-20' , '男'); insert into Student values('04' , '李云' , '1990-08-06' , '男'); insert into Student values('05' , '周梅' , '1991-12-01' , '女'); insert into Student values('06' , '吴兰' , '1992-03-01' , '女'); insert into Student values('07' , '郑竹' , '1989-07-01' , '女'); insert into Student values('09' , '张三' , '2017-12-20' , '女'); insert into Student values('10' , '李四' , '2017-12-25' , '女'); insert into Student values('11' , '李四' , '2017-12-30' , '女'); insert into Student values('12' , '赵六' , '2017-01-01' , '女'); insert into Student values('13' , '孙七' , '2018-01-01' , '女'); ``` >科目表 Course ```sql create table Course(CId varchar(10),Cnamen varchar(10),TId varchar(10)); insert into Course values('01' , '语文' , '02'); insert into Course values('02' , '数学' , '01'); insert into Course values('03' , '英语' , '03'); ``` >教师表 Teacher ```sql create table Teacher(TId varchar(10),Tname varchar(10)); insert into Teacher values('01' , '张三'); insert into Teacher values('02' , '李四'); insert into Teacher values('03' , '王五'); ``` > 成绩表 SC ```sql create table SC(SId varchar(10),CId varchar(10),score decimal(18,1)); insert into SC values('01' , '01' , 80); insert into SC values('01' , '02' , 90); insert into SC values('01' , '03' , 99); insert into SC values('02' , '01' , 70); insert into SC values('02' , '02' , 60); insert into SC values('02' , '03' , 80); insert into SC values('03' , '01' , 80); insert into SC values('03' , '02' , 80); insert into SC values('03' , '03' , 80); insert into SC values('04' , '01' , 50); insert into SC values('04' , '02' , 30); insert into SC values('04' , '03' , 20); insert into SC values('05' , '01' , 76); insert into SC values('05' , '02' , 87); insert into SC values('06' , '01' , 31); insert into SC values('06' , '03' , 34); insert into SC values('07' , '02' , 89); insert into SC values('07' , '03' , 98); ``` ![img](https://img.sunrisenan.com/img/2024/03/19/140618730) ## **练习题目** 1. 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 1.1 查询同时存在" 01 "课程和" 02 "课程的情况 1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null ) 1.3 查询不存在" 01 "课程但存在" 02 "课程的情况 2. 查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 3. 查询在 SC 表存在成绩的学生信息 4. 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null ) 4.1 查有成绩的学生信息 5. 查询「李」姓老师的数量 6. 查询学过「张三」老师授课的同学的信息 7. 查询没有学全所有课程的同学的信息 8. 查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息 9. 查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息 10. 查询没学过"张三"老师讲授的任一门课程的学生姓名 11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 12. 检索" 01 "课程分数小于 60,按分数降序排列的学生信息 13. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 14. 查询各科成绩最高分、最低分和平均分: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 15. 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 15.1 按各科成绩进行排序,并显示排名, Score 重复时合并名次 16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺 16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺 17. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比 18. 查询各科成绩前三名的记录 19. 查询每门课程被选修的学生数 20. 查询出只选修两门课程的学生学号和姓名 21. 查询男生、女生人数 22. 查询名字中含有「风」字的学生信息 23. 查询同名同性学生名单,并统计同名人数 24. 查询 1990 年出生的学生名单 25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列 26. 查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩 27. 查询课程名称为「数学」,且分数低于 60 的学生姓名和分数 28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况) 29. 查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数 30. 查询不及格的课程 31. 查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名 32. 求每门课程的学生人数 33. 成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩 34. 成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩 35. 查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 36. 查询每门功成绩最好的前两名 37. 统计每门课程的学生选修人数(超过 5 人的课程才统计)。 38. 检索至少选修两门课程的学生学号 39. 查询选修了全部课程的学生信息 40. 查询各学生的年龄,只按年份来算 41. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一 42. 查询本周过生日的学生 43. 查询下周过生日的学生 44. 查询本月过生日的学生 45. 查询下月过生日的学生 ## **参考答案** 首先,表结构用脑图输出出来,如下所示: ![img](https://img.sunrisenan.com/img/2024/03/19/141028466.png) 表结构 先进行数据准备,建表以及插入数据。 ![img](https://img.sunrisenan.com/img/2024/03/19/141050349.png) 建表 1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数 **解题思路:** 第一步:关键词有“课程编号”、“课程成绩”、“学生信息”,锁定使用表:学生表、成绩表。 第二步:给出学生信息及课程分数,通过主键sid关联学生表和课程表。 第三步:比较同一个学生不同课程的成绩,再关联一次课程表,利用sid、cid进行关联。 第四步:根据题目,用where比较分数筛选结果。 **考核知识点:**join,where **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141154430.png) 题1 1.1 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null ) **解题思路:** 第一步:关键词有“课程编号”、“学生编号”,锁定使用表:成绩表。 第二步:分别查询出存在" 01 "课程的学生和存在" 02 "课程的学生。 第三步:对两个子查询进行关联,用sid进行左联接。 **考核知识点:**where, 子查询,left join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141213418.png) 题1.1 1.2 查询同时存在01和02课程的情况 **解题思路:**同1.1,把left join改为join **考核知识点:**where, 子查询,join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141230915.png) 题1.2 1.3 查询选择了02课程但没有01课程的情况 **解题思路:**类似1.1,把left join改为right join **考核知识点:**where, 子查询,right join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141246909.png) 题1.3 **小结:**上面的题主要考察join、left join、right join。 2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 **解题思路:** 第一步:关键词有“平均成绩”、“学生编号”、“学生姓名”,锁定使用表:成绩表、学生表。 第二步:给出学生信息及课程分数,通过主键sid关联学生表和课程表。。 第三步:根据题目,用group by聚合计算出平均成绩,然后筛选出大于等于60分的学生。 **考核知识点:**join、group by、avg() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141302968.png) 题2 3.查询在 SC 表存在成绩的学生信息 **解题思路:** 第一步:关键词有“SC”、“学生信息”,锁定使用表:成绩表、学生表。 第二步:用EXISTS判断在SC表存在成绩的学生信息 **考核知识点:**EXISTS语句 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141318146.png) 题3 4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总和 **解题思路:** 第一步:关键词有“学生编号”、“学生姓名”、“选课总数”、“课程成绩”,锁定使用表:成绩表、学生表。 第二步:通过主键sid关联学生表成绩表,得到学生信息、学生成绩的宽表 第三步:根据题目,用group by聚合计算选课总数和总成绩 **考核知识点:**left join、group by、count()、sum()、ifnull() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141334137.png) 题4 5.查询「李」姓老师的数量 **解题思路:** 第一步:关键词有“老师的数量”,锁定使用表:教师表。 第二步:先筛选出「李」姓老师,再汇总统计「李」姓老师的数量 **考核知识点:**like、where、%、count() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141353047.png) 题5 6.查询学过「张三」老师授课的同学的信息 **解题思路:** 第一步:关键词有“老师”、“学生信息”,锁定使用表:教师表、学生表、成绩表、课程表。 第二步:通过sid关联学生表、成绩表,再通过cid关联课程表,最后通过tid关联教师表。 第三步:用where筛选出「张三」老师授课的同学的信息。 **考核知识点:**多重连接join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141419035.png) 题6 7.查询没有学全所有课程的同学的信息。 **解题思路:** 第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表、课程表。 第二步:先统计学生的课程数量,再筛选出小于所有课程数量的学生。 **考核知识点:**left join、group by、count() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141437110.png) 题7 8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息。 **解题思路:** 第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表。 第二步:先查询学号“01”的同学学习的课程。 第三步:通过sid关联学生表和成绩表,获取所有学生信息、课程信息。 第四步:用EXISTS筛选出至少1门课相同的同学信息。 **考核知识点:**left join、子查询、EXISTS **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141451836.png) 题8 9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息 **解题思路:** 第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表。 第二步:用“01”号的同学学习的课程左关联学生课程表,筛选出关链课程数一致的其他同学的sid 第三步:通过sid关联学生表和成绩表,获取完整的学生信息。 **考核知识点:**left join、子查询、group by **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141506958.png) 题9 10.查询没学过"张三"老师讲授的任一门课程的学生姓名 **解题思路:** 第一步:关键词有“老师”、“学生姓名”,锁定使用表:学生表、成绩表、课程表、教师表。 第二步:反向求解。先查询至少学过“张三”老师讲授的课程的学生sid 第三步:用NOT EXISTS筛选出不在第二步查询结果的学生信息,。 **考核知识点:**多重连接join、NOT EXISTS、子查询 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141522049.png) 题10 11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 **解题思路:** 第一步:关键词有“姓名”、“平均成绩”,锁定使用表:学生表、成绩表。 第二步:通过sid关联学生表和成绩表,得到学生成绩信息宽表 第三步:用group by聚合统计,having对聚合的结果进行筛选。 **考核知识点:**join、group by、having、case when语句、avg() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141540155.png) 题11 12.检索" 01 "课程分数小于 60,按分数降序排列的学生信息 **解题思路:** 第一步:关键词有“课程分数”、“学生信息”,锁定使用表:学生表、成绩表。 第二步:通过sid关联学生表和成绩表,得到学生成绩信息宽表 第三步:用where筛选" 01 "课程分数小于 60的记录,并按照分数降序排列。 **考核知识点:**join、where、order by **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141556333.png) 题12 13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 **解题思路:** 第一步:关键词有“平均成绩”,锁定使用表:成绩表。 第二步:用group by将学生课程的成绩由行转换为列并计算平均成绩。 第三步:按照平均成绩降序显示学生的所有课程的成绩以及平均成绩。 **考核知识点:**join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141609533.png) 题13 14.查询各科成绩最高分、最低分和平均分,以如下形式显示: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率, 优良率,优秀率 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 **解题思路: ** 第一步:关键词有“课程name”、“最高分”,锁定使用表:课程表、成绩表。 第二步:用group by聚合计算课程最高分、最低分、平均分。 第三步:用case语句判断及格、中等、优良、优秀,并结合group by计算。 **考核知识点:**join、group by、max()、min()、avg()、sum()、case when语句 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141629607.png) 题14 15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 **解题思路:** 第一步:关键词有“各科成绩”,锁定使用表:成绩表。 第二步:用rank()排名。 **考核知识点:**rank() over(partition by) **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141646864.png) 题15 15.1 按各科成绩进行行排序,并显示排名, Score 重复时合并名次 **解题思路:** 第一步:关键词有“各科成绩”,锁定使用表:成绩表。 第二步:用dense_rank()排名。 **考核知识点:**dense_rank() over(partition by) **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141702632.png) 题15.1 16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺 **解题思路:** 第一步:关键词有“总成绩”,锁定使用表:成绩表。 第二步:用group by统计学生的总成绩。 第三步:用left join自关联进行排名。 **考核知识点:**group by、 left join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141717709.png) 题16 16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺 **解题思路:** 第一步:关键词有“总成绩”,锁定使用表:成绩表。 第二步:用group by统计学生的总成绩。 第三步:用变量进行排名。 **考核知识点:**group by、变量 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141732675.png) 题16.1 17. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比 **解题思路:** 第一步:关键词有“各科成绩”、“课程名称”,锁定使用表:成绩表、课程表。 第二步:通过cid关联课程表和成绩表,得到课程、成绩信息宽表。 第三步:用group by聚合统计各分段的人数及百分比。 **考核知识点:**join、group by、case when条件语句 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141800343.png) 题17 18.查询各科成绩前三名的记录 **解题思路:** 第一步:关键词有“各科成绩”,锁定使用表:成绩表。 第二步:筛选出各科比当前成绩高的人数小于3的学生记为各科的前三名。 **考核知识点:**子查询 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141815424.png) 题18 19.查询每门课程被选修的学生数 **解题思路:** 第一步:关键词有“每门课程”、“学生数”,锁定使用表:课程表、成绩表。 第二步:用left join关联课程表和成绩表,再用group by分组汇总各科的学生数。 **考核知识点:**left join、group by **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141830911.png) 题19 20.查询出只选修两门课程的学生学号和姓名 **解题思路:** 第一步:关键词有“选修课程”、“学生姓名”,锁定使用表:学生表、成绩表。 第二步:用join关联学生表和成绩表,再用group by分组汇总每个学生的选修课程数,最后用having对分组汇总结果筛选出选修两门课程的学生。 **考核知识点:**join、group by、having **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141846305.png) 题20 21. 查询男生、女生人数 **解题思路:** 第一步:关键词有“男生、女生”,锁定使用表:学生表。 第二步:通过ssex学生表用group by分组汇总男生、女生人数。 **考核知识点:**group by **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141902923.png) 题21 22. 查询名字中含有「风」字的学生信息 **解题思路:** 第一步:关键词有“学生信息”,锁定使用表:学生表。 第二步:用like匹配姓名中含有风」字的学生。 **考核知识点:**like、% **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141918580.png) 题22 23查询同名同性学生名单,并统计同名人数 **解题思路:** 第一步:关键词有“学生名单”,锁定使用表:学生表。 第二步:使用group by,汇总同名同性人数,再用having筛选出大于1的记录 **考核知识点:**group by、having **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141933073.png) 题23 24.查询 1990 年出生的学生名单 **解题思路:** 第一步:关键词有“学生名单”,锁定使用表:学生表。 第二步:用where筛选出1990年出生的学生名单 **考核知识点:**where、year **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/141949059.png) 题24 25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编 号升序排列。 **解题思路:** 第一步:关键词有“平均成绩”,锁定使用表:成绩表。 第二步:用group by分组计算各科平均成绩,再用order by完成多列排序 **考核知识点:**group by、order by **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142002532.png) 题25 26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩 **解题思路:** 第一步:关键词有“平均成绩”、“学生姓名”,锁定使用表:成绩表、学生表。 第二步:用join关联学生表和成绩表 第三步:用group by分组汇总计算每个学生的平均成绩,再用having筛选平均成绩>=85的记录 **考核知识点:**join、group by、having **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142017650.png) 题26 27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数 **解题思路:** 第一步:关键词有“课程名称”、“分数”、“学生姓名”,锁定使用表:课程表、成绩表、学生表。 第二步:用join关联学生表、成绩表、课程表,再用where筛选 **考核知识点:**多重join、where **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142031847.png) 题27 28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况) **解题思路:** 第一步:关键词有“所有学生”、“分数”,锁定使用表:学生表、成绩表 第二步:用left join关联学生表、成绩表 **考核知识点:**left join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142050618.png) 题28 29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数 **解题思路:** 第一步:关键词有“课程成绩”、“姓名”、“课程名称”,锁定使用表:学生表、成绩表、课程表 第二步:用join关联学生表、成绩表、课程表,再筛选出课程成绩在70分以上的。 **考核知识点:**多重join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142108489.png) 题29 30.查询不及格的课程 **解题思路:** 第一步:关键词有“不及格的课程”,锁定使用表:成绩表、课程表 第二步:关联课程表和成绩表,再条件筛选出不及格的课程信息。 **考核知识点:**join、where、去重 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142124310.png) 题30 31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名 **解题思路:** 第一步:关键词有“课程编号”、“课程成绩”、“姓名”,锁定使用表:成绩表、学生表 第二步:关联成绩表和学生表,再条件筛选出结果。 **考核知识点:**join、where **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142138444.png) 题31 32.求每门课程的学生人数 **解题思路:** 第一步:关键词有“课程”、“学生人数”,锁定使用表:成绩表 第二步:用group by分组汇总各科的学生人数。 **考核知识点:**group by **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142155853.png) 题32 33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩 **解题思路:** 第一步:关键词有“成绩”、“「张三」老师”、“学生信息”,锁定使用表:成绩表、课程表、学生表、教师表 第二步:关联所有表,筛选出选修「张三」老师所授课程的学生。 第三步:因为成绩不重复,对学生成绩由高到低排序,筛选出第一行记录。 **考核知识点:**多重join、order by、limit **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142209470.png) 题33 34.成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生 信息及其成绩 **解题思路:** 第一步:关键词有“成绩”、“「张三」老师”、“学生信息”,锁定使用表:成绩表、课程表、学生表、教师表 第二步:关联所有表,筛选出选修「张三」老师所授课程的学生。 第三步:因为成绩有重复,先求出最高成绩,再匹配最高成绩对应的学生信息。 **考核知识点:**多重join、max() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142225084.png) 题34 35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 **解题思路:** 第一步:关键词有“成绩”,锁定使用表:成绩表 第二步:自联接,筛选出不同课程成绩相同的记录 **考核知识点:**自联接join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142241681.png) 题35 36. 查询每门成绩最好的前两名 **解题思路:** 第一步:关键词有“成绩”,锁定使用表:成绩表 第二步:自联接,筛选出各科低于自身成绩的人数为2的。 **考核知识点:**left join **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142257997.png) 题36 37. 统计每门课程的学生选修人数(超过 5 人的课程才统计)。 **解题思路:** 第一步:关键词有“选修人数”,锁定使用表:成绩表 第二步:先用group by分组汇总各科的选修人数,再条件筛选出超过5人的课程。 **考核知识点:**group by、having **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142314330.png) 题37 38.检索至少选修两门课程的学生学号 **解题思路:** 第一步:关键词有“两门课程”,锁定使用表:成绩表 第二步:先用group by分组汇总每个学生的选修课程数,再用having筛选出至少2门课程的学生学号 **考核知识点:**group by、having **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142342694.png) 题38 39.查询选修了全部课程的学生信息 **解题思路:** 第一步:关键词有“全部课程”、“学生信息”,锁定使用表:成绩表、课程表、学生表 第二步:关联学生表和成绩表,再用group by分组统计每个学生的选修课程数 第三步:最后用having筛选出等于全部课程数的学生信息。 **考核知识点:**join、 group by、having、子查询 **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142355535.png) 题39 40.查询各学生的年龄,只按年份来算 **解题思路:** 第一步:关键词有“学生的年龄”,锁定使用表:学生表 第二步:用year和now来统计 **考核知识点:**year、now **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142412871.png) 题40 41. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一 **解题思路:** 第一步:关键词有“出生日期”,锁定使用表:学生表 第二步:用timestampdiff()统计年龄 **考核知识点:**timestampdiff() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142433222.png) 题41 42.查询本周过生日的学生 **解题思路:** 第一步:关键词有“过生日”,锁定使用表:学生表 第二步:用week函数 **考核知识点:**week() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142451359.png) 题42 43. 查询下周过生日的学生 **解题思路:** 第一步:关键词有“过生日”,锁定使用表:学生表 第二步:用week函数 **考核知识点:**week() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142509047.png) 题43 44.查询本月过生日的学生 **解题思路:** 第一步:关键词有“过生日”,锁定使用表:学生表 第二步:用month函数 **考核知识点:**month() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142524022.png) 题44 45.查询下月过生日的学生 **解题思路:** 第一步:关键词有“过生日”,锁定使用表:学生表 第二步:用month函数 **考核知识点:**month() **答案:** ![img](https://img.sunrisenan.com/img/2024/03/19/142539021.png) 题45
李延召
2024年3月19日 14:26
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码