单表练习
1. 查询出部门编号为d2019060011的所有员工
2. 所有财务总监的姓名、编号和部门编号。
3. 找出奖金高于工资的员工。
4. 找出奖金高于工资40%的员工。
5 找出部门编号为d2019090011中所有财务总监,和部门编号为d2019060011中所有财务专员的详细资料。
6. 找出部门编号为d2019090001中所有总经理,部门编号为d2019090011中所有财务总监,还有即不是总经理又不是销售总监但其工资大或等于4000的所有员工详细资料。
7有奖金的工种。
8无奖金或奖金低于1000的员工。
9. 查询名字由两个字组成的员工。
10.查询2020年入职的员工。
11. 查询所有员工详细信息,用编号升序排序。
12. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序。
13. 查询每个部门的平均工资。
14. 求出每个部门的雇员数量。
15. 查询每种工作的最高工资、最低工资、人数.
16. 列出最低薪金大于4000的各种工作及从事此工作的员工人数。
17. 统计各部门工资总和,显示部门编号和该部门雇员的月工资的总和,并且要满足该部门雇员的月工资合计大于6000,输出结果按月工资的合计升序排列。
多表练习
1. 列出所有员工的姓名及其直接上级的姓名。
2. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
3. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
4. 列出在财务部工作的员工的姓名,假定不知道财务部的部门编号。
5. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导。
6. 列出与陈超从事相同工作的所有员工及部门名称。
7. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。
8. 列出薪金高于在财务部工作员工平均薪金的员工姓名和薪金、部门名称。
单表练习答案
1.查询出部门编号为d2019060011的所有员工。
show databases; use mysql_1; show tables; select * from employee where department_no = "d2019060011";
效果图:

2. 所有财务总监的姓名、编号和部门编号。
select name,number,department_no from employee where job = '财务总监';
效果图:

3. 找出奖金高于工资的员工。
select * from employee where bonus > salary;
效果图:

4. 找出奖金高于工资40%的员工。
select * from employee where bonus > salary * 0.4;
效果图:

5 找出部门编号为d2019090011中所有财务总监,和部门编号为d2019060011中所有财务专员的详细资料。
select * from employee where (department_no = 'd2019090011' and job = '财务总监') -> or (department_no = 'd2019060011' and job = '财务专员');
效果图:

6. 找出部门编号为d2019090001中所有总经理,部门编号为d2019090011中所有财务总监,还有即不是总经理又不是销售总监但其工资大或等于4000的所有员工详细资料。
select * from employee where (department_no = 'd2019090001' and job = '总经理') -> or (department_no = 'd2019090011' and job = '财务总监') -> or (job <> '总经理' and job <> '销售总监' and salary >= 4000);
效果图:

7有奖金的工种。
select job from employee where bonus is not null;
效果图:

8无奖金或奖金低于1000的员工。
select * from employee where bonus is null or bonus <= 1000;
效果图:

9. 查询名字由两个字组成的员工。
select * from employee where name like '__';
效果图:

10.查询2020年入职的员工。
select * from employee where hire_date like '2020%';
效果图:

11. 查询所有员工详细信息,用编号升序排序。
select * from employee order by number asc;
效果图:

12. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序。
select * from employee order by salary desc,hire_date asc;
效果图:

13. 查询每个部门的平均工资。
select department_no,avg(salary) from employee group by department_no;
效果图:

14. 求出每个部门的雇员数量。
select department_no,count(id) from employee group by department_no;
效果图:

15. 查询每种工作的最高工资、最低工资、人数.
select max(salary),min(salary),count(id) from employee group by job;
效果图:

16. 列出最低薪金大于4000的各种工作及从事此工作的员工人数。
select job,count(id) from employee group by job having min(salary) > 4000;
效果图:

17. 统计各部门工资总和,显示部门编号和该部门雇员的月工资的总和,并且要满足该部门雇员的月工资合计大于6000,输出结果按月工资的合计升序排列。
select department_no,sum(salary) from employee group by department_no having sum(salary) > 6000 order by sum(salary) asc;
效果图:

多表练习答案
1. 列出所有员工的姓名及其直接上级的姓名。
select e1.name,e2.name from employee e1 -> join employee e2 -> on e1.number = e2.leader_no;
效果图:

2. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
select e1.number as 员工编号, e1.name as 员工姓名, d.name as 部门名称 from employee e1 -> join employee e2 -> on e1.leader_no = e2.number -> join department d -> on e1.department_no = d.number -> where e1.hire_date < e2.hire_date;
效果图:

3. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
select * from employee e -> right join department d -> on e.department_no = d.number;
效果图:

select d.name,e.* from employee e -> right join department d -> on e.department_no = d.number;
效果图:

4. 列出在财务部工作的员工的姓名,假定不知道财务部的部门编号。
select name from employee where department_no in (select number from department where name = '财务部');
也可以是以下代码: select e.name from employee e -> join department d -> on e.department_no = d.number -> where d.name = '财务部';
效果图:

5. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导。
select e1.number as 员工编号, e1.name as 员工姓名, e1.job as 职位, e1.salary as 薪资, e1.hire_date as 入职日期, d.name as 部门名称, e2.name as 直接上级姓名 from employee e1 -> join department d -> on e1.department_no = d.number -> left join employee e2 -> on e1.leader_no = e2.number -> where e1.salary > (select avg(salary) from employee);
效果图:

6. 列出与陈超从事相同工作的所有员工及部门名称。
select e.number as 员工编号,e.name as 员工姓名,e.job as 职位,d.name as 部门名称 -> from employee e -> join department d -> on e.department_no = d.number -> where e.job = (select job from employee where name = '陈超') and e.name != '陈超';
效果图:

7. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。
select res.department_no,d.name,d.location,res.c from (select department_no,count(*) c from employee group by department_no) res -> join department d -> on res.department_no = d.number;
效果图:

8. 列出薪金高于在财务部工作员工平均薪金的员工姓名和薪金、部门名称。
select e.name as 员工姓名,e.salary as 薪金,d.name as 部门名称 -> from employee e -> join department d -> on e.department_no = d.number -> where e.salary > (select avg(e2.salary) from employee e2 -> join department d2 on e2.department_no = d2.number where d2.name = '财务部');
效果图:

总结
到此这篇关于mysql单表与多表练习题目及答案总结大全的文章就介绍到这了,更多相关mysql单表与多表练习题目内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论