MySQL数据库练习题记录01
- 人工智能
- 2025-08-20 22:18:02

文章目录 前言一、数据库练习题一1.1 表结构1.2 查询所有学生的信息(学号,姓名,性别,班级名称)1.3 查询所有人(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数,数学分数)1.4 查询语文分数比张三高的学生(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数)1.5 查询各科成绩都合格(分数 >= 60)的学生(包括没有成绩的学生)的课程分数(学号,姓名,语文分数,数学分数)1.6 查询所有班级的人数(若没有人,人数显示为0)1.7 查询班级人数 >= 2的班级(班级编号,班级名称,人数) 二、数据库练习题二2.1 表结构2.2 查询课程1的成绩比课程2的成绩高的所有学生的信息2.3 查询平均成绩大于60分的同学的学号和平均成绩2.4 查询学过李四老师所教所有课程的所有同学的学号,姓名2.5 查询姓李的老师的个数2.6 查询每门课程的选修人数(课程名称,学生数量)--存在没有人选的课程2.7 删除“1002”同学的“1"课程的成绩2.8 查询选修人数最多的课程 (课程id,课程名称,学生数量) 前言
本文主要记录B站视频链接的 MySQL 数据库练习题,这个老师讲课通俗易懂。
一、数据库练习题一 1.1 表结构班级表 class:
学生表 student:
成绩表 score:
场景限制:
1.一个班级有多名学生,一名学生只属于一个班级 2.学生有可能没有成绩 1.2 查询所有学生的信息(学号,姓名,性别,班级名称)SQL 语句:
#查询的字段来自学生表student 和 班级表class这两表通过student的class_id相连接。 SELECT stu_no,stu_name,stu_gender,class_name FROM student stu JOIN class cla ON stu.class_id = cla.id运行结果:
1.3 查询所有人(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数,数学分数)本题中需要学生数据和成绩数据进行外连接查询,学生数据和班级数据需要进行内连接查询。sql逻辑:查询所有的学生分数,学生数据为主,每个学生都有唯一对应的班级数据,实现如下: 1.查询出所有学生的信息以及班级信息 – join 此时产生中间表,即执行一次查询。 2.拿上次的查询结果与score表进行外连接 --left/right join 又执行了一次查询
标准多表联查: select...from A join B join C on xx = xx and xx = xx 执行一次查询(效率高,不会产生中间表) select...from A join B on xx = xx join C on xx = xx 执行了两次查询(效率低,产生中间表)SQL 语句:
SELECT stu_no,stu_name,stu_gender,class_name,sco.chinese,sco.math FROM student stu JOIN class cla ON stu.class_id = cla.id LEFT JOIN score sco ON stu.id = sco.stu_id;运行结果:
1.4 查询语文分数比张三高的学生(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数)SQL 语句:
SELECT stu_no,stu_name,stu_gender,class_name,chinese FROM student stu JOIN class cla JOIN score sco ON stu.class_id = cla.id AND stu.id = sco.stu_id WHERE chinese > (SELECT chinese FROM student s JOIN score sc ON s.id = sc.stu_id WHERE stu_name = '张三');运行结果:
1.5 查询各科成绩都合格(分数 >= 60)的学生(包括没有成绩的学生)的课程分数(学号,姓名,语文分数,数学分数)SQL 语句:
SELECT stu_no,stu_name,chinese,math FROM student s JOIN score sc ON s.id = sc.stu_id WHERE chinese >= 60 AND math >= 60;运行结果:
1.6 查询所有班级的人数(若没有人,人数显示为0)SQL 语句:
SELECT c.id,class_name,COUNT(stu_no) FROM class c LEFT JOIN student s ON c.id = s.class_id GROUP BY c.id运行结果:
1.7 查询班级人数 >= 2的班级(班级编号,班级名称,人数)SQL 语句:
SELECT class_id,class_name,COUNT(stu_no) num FROM student s JOIN class c ON s.class_id = c.id GROUP BY class_id HAVING num >= 2;运行结果:
二、数据库练习题二 2.1 表结构课程表 course: 学生表 student: 成绩表 score: 教师表 teacher
2.2 查询课程1的成绩比课程2的成绩高的所有学生的信息 2.3 查询平均成绩大于60分的同学的学号和平均成绩SQL 语句:
SELECT s_no,AVG(score) avg_score FROM score GROUP BY s_no HAVING avg_score > 60; 2.4 查询学过李四老师所教所有课程的所有同学的学号,姓名 2.5 查询姓李的老师的个数 2.6 查询每门课程的选修人数(课程名称,学生数量)–存在没有人选的课程 2.7 删除“1002”同学的“1"课程的成绩 2.8 查询选修人数最多的课程 (课程id,课程名称,学生数量)MySQL数据库练习题记录01由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“MySQL数据库练习题记录01”