– 创建人力资源管理系统数据库

drop database if exists HRS;
create database HRS default charset utf8;

– 切换数据库上下文环境

use HRS;

– 删除表

drop table if exists TbEmp;
drop table if exists TbDept;

– 创建部门表

create table TbDept
(
deptno tinyint primary key, -- 部门编号
dname varchar(10) not null, -- 部门名称
dloc varchar(20) not null   -- 部门所在地
);

– 添加部门记录

insert into TbDept values (10, '会计部', '北京');
insert into TbDept values (20, '研发部', '成都');
insert into TbDept values (30, '销售部', '重庆');
insert into TbDept values (40, '运维部', '深圳');

– 创建员工表

create table TbEmp
(
empno int primary key,      -- 员工编号
ename varchar(20) not null, -- 员工姓名
job varchar(20) not null,   -- 员工职位
mgr int,                    -- 主管编号
sal int not null,           -- 员工月薪
comm int,                   -- 每月补贴
dno tinyint                 -- 所在部门编号
);

– 添加外键约束

alter table TbEmp add constraint fk_dno foreign key (dno) references TbDept(deptno);

– 添加员工记录

insert into TbEmp values (7800, '张三丰', '总裁', null, 9000, 1200, 20);
insert into TbEmp values (2056, '乔峰', '分析师', 7800, 5000, 1500, 20);
insert into TbEmp values (3088, '李莫愁', '设计师', 2056, 3500, 800, 20);
insert into TbEmp values (3211, '张无忌', '程序员', 2056, 3200, null, 20);
insert into TbEmp values (3233, '丘处机', '程序员', 2056, 3400, null, 20);
insert into TbEmp values (3251, '张翠山', '程序员', 2056, 4000, null, 20);
insert into TbEmp values (5566, '宋远桥', '会计师', 7800, 4000, 1000, 10);
insert into TbEmp values (5234, '郭靖', '出纳',5566, 2000, null, 10);
insert into TbEmp values (3344, '黄蓉', '销售主管', 7800, 3000, 800, 30);
insert into TbEmp values (1359, '胡一刀', '销售员', 3344, 1800, 200, 30);
insert into TbEmp values (4466, '苗人凤', '销售员', 3344, 2500, null, 30);
insert into TbEmp values (3244, '欧阳锋', '程序员', 3088, 3200, null, 20);
insert into TbEmp values (3577, '杨过', '会计', 5566, 2200, null, 10);
insert into TbEmp values (3588, '朱九真', '会计', 5566, 2500, null, 10);

– 查询薪资最高的员工姓名和工资

select ename, sal from tbemp order by sal desc limit 1;
select ename, sal from tbemp where sal=(select max(sal) from tbemp);

– 查询员工的姓名和年薪((月薪+补贴)*12)

select ename, (sal+ifnull(comm, 0))*12 as total from tbemp order by total desc;

– 查询有员工的部门的编号和人数

select dno, count(dno) from tbemp group by dno;

– 查询所有部门的名称和人数

select dname, ifnull(total, 0) as total from tbdept,
(select dno, count(dno) as total from tbemp group
by dno) tb_emp where deptno=dno;
select dname, ifnull(total, 0) as total from tbdept
left outer join (select dno, count(dno) as totalfrom tbemp group by dno) tb_temp on deptno=dno;

– 查询薪资最高的员工(Boss除外)的姓名和工资

select ename, sal from tbemp
where sal=(select max(sal) from tbempwhere mgr is not null);

– 查询薪水超过平均薪水的员工的姓名和工资

select ename, sal from tbemp where sal>
(select avg(sal) from tbemp);

– 查询薪水超过其所在部门平均薪水的员工的姓名、部门编号和工资

select ename, t1.dno, sal, sal-avgsal from tbemp t1inner join (select dno, avg(sal) as avgsal from tbemp group by dno) t2 on t1.dno=t2.dno and sal>avgsal;

– 查询部门中薪水最高的人姓名、工资和所在部门名称

select ename, sal, dname from tbdept inner join
(select ename, sal, t1.dno from tbemp t1
inner join (select dno, max(sal) as maxsal from tbempgroup by dno) t2 on t1.dno=t2.dno and sal=maxsal)tb_temp on deptno=dno;
select ename, sal, dname from tbemp t1 inner join
tbdept t2 on deptno=t1.dno inner join
(select dno, max(sal) as maxsal from tbemp group by dno)
t3 on deptno=t3.dno and sal=maxsal;

