MySQL测试题和答案

书写前,先将文件名改为自己的名字

1、现在有一张全校学生信息表stu_table,这张表存储了每位学生的id、name(姓名)、class(班级)、sex(性别)以及一些其他信息,现在我们想知道每个班有多少学生,该怎么实现呢?

idnameclasssex
4张文华二班
3李思雨一班
1王小凤一班
7李智瑞三班
6徐文杰二班
8徐雨秋三班
5张青云二班
9孙皓然三班
10李春山三班
2刘诗迪一班

最后运行结果如下:

classstu_num
二班3
一班3
三班4

写出合理的SQL语句(包含创建表与数据的过程):

create database zhang;
create table stu_table(id int ,name char(6),class char(4),sex char (4))
default charset=utf8;
insert into stu_table values(4,'张文华','二班','男');
insert into stu_table values(3,'李思雨','一班','女');
insert into stu_table values(1,'王小凤','一班','女');
insert into stu_table values(7,'李智瑞','三班','男');
insert into stu_table values(6,'徐文杰','二班','男');
insert into stu_table values(8,'徐雨秋','三班','男');
insert into stu_table values(5,'张青云','二班','女');
insert into stu_table values(9,'孙皓然','三班','男');
insert into stu_table values(10,'李春山','三班','男');
insert into stu_table values(2,'刘诗迪','一班','女');
​
 ...............
select class,count(name) as 'stu_num' from stu_table group by class  order by 'stu_num';

2、还是前面的全校学生信息表stu_table,现在我们要获取id从小到大排序以后第3-5位的同学的信息。

最后运行结果如下:

idnameclasssex
3李思雨一班
4张文华二班
5张青云二班

写出合理的SQL语句:

select id,name,sex,class from stu_table  order by id limit 2,3;

3、现在有一张学生成绩表score_table,这张表存储了每位学生的id、name(姓名)、class(班级)、score(成绩),现在我们想要把挂科(成绩小于60)的同学信息筛选出来。

score_table表如下所示:

idnameclassscore
1王小凤一班88
2刘诗迪一班70
3李思雨一班92
4张文华二班55
5张青云二班77
6徐文杰二班77
7李智瑞三班56
8徐雨秋三班91
9孙皓然三班93
10李春山三班57

最后运行结果如下:

idnameclassscore
4张文华二班55
7李智瑞三班56
10李春山三班57

写出合理的SQL语句(包含创建表与数据的过程):

create database zhang;
create table stu_table(id int ,name char(6),class char(4),score int);
default charset=utf8;
insert into score_table values(1,'王小凤','一班',88);
insert into score_table values(2,'刘诗迪','一班',70);
insert into score_table values(3,'李思雨','一班',92);
insert into score_table values(4,'张文华','二班',55);
insert into score_table values(5,'张青云','二班',77);
insert into score_table values(6,'徐文杰','二班',77);
insert into score_table values(7,'李智瑞',三班',56);
insert into score_table values(8,'徐雨秋','三班',91);
insert into score_table values(9,'孙皓然','三班',93);
insert into score_table values(10,'李春山','三班',57);
 ...............
select * from score_table where score < 60;

4、现在有一个月份销售额记录表sale_table,这个表记录了每年每月的销售额,现在我们想看下今年(2019年),月销售额最高涨幅是多少?

sale_table表如下所示:

year_nummonth_numsales
201912854
201924772
201933542
201941336
201953544
201812293
201822559
201832597
201842363

最后运行结果如下:

max_salesmin_saleschagrowth
4772133634362.5719

写出合理的SQL语句(包含创建表与数据的过程):

create database zhang;
create table sale_table(year_num year,month_num int,sales int);
insert into sale_table values(19,1,2854);
insert into sale_table values(19,2,4772);
insert into sale_table values(19,3,3542);
insert into sale_table values(19,4,1336);
insert into sale_table values(19,5,3544);
insert into sale_table values(18,1,2293);
insert into sale_table values(18,2,2559);
insert into sale_table values(18,3,2597);
insert into sale_table values(18,4,2363);
...........
select max(sales) as 'max_sales',min(sales) as 'min_sales',max(sales)-min(sales) as 'cha',(max(sales)-min(sales))/min(sales) as 'growth'  from sale_table;

5、现在有一张学生信息表table1,这张表记录了id、name等一些其他信息;还有另外一张获奖名单表table2,这张表记录了获奖学生的id和name。现在我们想要通过table1获取获奖学生的更多信息。

table1表如下所示:

idname
1王小凤
2刘诗迪
3李思雨
4张文华
5张青云
6徐文杰
7李智瑞
8徐雨秋
9孙皓然

table2表如下所示:

idname
1王小凤
2刘诗迪
3李思雨
7李智瑞
8徐雨秋
9孙皓然

最后运行结果如下:

idname
1王小凤
2刘诗迪
3李思雨
7李智瑞
8徐雨秋
9孙皓然

写出合理的SQL语句(包含创建表与数据的过程):

create table table1(id int,name char(20)) default charset=utf8;
create table table2(id int,name char(20)) default charset=utf8;
​
​
insert into table1 values(1,'王小凤');
insert into table1 values(2,'刘诗迪');
insert into table1 values(3,'李思雨');
insert into table1 values(4,'张文华');
insert into table1 values(5,'张青云');
insert into table1 values(6,'徐文杰');
insert into table1 values(7,'李智瑞');
insert into table1 values(8,'徐雨秋');
insert into table1 values(9,'孙皓然');
​
​
insert into table2 values(1,'王小凤');
insert into table2 values(2,'刘诗迪');
insert into table2 values(3,'李思雨');
insert into table2 values(7,'李智瑞');
insert into table2 values(8,'徐雨秋');
insert into table2 values(9,'孙皓然');
​
​
 select table2.id,table2.name from table1 right join table2 on table1.name=table2.name;

6、现在有一张学生科目表course_table,这张表存储了每一位学生的id、name(姓名)、grade(年级)、course(选修课程)以及一些其他信息,现在我们想知道哪门课被学生选的人数最多?

course_table表如下所示:

idnamegradecourse
1王小凤一年级心理学
2刘诗迪二年级心理学
3李思雨三年级社会学
4张文华一年级心理学
5张青云二年级心理学
6徐文杰三年级计算机
7李智瑞一年级心理学
8徐雨秋二年级计算机
9孙皓然三年级社会学
10李春山一年级社会学

最后结果如下:

coursestu_num
心理学5

写出合理的SQL语句(包含创建表与数据的过程):

create table course_table(id int,name char(6),grade char(4),course char (6)) default charset=utf8;
insert into course_table values(1,'王小凤','一年级','心理学');
insert into course_table values(2,'刘诗迪','二年级','心理学');
insert into course_table values(3,'李思雨','三年级','社会学');
insert into course_table values(4,'张文华','一年级','心理学');
insert into course_table values(5,'张青云','二年级','心理学');
insert into course_table values(6,'徐文杰','三年级','计算机');
insert into course_table values(7,'李智瑞','一年级','心理学');
insert into course_table values(8,'徐雨秋','二年级','计算机');
insert into course_table values(9,'孙皓然','三年级','社会学');
insert into course_table values(10,'李春山','一年级','社会学');
...............
select course,count(course) as 'stu_num' from course_table group by course limit 0,1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤城小巷少年游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值