题目

现有班级、学生以及成绩三张表:

备注:表名称和字段名称可以参考表格内单词设置

根据表格信息,按要求完成下面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基础之练习题相关推荐

  1. mysql 基础选择题_mysql基础12(mysql练习题)

    一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询"生物"课程比"物理"课程成绩高的所有学生的学号: 3.查询平均成绩大于60 ...

  2. mysql rollup 排序_MySQL基础实用知识集合(二)

    上期小编给大家汇总介绍了mysql的6个基础的知识点,下面继续给大家分享一下另外7个知识点: 7.什么是死锁?怎么解决? 死锁:两个或多个事务相互占用了对方的锁,就会一直处于等待的状态. 常见的解决死 ...

  3. mysql as用法_MySQL基础学习总结

    数据分析无法离开SQL这一重要的工具,经过十天时间的学习,并完全以MySQL工具对上一节的数据分析岗位数据进行了分析,加强了操作训练,对这一工具使用有了基本的经验.本着以输出为手段检验学习效果,以温故 ...

  4. mysql列别_MySQL基础及CRUD

    大纲 1. 数据库的基本概念 2. MySQL数据库软件 1. 安装 2. 卸载 3. 配置 3. SQL 1) DDL(Data Definition Language)数据定义语言 2) DML( ...

  5. mysql 分组求和_MySql基础语法

    SQL语句分类 DDL:数据定义语言,用来定义数据库对象:库.表.列等 DML:数据操作语言,用来定义数据库记录(数据) DCL:数据控制语言,用来定义访问权限和安全级别: DQL:数据查询语言,用来 ...

  6. mysql 基础视图_MySQL基础(4) | 视图

    MySQL基础(4) | 视图 基本语法 1.创建 CREATE VIEW AS 语法说明如下. :指定视图的名称.该名称在数据库中必须是唯一的,不能与其他表或视图同名. :指定创建视图的 SELEC ...

  7. mysql 连接 分组_MySQL 基础 (四) 分组查询及连接查询

    MySQL 基础 (四) 分组查询及连接查询 MySQL 基础(四) 进阶 5 分组查询 语法: SELECT 分组函数, 列(要求出现在 group by 的后面) FROM 表 [where 筛选 ...

  8. mysql的知识_mysql基础知识

    mysql基础知识 1. MySQL是一个小型关系型数据库管理系统 2. MySQL的数据类型: 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DE ...

  9. mysql注释符号_MySQL基础知识(2021最新版教程)

    一.MySQL简介 MySQL是一种开放源代码的关系型数据库管理系统,使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General ...

最新文章

  1. java kill信号_kill 命令在Java应用中使用注意事项
  2. 界面设计方法(2) — 2.界面的布局
  3. 设置maven的阿里云代理
  4. XidianOJ 1090 爬树的V8
  5. 2012.4.18总结
  6. centos下的mysql安装
  7. 从几何解释SVD分解
  8. java缓存有几种_JAVA几种缓存技术介绍说明
  9. quarkus-contexts和DI介绍(原理)
  10. PMF镜像中文件提取/diskgenius做的镜像文件
  11. windTerm—Xshell、SercureCRT等替代品
  12. 2019年日本上班的你必须知道的社会保障和源泉所得税
  13. 针对笔记本双显卡安装ubuntu16.04双系统,开机只显示背景图解决办法
  14. Modern C++ 书籍推荐
  15. 指尖轻舞桌面:Slide On Desk - 主题风格制作指南
  16. c语言文件断电保护,.如果计算机突然断电,存放在()的信息会丢失。
  17. Nature综述:农业生态系统中的土壤结构和微生物组功能
  18. iOS手机自带浏览器Safari无法长按保存图片
  19. 论文阅读 Jointly Optimize Data Augmentation and Network Training
  20. 说说转义字符 “\”

热门文章

  1. 熊太行.关系攻略之---正确认识关系和自己
  2. 用计算机刻录光盘,教你怎么用电脑刻录数据光盘
  3. DevpTips_JupyterNotebook的基本命令IPython
  4. CODE[VS] 3837 台风 题解
  5. spark sql uv_使用Spark Streaming SQL进行PV/UV统计-阿里云开发者社区
  6. PS 2019 Mac版 自学入门系列(九)—— 复制小对象和纹理
  7. 关于我在刷题时用OJ判题发现的cout相较于printf严重超时的问题
  8. C语言二进制、八进制、十进制、十六进制深入探究
  9. 繁星课堂oracle,《繁星》课堂实录及点评
  10. 社区说 | Flutter 工程那些事儿