翼度科技»论坛 编程开发 mysql 查看内容

MySQL基础练习题

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
MySQL基础查询练习

前提准备

使用ddl语句创建数据库

student表格:
  1. create table student(
  2.         id int PRIMARY KEY COMMENT 'id主键',
  3.         `name` varchar(20) COMMENT '名称',
  4.         gender TINYINT(2) COMMENT '性别 1男 2女 3保密',
  5.         age TINYINT UNSIGNED COMMENT '年龄',
  6.         birthday date COMMENT '出生日期',
  7.         createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  8.         updateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间' on update CURRENT_TIMESTAMP,
  9.         isdel bit(1) DEFAULT 0 COMMENT '是否删除 0未删除 1已删除 默认未删除'
  10. );
复制代码
成绩表格score:
  1. create table score (
  2.         id int PRIMARY KEY COMMENT 'id主键',
  3.         sid int COMMENT '学生id',
  4.         course VARCHAR(20) COMMENT '课程名称',
  5.         score DECIMAL(4,1) COMMENT '成绩'
  6. );
复制代码
因为下面插入数据没默认写id的值,所以id为自增的列。
添加自增:
  1. alter table student
  2. MODIFY column id int  auto_increment COMMENT 'id 主键';
复制代码
  1. alter table score
  2. MODIFY column id int  auto_increment COMMENT 'id 主键';
复制代码
初始化数据

数据下载地址:https://qyboke.lanzoue.com/iuhpB0n0rfij
score表:

student表格:

答题

3.查询学生张三的所有成绩:
  1. SELECT s.name,sc.course,sc.score from student s ,score sc where s.id = sc.sid and s.name = '李云';
复制代码
4.查询平均成绩大于60的学生信息:
  1. SELECT DISTINCT s.* from student s ,score sc where s.id = sc.sid and sc.score > 60;
复制代码
5.查询有成绩的学生信息:
  1. SELECT DISTINCT s.* FROM student s right JOIN score sc on s.id = sc.sid;
复制代码
6. 查询不及格的学生信息:
  1. SELECT DISTINCT s.* ,sc.course, sc.score
  2. FROM student s right JOIN score sc
  3. on s.id = sc.sid
  4. where sc.score < 60;
复制代码
7. 查询各科成绩最高分、最低分和平均分:
  1. SELECT DISTINCT score.course, max(score) over(PARTITION by score.course) '最高分',
  2. min(score) over(PARTITION by score.course) '最低分',
  3. avg(score) over(PARTITION by score.course) '平均分'
  4. FROM score
复制代码
8. 查询各科成绩第一名的记录:
  1. SELECT DISTINCT sc.course, max(score) over(PARTITION by sc.course) '最高分'
  2. FROM score sc left JOIN student s
  3. on sc.sid = s.id
复制代码
9. 查询男生、女生人数:
  1. SELECT DISTINCT student.gender, count(student.gender) over(PARTITION by student.gender)
  2. from student
复制代码
10. 查询 1990 年出生的学生名单:
  1. SELECT * from student where YEAR(birthday) = 1990;
复制代码
11. 查询平均成绩大于等于 70 的所有学生的姓名、出生日期和平均成绩:
  1. SELECT DISTINCT s.name,s.birthday,avg(sc.score) over(PARTITION by s.`name`)
  2. from score sc left JOIN student s
  3. on sc.sid = s.id
复制代码
12. 查询mbatis 成绩低于60的学生信息:
  1. SELECT s.*,sc.course,sc.score
  2. FROM score sc LEFT JOIN student s
  3. on sc.sid = s.id
  4. where sc.course = 'mybatis' and sc.score < 60;
复制代码
13. 查询学生成绩前三名的记录:
  1. SELECT ROW_NUMBER() over() as '成绩总分排名', sco.name,sco.allSco
  2. FROM (
  3.         SELECT DISTINCT s.`name` ,sum(sc.score) over(PARTITION by s.`name`) 'allSco'
  4. from score sc LEFT JOIN student s
  5. on sc.sid = s.id ORDER BY allSco desc LIMIT 3
  6. ) as sco
复制代码
14. 查询学生信息及年龄:
  1. SELECT stu.name,stu.birthday,(YEAR(CURRENT_DATE) - YEAR(stu.birthday)) '年龄'
  2. from student stu
复制代码
15. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩:
  1. SELECT DISTINCT s.`name` ,sum(sc.score) over(PARTITION by s.`name`) 'allScore',avg(sc.score) over(PARTITION by s.name) '平均成绩'
  2. from score sc LEFT JOIN student s
  3. on sc.sid = s.id ORDER BY allScore desc
复制代码
16. 查询未成年的学生信息:
  1. SELECT stu.name, stu.birthday, (year(CURRENT_DATE) - year(birthday)) 'age'
  2. from student stu
  3. where (year(CURRENT_DATE) - year(birthday)) < 18
复制代码
17. 查询姓张的 学生信息:
  1. SELECT *
  2. FROM student
  3. where name like '张%'
复制代码
18. 查询本月过生日的学生信息:
  1. SELECT *
  2. FROM student
  3. where MONTH(CURRENT_DATE) = MONTH(birthday)
复制代码
19. 查询本周过生日的学生信息
  1. SELECT *
  2. FROM student
  3. WHERE WEEKOFYEAR(CURRENT_DATE) = WEEKOFYEAR(birthday)
复制代码
20. 按各科成绩进行排序,并显示排名
  1. SELECT stu.name , sc.course ,sc.score, RANK() over(PARTITION by sc.course ORDER BY sc.score desc)
  2. from score sc LEFT JOIN student stu
  3. on sc.sid = stu.id
复制代码
来源:https://www.cnblogs.com/beishanqingyun/p/17106196.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具