初学者入门基础经典SQL练习题(MySQL精简版)

1,有把一些题目放到一起,为了更好地对比分析;删除了一些简单的题目 …

1,有把一些题目放到一起,为了更好地对比分析;删除了一些简单的题目

2,练习过程中,为了更好地查看数据不同时返回的查询效果,所以中间会对数据做一些修改符合,请注意

建表的过程

插入数据

1、查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数

2、查询同时选修" 01 "课程和" 02 "课程的学生情况

3、查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )

4、查询不存在" 01 "课程但存在" 02 "课程的情况

5、查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息

6、查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息

PS:使用了group_concat( )函数,将分组后指定字段的值连接起来,感觉使用时最好对连接的字段排序,以免出错

7、检索" 01 "课程分数小于 60的学生,按分数降序排列学生

8、按平均成绩降序查询所有学生的课程成绩,按如下形式显示:学号、姓名、课程名、总成绩、课程数、平均成绩

9、查询「李」姓老师的数量

10、查询名字中含有「风」字的学生信息

运行结果:

11、查询学过「张三」老师授课的同学的信息

12、查询没学过"张三"老师讲授的任一门课程的学生姓名

13、查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

14、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

15、以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90

附加:

运行结果:

16、要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

运行结果:

17、按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺rank1、不保留名次空缺rank2

结果:

18、查询各科成绩前三名的记录

PS:这道题目就是在21,22题的基础上添加一个having子句,筛选名次rank<=3,即前三名

A:名次不连续时的前三名

运行结果:

B:名次连续时的前三名

运行结果:

19、查询学生的总成绩,并进行排名,总分重复时名次空缺保留和不保留的两种形式

结果:

20、查询出只选修两门课程的学生学号和姓名

21、检索至少选修两门课程的学生学号

22、查询没有学全所有课程的同学的信息

23、查询选修了全部课程的学生信息

24、统计每门课程的学生选修人数(超过 5 人的课程才统计)

25、查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数

26、查询每门课程成绩相同的学生信息、查询每个同学成绩相同的课程信息

A:每门课程下成绩相同的学生信息

运行结果:

B:不同课程下成绩相同的学生信息

运行结果:

27、查询 1990 年出生的学生名单

28、查询各学生的年龄,只按年份来算

29、按照出生日期来算,当前月日 < 出生年月的月日,则年龄减一

timestampdiff函数:日期或日期时间表达式之间的整数差。

语法:TIMESTAMPDIFF(interval,datetime1,datetime2) datetime2-datetime1

运行结果:

30、查询本周过生日的学生

特别注意: 本周过生日是指,出生日期放到现在的年份下,是哪一周过生日,而不是简单地出生日期的周数等于现在日期的周数就可以了,这一点要注意,很容易混淆。

31、查询下周过生日的学生

32、查询本月过生日的学生

33、查询下月过生日的学生

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/4913.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部