MySQL经典练习题+解题思路(二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文讲解了MySQL练习题的解题思路和答案

MySQL练习题(二)

9、取得薪水最高的前五名员工

select 
    e.ename,e.sal
from 
    emp e
order by
    e.sal desc
limit 0,5;

在这里插入图片描述

10、取得薪水最高的第六到第十名员工

select 
    e.ename,e.sal
from 
    emp e
order by
    e.sal desc
limit 5,5;

在这里插入图片描述

11、取得最后入职的 5 名员工

select ename,hiredate from emp order by hiredate desc limit 5;

在这里插入图片描述

12、取得每个薪水等级有多少员工

(1)求每个人的薪水等级

select e.ename,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;

在这里插入图片描述

(2)将结果按照等级分组 求每个级别的数量 (可以不用视图,我这里只是想试一试)

create view view_empgrade as select e.ename,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal; #用结果创建一个视图
select grade,count(*) from view_empgrade group by grade;

在这里插入图片描述

13、面试题:(*)

有 3 个表 S(学生表),C(课程表),SC(学生选课表)
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
问题:

13.1、找出没选过“黎明”老师的所有学生姓名。

select s.sname from s join sc on s.sno = sc.sno join c on c.cno = sc.cno where c.cteacher <> '黎明';

13.2、列出 2 门以上(含2 门)不及格学生姓名及平均成绩。

(1)先找出所有grade小于60的学生

select s.sname,sc.grade from s join sc on s.sno = sc.sno where sc.grade < 60;

(2)将这个结果按学生的姓名按照条件进行分组,并求平均值

select 
    s.sname,avg(sc.grade) 
from 
    s 
join 
    sc 
on
    s.sno = sc.sno 
where 
    sc.grade < 60
group by
    s.sname
having
    count(*) >= 2;

13.3、既学过 1 号课程又学过 2 号课所有学生的姓名。

(1)先找出学过1号课程的学生

select s.sname from s join sc on s.sno = sc.sno where sc.cno = 1;

(2)再从上面结果查找学过2号课程的学生

select 
    s.sname 
from 
    s 
join 
    sc 
on 
    s.sno = sc.sno 
where 
    in(select s.sname from s join sc on s.sno = sc.sno where sc.cno = 1) and sc.cno = 1;

14、列出所有员工及领导的姓名

select 
    a.ename '员工', b.ename '领导' 
from 
    emp a
left join
    emp b
on 
    a.mgr = b.empno;

在这里插入图片描述

15、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称

(1)找出受雇日期早于其直接上级的所有员工的编号,姓名

select 
    a.empno,a.ename,a.deptno
from 
    emp a
left join
    emp b
on
    a.mgr = b.empno
where
    a.hiredate < b.hiredate;

在这里插入图片描述

(2)找出上面结果对应的部门名称

select
    t.empno,t.ename,d.dname
from(
    select 
        a.empno empno,a.ename ename,a.deptno deptno
    from 
        emp a
    left join
        emp b
    on
        a.mgr = b.empno
    where
        a.hiredate < b.hiredate
    ) t
join
    dept d
on 
    t.deptno = d.deptno;

在这里插入图片描述

16、 列出部门名称和这些部门的员工信息的同时列出那些没有员工的部门

select 
    e.*,d.dname
from
    emp e
right join
    dept d
on
    e.deptno = d.deptno;

在这里插入图片描述

OPERATIONS这个部门没有员工

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-2
MySQL子查询篇(精选20道子查询练习题)
61 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-1
MySQL子查询篇(精选20道子查询练习题)
73 0
|
SQL 关系型数据库 MySQL
MySQL数据库练习题(单表查询,多表关联查询)(一)
MySQL数据库练习题(单表查询,多表关联查询)
491 0
|
4月前
|
关系型数据库 MySQL 数据库
MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能
MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能
|
关系型数据库 MySQL 数据库
MySQL数据库练习题(单表查询,多表关联查询)(二)
MySQL数据库练习题(单表查询,多表关联查询)(二)
196 0
|
4月前
|
存储 关系型数据库 MySQL
mysql数据库练习题(涵盖几乎所有知识点)
mysql数据库练习题(涵盖几乎所有知识点)
|
11月前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-2
MySQL子查询篇(精选20道子查询练习题)
79 0
|
11月前
|
SQL 关系型数据库 MySQL
MySQL子查询篇(精选20道子查询练习题)-1
MySQL子查询篇(精选20道子查询练习题)
210 0
|
关系型数据库 MySQL
MySQL练习题
MySQL练习题
74 0
|
关系型数据库 MySQL
MySQL练习题(单表多表查询)
MySQL练习题(单表多表查询)
194 0
下一篇
无影云桌面