MySQL查询

本文主要使用三个示例表:员工表(emp)、部门表(dept)和职位表(job)。

部门表(dept),包含部门编号(id)和部门名称(name)字段,主键为部门编号。
职位表(job),包含职位编号(id)和职位名称(title)字段,主键为职位编号。
员工表(emp),包含员工编号(id)、员工姓名(name)、性别(sex)、年龄(age)、入职日期(hiredate)、月薪(salary)、奖金(bonus)以及电子邮箱(email)、部门编号(did)、职位编号(jid)、上级领导编号(mid)。主键为员工编号,部门编号字段是引用部门表的外键,职位编号字段是引用职位表的外键,上级领导编号字段是引用员工表自身的外键。

SQL查询
1、如何查看员工表中的姓名和性别?
select name,sex from tb_emp;

2、如何查看员工表中的所有字段?
select * From tb_emp;

3、如何知道每个员工一年的总收入?
select sum(salary) from tb_emp;

4、如何为查询结果指定别名?
select name 姓名,age 年龄 from tb_emp;

5、怎么查看女员工的信息?
select * from tb_emp where sex=‘女’;

6、如何查看月薪范围位于 8000 到 12000 之间的员工?
select * from tb_emp where salary BETWEEN 8000 and 12000;

7、查询员工中叫做“张三”、“李四” 或“张飞”的信息。
select * from tb_emp where name in(‘张三’,‘李四’,‘张飞’);

8、查询员工的姓名里有个“张”字的员工信息?
select * From tb_emp where name like ‘%张%’;

9、有些员工有奖金(bonus),另一些没有。怎么查看哪些员工有奖金?
select * from tb_emp where bonus is not null;

10、如何查看 2010 年 1 月 1 日之后入职的女员工呢?
select * from tb_emp where hiredate>‘2017-11-11’ and sex = ‘女’;

11、查看员工信息的时候,按照薪水从高到低显示?
select * from tb_emp order by salary desc;

12、薪水一样多的员工,希望再按照奖金的多少进行排序
select * from tb_emp order by salary desc,bonus desc;

13、员工的姓名是中文,如何按照姓名的拼音顺序进行排序?
select * from tb_emp order by convert(name using gbk);

14、薪水最高的 3 位员工都有谁?
select * From tb_emp order by salary desc limit 0,3;

15、工资信息比较敏感,不宜直接显示。按照范围显示收入水平,小于 10000 显示为“低收入”,大于等于 10000 并且小于 20000 显示为“中等收入”,大于 20000 显示为“高收入”。如何使用 SQL 实现?
select name,
case WHEN salary < 10000 then ‘低收入’
WHEN salary < 20000 then ‘中等收入’
else ‘高收入’
end as “薪水等级”
from tb_emp;

16、如何统计员工的数量、平均月薪、最高月薪、最低月薪以及月薪的总和?
select count(*),avg(salary),max(salary),min(salary) from tb_emp;

17、统计每个部门的员工的数量、平均月薪?
select count(*),avg(salary),did from tb_emp group by did;

18、如果只想查看平均月薪大于 10000 的部门,怎么实现?
select avg(salary),did from tb_emp group by did having (avg(salary)>10000);

19、查询月薪超过 5000 的,员工数量大于 5的部门?
select did,count() from tb_emp where salary > 5000 group by did HAVING (count()>2);

20、通过内连接查询员工名称及其所在的部门名称?
select emp.name,dept.name from tb_emp emp,tb_dept dept where emp.did = dept.id;

21、统计每个部门的员工数量,同时显示部门名称信息。如何使用连接查询实现?
select count(*),dept.name from tb_emp emp,tb_dept dept where emp.did = dept.id group by dept.name;

22、如何知道每个员工领导的姓名(mid)?
SELECT e.name AS “员工姓名”,
m.name AS “领导姓名”
FROM tb_emp e
LEFT JOIN tb_emp m ON e.mid=m.id

23、查询出月薪大于员工平均月薪的员工?
select * from tb_emp where salary >(select avg(salary) from tb_emp);

24、哪些员工的月薪高于本部门的平均值?
select emp.name,emp.salary from tb_emp emp,(select avg(salary) sa,did from tb_emp group by did) a where emp.did = a.did and emp.salary > sa;

25、显示员工信息时,增加一列,用于显示该员工所在部门的人数?
SELECT name,
(SELECT COUNT(*)
FROM tb_emp
WHERE did = e.did) AS dept_count
FROM tb_emp e;

26、找出哪些部门中有女性员工?
select distinct dept.name from tb_emp emp,tb_dept dept where emp.did = dept.id and emp.sex = ‘女’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值