当前位置:   article > 正文

MySQL 数据库练习题记录01_秋季选课人数最多的课程名称mysql

秋季选课人数最多的课程名称mysql

前言

本文主要记录B站视频链接的 MySQL 数据库练习题,这个老师讲课通俗易懂。

一、数据库练习题一

1.1 表结构

班级表 class:

在这里插入图片描述
学生表 student:

在这里插入图片描述
成绩表 score:

在这里插入图片描述
场景限制:

1.一个班级有多名学生,一名学生只属于一个班级
2.学生有可能没有成绩
  • 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
  • 2
  • 3
  • 4
  • 5

运行结果:

在这里插入图片描述

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 执行了两次查询(效率低,产生中间表)
  • 1
  • 2
  • 3

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
  • 2
  • 3
  • 4
  • 5
  • 6

运行结果:

在这里插入图片描述

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

运行结果:

在这里插入图片描述

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
  • 2
  • 3
  • 4
  • 5

运行结果:

在这里插入图片描述

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
  • 2
  • 3
  • 4
  • 5

运行结果:

在这里插入图片描述

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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

运行结果:

在这里插入图片描述

二、数据库练习题二

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;
  • 1
  • 2
  • 3
  • 4

2.4 查询学过李四老师所教所有课程的所有同学的学号,姓名

2.5 查询姓李的老师的个数

2.6 查询每门课程的选修人数(课程名称,学生数量)–存在没有人选的课程

2.7 删除“1002”同学的“1"课程的成绩

2.8 查询选修人数最多的课程 (课程id,课程名称,学生数量)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/554538
推荐阅读
相关标签
  

闽ICP备14008679号