设为首页 加入收藏

TOP

MySQL基础之练习题(一)
2019-10-09 20:02:35 】 浏览:86
Tags: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 |
+--------+--------
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Centos 6下使用cmake编译安装Mari.. 下一篇MySQL 配置环境

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目