MySQL基础之练习题
题目
现有班级、学生以及成绩三张表:
备注:表名称和字段名称可以参考表格内单词设置



根据表格信息,按要求完成下面SQL语句的编写:
1、使用SQL分别创建班级表、学生表以及成绩表的表结构,表内数据可以一条一条的插入也可以批量插入
2、查询每个班级中每一科的平均成绩,显示数据包括班级名称,课程以及平均分数,并按照班ID升序排列
3、查询所有同学的学生ID,姓名,性别以及总分,并按照成绩从高到低排序
4、查询课程成绩小于75分的学生ID,姓名,班级,课程以及分数
5、将李米米的数学成绩修改为88分
6、计算重点班中每一科的平均成绩,显示数据包括:重点班级ID,班级名称,课程,平均分数,按照降序排列
解答
create database if not exists mooc default character set 'utf8';
use mooc;
--班级表
create table if not exists class(
c_id int(3) unsigned zerofill auto_increment key comment '编号',
name varchar(20) not null comment '班级',
descrip varchar(20) not null comment '备注'
)engine=innodb charset=utf8;
--插入班级数据
insert class(name,descrip)
values('一年级一班','重点班'),
('一年级二班','重点班'),
('二年级一班','重点班'),
('二年级二班','普通班');
--学生表
create table if not exists student(
s_id int unsigned auto_increment key comment '编号',
name varchar(20) not null comment '姓名',
gender varchar(5) not null comment '性别',
class int(3) unsigned zerofill not null comment '班级'
)engine=innodb charset=utf8;
alter table student auto_increment=1001; --修改主键初始值
--插入学生数据
insert student(name,gender,class)
values('赵晓明','男','001'),
('王晓红','女','001'),
('张晓晓','女','001'),
('孙琪琪','女','003'),
('李米米','女','004'),
('赵晓刚','男','003'),
('张大宝','男','002'),
('张兰','女','004'),
('孙好','男','001');
--成绩表
create table if not exists score(
sc_id int(3) unsigned zerofill auto_increment key comment '编号',
s_id int unsigned not null comment '学生ID',
course varchar(10) not null comment '课程',
mark int unsigned not null comment '分数'
)engine=innodb charset=utf8;
--插入成绩数据
insert score(s_id,course,mark)
values(1001,'数学',98),
(1001,'语文',90),
(1001,'英语',97),
(1002,'数学',96),
(1002,'语文',88),
(1003,'语文',88),
(1002,'英语',91),
(1003,'数学',96),
(1003,'英语',86),
(1004,'数学',89),
(1004,'语文',82),
(1004,'英语',83),
(1005,'数学',75),
(1005,'语文',86),
(1005,'英语',77),
(1006,'数学',81),
(1006,'语文',77),
(1006,'英语',60),
(1007,'数学',89),
(1007,'语文',56),
(1007,'英语',70),
(1008,'数学',87),
(1008,'语文',55),
(1008,'英语',66),
(1009,'数学',78),
(1009,'语文',60),
(1009,'英语',52);
--添加外键约束
alter table student add foreign key(class) references class(c_id);
alter table score add foreign key(s_id) references student(s_id);
--查询每个班级中每一科的平均成绩,显示数据包括班级名称,
--课程以及平均分数,并按照班ID升序排列
select c.name as 班级名称,sc.course as 课程,avg(mark) as 平均分
from class as c
inner join student as st
on c.c_id = st.class
inner join score as sc
on st.s_id = sc.s_id
group by 班级名称,课程
order by 班级名称;
+------------+------+---------+
| 班级名称 | 课程 | 平均分 |
+------------+------+---------+
| 一年级一班 | 数学 | 92.0000 |
| 一年级一班 | 英语 | 81.5000 |
| 一年级一班 | 语文 | 81.5000 |
| 一年级二班 | 数学 | 89.0000 |
| 一年级二班 | 英语 | 70.0000 |
| 一年级二班 | 语文 | 56.0000 |
| 二年级一班 | 数学 | 85.0000 |
| 二年级一班 | 英语 | 71.5000 |
| 二年级一班 | 语文 | 79.5000 |
| 二年级二班 | 数学 | 81.0000 |
| 二年级二班 | 英语 | 71.5000 |
| 二年级二班 | 语文 | 70.5000 |
+------------+------+---------+
--查询所有同学的学生ID,姓名,
--性别以及总分,并按照成绩从高到低排序
select st.s_id as 学生ID,st.name as 姓名,st.gender as 性别,sum(mark) as 总分
from student as st
inner join score as sc
on st.s_id = sc.s_id
group by 学生ID
order by 总分 desc;
+--------+--------+------+------+
| 学生ID | 姓名 | 性别 | 总分 |
+--------+--------+------+------+
| 1001 | 赵晓明 | 男 | 285 |
| 1002 | 王晓红 | 女 | 275 |
| 1003 | 张晓晓 | 女 | 270 |
| 1004 | 孙琪琪 | 女 | 254 |
| 1005 | 李米米 | 女 | 238 |
| 1006 | 赵晓刚 | 男 | 218 |
| 1007 | 张大宝 | 男 | 215 |
| 1008 | 张兰 | 女 | 208 |
| 1009 | 孙好 | 男 | 190 |
+--------+--------+------+------+
--查询课程成绩小于75分的学生ID,姓名,班级,课程以及分数
select st.s_id as 学生ID,st.name as 姓名,st.class as 班级,sc.course as 课程,sc.mark as 分数
from student as st
inner join class as c
on c.c_id = st.class
inner join score as sc
on sc.s_id = st.s_id
where sc.mark < 75;
+--------+--------+------+------+------+
| 学生ID | 姓名 | 班级 | 课程 | 分数 |
+--------+--------+------+------+------+
| 1009 | 孙好 | 001 | 语文 | 60 |
| 1009 | 孙好 | 001 | 英语 | 52 |
| 1007 | 张大宝 | 002 | 语文 | 56 |
| 1007 | 张大宝 | 002 | 英语 | 70 |
| 1006 | 赵晓刚 | 003 | 英语 | 60 |
| 1008 | 张兰 | 004 | 语文 | 55 |
| 1008 | 张兰 | 004 | 英语 | 66 |
+--------+--------+------+------+------+
--将李米米的数学成绩修改为88分
update score set mark = 88 where s_id =
(select s_id from student where name = '李米米')
and course = '数学';
--计算重点班中每一科的平均成绩,显示数据包括:
--重点班级ID,班级名称,课程,平均分数,按照降序排列
select c.c_id as 重点班级ID,c.name as 班级名称,sc.course as 课程,avg(mark) as 平均分
from class as c
inner join student as st
on c.c_id = st.class
inner join score as sc
on st.s_id = sc.s_id
where c.descrip = '重点班'
group by 班级名称,课程;
+------------+------------+------+---------+
| 重点班级ID | 班级名称 | 课程 | 平均分 |
+------------+------------+------+---------+
| 001 | 一年级一班 | 数学 | 92.0000 |
| 001 | 一年级一班 | 语文 | 81.5000 |
| 001 | 一年级一班 | 英语 | 81.5000 |
| 002 | 一年级二班 | 数学 | 89.0000 |
| 002 | 一年级二班 | 语文 | 56.0000 |
| 002 | 一年级二班 | 英语 | 70.0000 |
| 003 | 二年级一班 | 数学 | 85.0000 |
| 003 | 二年级一班 | 语文 | 79.5000 |
| 003 | 二年级一班 | 英语 | 71.5000 |
+------------+------------+------+---------+
MySQL基础之练习题的更多相关文章
- Mysql基础教程:(七)MySQL基础练习
MySQL基础练习 一.创建student和score表 CREATE TABLE student (id INT(10) NOT NULL PRIMARY KEY ,name VARCHAR(20) ...
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- 【夯实Mysql基础】记一次mysql语句的优化过程
1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...
- MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- 【UOJ#228】基础数据结构练习题 线段树
#228. 基础数据结构练习题 题目链接:http://uoj.ac/problem/228 Solution 这题由于有区间+操作,所以和花神还是不一样的. 花神那道题,我们可以考虑每个数最多开根几 ...
- mysql 基础篇5(mysql语法---数据)
6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...
- MySQL 基础语句
MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
随机推荐
- 利用百度AI快速开发出一款“问答机器人”并接入小程序
先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之 ...
- redhat 常用命令记录
开机设置网络信息: vim /etc/rc.local 然后在里面输入设置信息 ifconfig eth0:0 192.168.127.130 netmask 255.255.255.0 up i ...
- 设置POP3/SMTP协议 手机绑定邮箱
例如设置企业邮箱 一.设置POP3/SMTP协议,意思是代收邮件致本地POP3接收邮件服务器:pop.qiye.qq.comSMTP发送邮件服务器:smtp.qiye.qq.com二.设置IMAP/S ...
- Elon Mask 写作常见的三种错误
(其实非常的文不对题,这篇文章和写作的并没有多大的关系,如果是想看关于写作的技巧,可以直接离开,节省您的时间) 这是原文 写作就是在把你自身的想法用正确,合适的方式表达出来,但是不正确的表达可能会导致 ...
- linux的常用命令(一)
目录切换命令: cd切换目录 cd /usr 切换到usr目录 cd .. 切换到上一层目录 cd ../.. 调到当前目录的上上两层 cd / 切换到系统根目录 cd ~ ...
- js-01-基础知识
一.JS变量的声明.数据类型和变量的转换 1.js变量声明关键字:var 注意:a:js变量区分大小写: b:js中字符串可使用双引号,也可使用单引号: c:js中可声明同名变量,控制台不会报错,但后 ...
- MAT分析android内存泄漏
转载请标明出处:https://www.cnblogs.com/tangZH/p/10955429.html 泄漏,泄漏,漏~ 内存泄漏怎么破,什么是内存泄漏?与内存溢出有什么区别? 内存泄漏(Mem ...
- cordova+vue 项目打包成APK应用遇到的问题和解决方法
公司前端界面用的是vue,我要嵌入到Android中生成App第一步:安装nodenode安装:直接进入官网https://nodejs.org/zh-cn/,下载最新版本安装.安装之后在命令行中使用 ...
- AndroidStudio集成.so遇见的问题:关于java.lang.UnsatisfiedLinkError: Native method not found
我调试的是串口程序,程序中需要继承.so文件,AndroidStudio中集成.so文件的方法是将存放.so的文件夹(通常这个文件夹名字是:armeabi)拷贝到app的libs文件夹中,然后在app ...
- QT程序自启动
故事背景:最近涉及到客户端更新自启动的一个问题,客户端检测到自己要更新,弹出一个更新界面,然后退出旧版本,启动新版本 技术调研:QProcess 直接上代码吧 qApp->quit(); QPr ...