– 查询主管的姓名和职位

select ename, job from tbemp where empno in
(select distinct mgr from tbemp where mgr is not null);

– 推荐使用exists/not exists取代in/not in和distinct

select ename, job from tbemp t1 where exists
(select 'x' from tbemp t2 where t1.empno=t2.mgr);

– 查询薪资排名4~6名的员工姓名和工资

select ename, sal from tbemp order by sal desc limit 3,3;

mysql 人员查询总结相关推荐

  1. 浅谈 MySQL 子查询及其优化

    2019独角兽企业重金招聘Python工程师标准>>> 使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动 ...

  2. mysql慢查询开启及分析方法

    最近服务维护的公司的DB服务器,总是会出现问题,感觉需要优化一下了,登陆上去,发现慢查询日志都没有开,真是惭愧, 故果断加上慢查询日志,经过分析sql记录,发现问题很多,开发人员很多没有对sql优化, ...

  3. 用MySql的查询分析语法explain来优化查询和索引

    http://hi.baidu.com/wtnzone/item/beb83840a4971af4dd0f6c77 数据库最常见的操作就是查询了,我们经常要用"SELECT"语法对 ...

  4. lepus mysql 慢查询_天兔 -Lepus 慢查询分析平台配置

    想要实现慢查询查询分析,需要在被监控端安装percona-toolkit工具. 1.被监控端安装软件包 yum -y install perl-IO-Socket-SSL yum -y install ...

  5. mysql获取查询策略语句_MySQL数据库查询性能优化策略

    优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 通过对查询语句的分析,可以了解查询语句的执行 ...

  6. php多级查询,MySQL 多级查询

    MySQL 多级查询 需求1:在一个select 查询集中再次查询 SELECT * from (SELECT field from table) AS alias 需要注意后面的alias,在mys ...

  7. MySQL子查询的优缺点_浅谈mysql的子查询

    浅谈mysql的子查询 mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会 ...

  8. mysql怎么查询借阅相同图书_MySQL查询练习2

    MySQL查询练习2 导读: 本次MySQL的查询语句是本人考试题目: 所有题目都已通过: 该查询练习并没有sql文件进行检查: 如果有书写以及其他错误欢迎指出. 题目正文: 1.找出借书超过5本的借 ...

  9. 高级查询(二)+php中文网,MySQL高级查询方法之记录查询

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 此文章主要向大家描述的是MySQL高级查询方法之记录查询的实际操作步骤,以及对其实际操作过程中要用到的代码的详细描述,以下 ...

最新文章

  1. html %3c% page,page.html
  2. 真正开源的MongoDB的替代品,MangoDB!
  3. @scheduled 执行一次_springboot 定时任务Scheduled(注解方式实现)参数 说明
  4. python多线程爬虫 爬取多个网页_Python 多线程抓取网页
  5. Gartner:2013年SIEM市场分析(MQ)
  6. android控件使用大全,Android常见控件使用详解
  7. xpath的基本使用
  8. java并发临界资源管理
  9. 《Adobe Photoshop CS6中文版经典教程(彩色版)》—第1课1.4节在Photoshop中还原操作...
  10. mysql的json使用
  11. MapGIS67二次开发环境搭建
  12. Pascal基础(四)-常用函数和标准库
  13. 前端学习笔记之品优购项目(一) 3.15
  14. 从0到1,用张三的故事讲述一张中学生也能看懂的财务报表
  15. DZ先生怪谈国标28181-2016之目录查询
  16. Win10下蓝牙音箱无法调节音量的解决方案
  17. 洛谷p1282多米诺骨牌
  18. DES算法的matlab实现
  19. Office 2021 简体中文 正式版 零售版 32位和64位 官方镜像下载合集
  20. 算法学习:图的深度优先遍历(DFS)

热门文章

  1. 访问服务器上视频的文件,服务器上的视频文件
  2. 三大通信运营商天猫电器城开店
  3. 英读廊——吃醋的女朋友(A Jealous Girlfriend)
  4. Centos8 安装 MySQL8.0.26
  5. 基于Android Q 修改默认音量等级
  6. OOSE-人际关系管理系统设计开发
  7. 2022年最新版初级商业数字营销师钻展题库
  8. linux怎么设置自动缩进,配置Linux下vim自动缩进等功能
  9. SAP中国区总裁萧洁云:我加盟SAP的三个原因
  10. Java EE 快速入门