参赛话题:学习笔记
个人主页:BoBooY的CSDN博客_Java领域博主 前言:在上一期中我们讲解了MySQL的入门知识点,但理论总还是要通过实践来印证,学了再多不练也是白费,这一期我们讲解MySQL的一些经典查询例题帮助大家巩固已学知识点,如在做题过程中有知识点的遗忘,可以参考往期文章: MySQL入门知识点(上):https://blog.csdn.net/qq_58233406/article/details/127143537 MySQL入门知识点(下):https://blog.csdn.net/qq_58233406/article/details/127144532 文章目录
select
d.deptno,d.dname,count(e.ename) '人数'
from
emp e
join
dept d
on
e.deptno = d.deptno
group by
e.deptno
having
count(e.ename) >=5;
select
*
from
emp e
where
sal > (select sal from emp where ename = "SMITH");
(1)找出所有CLERK的人员
select
*
from
emp
where
job = 'CLERK';
(2)找上面结果对应的部门名称
select
e.ename,e.job,d.dname,d.deptno
from
emp e
join
dept d
on
e.deptno = d.deptno
where
job = 'CLERK';
(3)查询每个部门的人数
select
deptno,count(*)
from
emp e
group by
deptno;
(4)将这两个结果合并
select
t1.dname,t1.job,t1.deptno,t2.num
from(
select
e.ename ename,e.job job,d.dname dname,d.deptno deptno
from
emp e
join
dept d
on
e.deptno = d.deptno
where
job = 'CLERK'
) t1
join(
select
deptno,count(*) num
from
emp e
group by
deptno
) t2
on
t1.deptno = t2.deptno;
select
job,count(*) '人数'
from
emp
group by
job
having
min(sal) > 1500;
select
ename,job
from
emp
where
deptno in(select deptno from dept where dname = 'SALES');
(1)查询公司平均薪资
select avg(sal) from emp;
(2)查询高于上面结果的人员信息
select a.ename,a.deptno,b.ename,a.sal
from emp a
left join emp b
on a.mgr = b.empno
where a.sal > (select avg(sal) from emp);
(3)将上面结果与dept表进行内连接
select
t.ename,t.deptno,t.sal,d.dname,t.mgr
from
(select a.ename ename,a.deptno deptno,b.ename mgr,a.sal sal
from emp a
left join emp b
on a.mgr = b.empno
where a.sal > (select avg(sal) from emp)) t
join
dept d
on
t.deptno = d.deptno;
(4)将上面结果与salgrade表进行内连接
select
t.ename,t.deptno,t.sal,d.dname,t.mgr '领导',s.grade
from
(select a.ename ename,a.deptno deptno,b.ename mgr,a.sal sal
from emp a
left join emp b
on a.mgr = b.empno
where a.sal > (select avg(sal) from emp)) t
join
dept d
on
t.deptno = d.deptno
join
salgrade s
on
t.sal between s.losal and s.hisal;
select
e.ename,e.job,d.dname
from
emp e
join
dept d
on
e.deptno = d.deptno
where
e.job = (select job from emp where ename = 'SCOTT') and e.ename <> 'SCOTT';
select
ename,sal
from
emp
where
sal in(select distinct sal from emp where deptno = 30) and deptno <> 30;
select
e.ename,e.sal,d.dname
from
emp e
join
dept d
on
e.deptno = d.deptno
where
e.sal > (select max(sal) from emp e where e.deptno = 30);
练习题集:
MySQL经典练习题+解题思路(一):https://blog.csdn.net/qq_58233406/article/details/127150051
MySQL经典练习题+解题思路(二):https://blog.csdn.net/qq_58233406/article/details/127162943
MySQL经典练习题+解题思路(四):https://blog.csdn.net/qq_58233406/article/details/127167682