MySQL数据库大王小练习

单表查询

1.查询出部门编号为D2019060011的所有员工

mysql 复制代码
mysql> use test ;
Database changed
mysql> SELECT * FROM `employee`
    -> WHERE department_NO = 'D2019060011' ;
+----+-------------+-----------+--------------+-------------+------------+---------+--------+-------+---------------+
| id | number      | name      | job          | leader_NO   | hire_date  | salary  | bonus  | level | department_NO |
+----+-------------+-----------+--------------+-------------+------------+---------+--------+-------+---------------+
|  5 | E2019050001 | 马金花    | 财务总监     | E2018010001 | 2019-01-01 | 3800.00 | 500.00 |     6 | D2019060011   |
|  6 | E2019050018 | 李昌贵    | 财务专员     | E2019050001 | 2019-04-21 | 2800.00 | 800.00 |     4 | D2019060011   |
+----+-------------+-----------+--------------+-------------+------------+---------+--------+-------+---------------+
2 rows in set (0.00 sec)

2.所有财务总监的姓名、编号和部门编号

mysql 复制代码
mysql> SELECT name , number , department_NO FROM `test`.`employee` WHERE `job` LIKE '%财务总监%' ;
+-----------+-------------+---------------+
| name      | number      | department_NO |
+-----------+-------------+---------------+
| 马金花    | E2019050001 | D2019060011   |
| 刘六一    | E2019020017 | D2019090011   |
+-----------+-------------+---------------+
2 rows in set (0.00 sec)

3.找出奖金高于工资的员工。

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> WHERE bonus > salary ;
+----+-------------+-----------+-----------+-----------+------------+---------+---------+-------+---------------+
| id | number      | name      | job       | leader_NO | hire_date  | salary  | bonus   | level | department_NO |
+----+-------------+-----------+-----------+-----------+------------+---------+---------+-------+---------------+
|  1 | E2018010001 | 吴所为    | 总经理    | NULL      | 2018-01-01 | 2800.00 | 4000.00 |     9 | D2019060001   |
|  2 | E2018070003 | 韩金龙    | 总经理    | NULL      | 2018-07-01 | 2800.00 | 4000.00 |     8 | D2019090001   |
|  3 | E2018060002 | 王黎明    | 总经理    | NULL      | 2018-06-01 | 2800.00 | 4000.00 |     8 | D2019060002   |
|  4 | E2018020002 | 龚爱国    | 总经理    | NULL      | 2018-02-01 | 2800.00 | 4000.00 |     8 | D2020010001   |
+----+-------------+-----------+-----------+-----------+------------+---------+---------+-------+---------------+
4 rows in set (0.00 sec)

4.找出奖金高于工资40%的员工。

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> WHERE bonus > salary * 0.4;
+----+-------------+-----------+--------------+-------------+------------+---------+---------+-------+---------------+
| id | number      | name      | job          | leader_NO   | hire_date  | salary  | bonus   | level | department_NO |
+----+-------------+-----------+--------------+-------------+------------+---------+---------+-------+---------------+
|  1 | E2018010001 | 吴所为    | 总经理       | NULL        | 2018-01-01 | 2800.00 | 4000.00 |     9 | D2019060001   |
|  2 | E2018070003 | 韩金龙    | 总经理       | NULL        | 2018-07-01 | 2800.00 | 4000.00 |     8 | D2019090001   |
|  3 | E2018060002 | 王黎明    | 总经理       | NULL        | 2018-06-01 | 2800.00 | 4000.00 |     8 | D2019060002   |
|  4 | E2018020002 | 龚爱国    | 总经理       | NULL        | 2018-02-01 | 2800.00 | 4000.00 |     8 | D2020010001   |
| 11 | E2019060009 | 廖云龙    | 技术总监     | E2018010001 | 2019-06-01 | 4800.00 | 2000.00 |     7 | D2019060012   |
+----+-------------+-----------+--------------+-------------+------------+---------+---------+-------+---------------+
5 rows in set (0.00 sec)

5 找出部门编号为D2019090011中所有财务总监,和部门编号为D2019060011中所有财务专员的详细资料。

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> WHERE (department_NO = 'D2019090011' AND job = '财务总监')
    -> OR (department_NO = 'D2019060011' AND job = '财务专员') ;
+----+-------------+-----------+--------------+-------------+------------+---------+---------+-------+---------------+
| id | number      | name      | job          | leader_NO   | hire_date  | salary  | bonus   | level | department_NO |
+----+-------------+-----------+--------------+-------------+------------+---------+---------+-------+---------------+
|  6 | E2019050018 | 李昌贵    | 财务专员     | E2019050001 | 2019-04-21 | 2800.00 |  800.00 |     4 | D2019060011   |
| 15 | E2019020017 | 刘六一    | 财务总监     | E2018070003 | 2019-02-16 | 3800.00 | 1000.00 |     6 | D2019090011   |
+----+-------------+-----------+--------------+-------------+------------+---------+---------+-------+---------------+
2 rows in set (0.00 sec)

6.找出部门编号为D2019090001中所有总经理部门编号为D2019090011中所有财务总监,还有即不是总经理又不是销售总监但其工资大或等于4000的所有员工详细资料。

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> WHERE (department_NO = 'D2019090001' AND job = '总经理')
    -> OR (department_NO = 'D2019090011' AND job = '财务总监')
    -> OR (job NOT IN ('总经理' ,'销售总监') AND salary >= 4000) ;
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| id | number      | name      | job             | leader_NO   | hire_date  | salary  | bonus   | level | department_NO |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
|  2 | E2018070003 | 韩金龙    | 总经理          | NULL        | 2018-07-01 | 2800.00 | 4000.00 |     8 | D2019090001   |
| 11 | E2019060009 | 廖云龙    | 技术总监        | E2018010001 | 2019-06-01 | 4800.00 | 2000.00 |     7 | D2019060012   |
| 12 | E2019120021 | 刘盛会    | 研发工程师      | E2019060009 | 2019-12-11 | 4800.00 |  500.00 |     5 | D2019060012   |
| 13 | E2019020001 | 马明全    | 高级工程师      | E2019060009 | 2019-02-01 | 4800.00 | 1000.00 |     6 | D2019060012   |
| 15 | E2019020017 | 刘六一    | 财务总监        | E2018070003 | 2019-02-16 | 3800.00 | 1000.00 |     6 | D2019090011   |
| 16 | E2020020012 | 陈超      | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 |  500.00 |     5 | D2019060012   |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
6 rows in set (0.00 sec)

7有奖金的工种。

mysql 复制代码
mysql> SELECT DISTINCT job FROM employee
    -> WHERE bonus IS NOT NULL AND bonus > 0;
+-----------------+
| job             |
+-----------------+
| 总经理          |
| 技术总监        |
| 研发工程师      |
| 行政专员        |
| 财务专员        |
| 财务总监        |
| 销售经理        |
| 高级工程师      |
+-----------------+
8 rows in set (0.00 sec)

8无奖金或奖金低于1000的员工

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> WHERE bonus IS NULL OR bonus < 1000 ;
+----+-------------+-----------+-----------------+-------------+------------+---------+--------+-------+---------------+
| id | number      | name      | job             | leader_NO   | hire_date  | salary  | bonus  | level | department_NO |
+----+-------------+-----------+-----------------+-------------+------------+---------+--------+-------+---------------+
|  5 | E2019050001 | 马金花    | 财务总监        | E2018010001 | 2019-01-01 | 3800.00 | 500.00 |     6 | D2019060011   |
|  6 | E2019050018 | 李昌贵    | 财务专员        | E2019050001 | 2019-04-21 | 2800.00 | 800.00 |     4 | D2019060011   |
|  7 | E2019100011 | 王建国    | 网络管理员      | E2018010001 | 2019-10-01 | 3200.00 |   NULL |     5 | D2019060013   |
|  8 | E2019110004 | 黎锦熙    | 网络管理员      | E2019100011 | 2019-11-01 | 3200.00 |   NULL |     5 | D2019060013   |
|  9 | E2020020023 | 繁茂森    | 销售专员        | E2019060005 | 2020-02-01 | 2800.00 |   0.00 |     4 | D2019060014   |
| 10 | E2019060005 | 张善民    | 销售经理        | E2018010001 | 2019-06-01 | 2800.00 | 500.00 |     6 | D2019060014   |
| 12 | E2019120021 | 刘盛会    | 研发工程师      | E2019060009 | 2019-12-11 | 4800.00 | 500.00 |     5 | D2019060012   |
| 14 | E2019120015 | 李意      | 行政专员        | E2018070003 | 2019-12-20 | 2800.00 | 500.00 |     4 | D2019090001   |
| 16 | E2020020012 | 陈超      | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 | 500.00 |     5 | D2019060012   |
+----+-------------+-----------+-----------------+-------------+------------+---------+--------+-------+---------------+
9 rows in set (0.00 sec)

9.查询名字由两个字组成的员工

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> WHERE `name` LIKE '__' ;
+----+-------------+--------+-----------------+-------------+------------+---------+--------+-------+---------------+
| id | number      | name   | job             | leader_NO   | hire_date  | salary  | bonus  | level | department_NO |
+----+-------------+--------+-----------------+-------------+------------+---------+--------+-------+---------------+
| 14 | E2019120015 | 李意   | 行政专员        | E2018070003 | 2019-12-20 | 2800.00 | 500.00 |     4 | D2019090001   |
| 16 | E2020020012 | 陈超   | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 | 500.00 |     5 | D2019060012   |
+----+-------------+--------+-----------------+-------------+------------+---------+--------+-------+---------------+
2 rows in set (0.00 sec)

10.查询2020年入职的员工。

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> WHERE hire_date BETWEEN '2020-01-01' AND '2020-12-31' ;
+----+-------------+-----------+-----------------+-------------+------------+---------+--------+-------+---------------+
| id | number      | name      | job             | leader_NO   | hire_date  | salary  | bonus  | level | department_NO |
+----+-------------+-----------+-----------------+-------------+------------+---------+--------+-------+---------------+
|  9 | E2020020023 | 繁茂森    | 销售专员        | E2019060005 | 2020-02-01 | 2800.00 |   0.00 |     4 | D2019060014   |
| 16 | E2020020012 | 陈超      | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 | 500.00 |     5 | D2019060012   |
+----+-------------+-----------+-----------------+-------------+------------+---------+--------+-------+---------------+
2 rows in set (0.00 sec)

11.查询所有员工详细信息,用编号升序排序

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> ORDER BY number ASC;
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| id | number      | name      | job             | leader_NO   | hire_date  | salary  | bonus   | level | department_NO |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
|  1 | E2018010001 | 吴所为    | 总经理          | NULL        | 2018-01-01 | 2800.00 | 4000.00 |     9 | D2019060001   |
|  4 | E2018020002 | 龚爱国    | 总经理          | NULL        | 2018-02-01 | 2800.00 | 4000.00 |     8 | D2020010001   |
|  3 | E2018060002 | 王黎明    | 总经理          | NULL        | 2018-06-01 | 2800.00 | 4000.00 |     8 | D2019060002   |
|  2 | E2018070003 | 韩金龙    | 总经理          | NULL        | 2018-07-01 | 2800.00 | 4000.00 |     8 | D2019090001   |
| 13 | E2019020001 | 马明全    | 高级工程师      | E2019060009 | 2019-02-01 | 4800.00 | 1000.00 |     6 | D2019060012   |
| 15 | E2019020017 | 刘六一    | 财务总监        | E2018070003 | 2019-02-16 | 3800.00 | 1000.00 |     6 | D2019090011   |
|  5 | E2019050001 | 马金花    | 财务总监        | E2018010001 | 2019-01-01 | 3800.00 |  500.00 |     6 | D2019060011   |
|  6 | E2019050018 | 李昌贵    | 财务专员        | E2019050001 | 2019-04-21 | 2800.00 |  800.00 |     4 | D2019060011   |
| 10 | E2019060005 | 张善民    | 销售经理        | E2018010001 | 2019-06-01 | 2800.00 |  500.00 |     6 | D2019060014   |
| 11 | E2019060009 | 廖云龙    | 技术总监        | E2018010001 | 2019-06-01 | 4800.00 | 2000.00 |     7 | D2019060012   |
|  7 | E2019100011 | 王建国    | 网络管理员      | E2018010001 | 2019-10-01 | 3200.00 |    NULL |     5 | D2019060013   |
|  8 | E2019110004 | 黎锦熙    | 网络管理员      | E2019100011 | 2019-11-01 | 3200.00 |    NULL |     5 | D2019060013   |
| 14 | E2019120015 | 李意      | 行政专员        | E2018070003 | 2019-12-20 | 2800.00 |  500.00 |     4 | D2019090001   |
| 12 | E2019120021 | 刘盛会    | 研发工程师      | E2019060009 | 2019-12-11 | 4800.00 |  500.00 |     5 | D2019060012   |
| 16 | E2020020012 | 陈超      | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 |  500.00 |     5 | D2019060012   |
|  9 | E2020020023 | 繁茂森    | 销售专员        | E2019060005 | 2020-02-01 | 2800.00 |    0.00 |     4 | D2019060014   |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
16 rows in set (0.00 sec)

12.查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序。

mysql 复制代码
mysql> SELECT * FROM `employee`
    -> ORDER BY salary DESC , hire_date ASC ;
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| id | number      | name      | job             | leader_NO   | hire_date  | salary  | bonus   | level | department_NO |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| 13 | E2019020001 | 马明全    | 高级工程师      | E2019060009 | 2019-02-01 | 4800.00 | 1000.00 |     6 | D2019060012   |
| 11 | E2019060009 | 廖云龙    | 技术总监        | E2018010001 | 2019-06-01 | 4800.00 | 2000.00 |     7 | D2019060012   |
| 12 | E2019120021 | 刘盛会    | 研发工程师      | E2019060009 | 2019-12-11 | 4800.00 |  500.00 |     5 | D2019060012   |
| 16 | E2020020012 | 陈超      | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 |  500.00 |     5 | D2019060012   |
|  5 | E2019050001 | 马金花    | 财务总监        | E2018010001 | 2019-01-01 | 3800.00 |  500.00 |     6 | D2019060011   |
| 15 | E2019020017 | 刘六一    | 财务总监        | E2018070003 | 2019-02-16 | 3800.00 | 1000.00 |     6 | D2019090011   |
|  7 | E2019100011 | 王建国    | 网络管理员      | E2018010001 | 2019-10-01 | 3200.00 |    NULL |     5 | D2019060013   |
|  8 | E2019110004 | 黎锦熙    | 网络管理员      | E2019100011 | 2019-11-01 | 3200.00 |    NULL |     5 | D2019060013   |
|  1 | E2018010001 | 吴所为    | 总经理          | NULL        | 2018-01-01 | 2800.00 | 4000.00 |     9 | D2019060001   |
|  4 | E2018020002 | 龚爱国    | 总经理          | NULL        | 2018-02-01 | 2800.00 | 4000.00 |     8 | D2020010001   |
|  3 | E2018060002 | 王黎明    | 总经理          | NULL        | 2018-06-01 | 2800.00 | 4000.00 |     8 | D2019060002   |
|  2 | E2018070003 | 韩金龙    | 总经理          | NULL        | 2018-07-01 | 2800.00 | 4000.00 |     8 | D2019090001   |
|  6 | E2019050018 | 李昌贵    | 财务专员        | E2019050001 | 2019-04-21 | 2800.00 |  800.00 |     4 | D2019060011   |
| 10 | E2019060005 | 张善民    | 销售经理        | E2018010001 | 2019-06-01 | 2800.00 |  500.00 |     6 | D2019060014   |
| 14 | E2019120015 | 李意      | 行政专员        | E2018070003 | 2019-12-20 | 2800.00 |  500.00 |     4 | D2019090001   |
|  9 | E2020020023 | 繁茂森    | 销售专员        | E2019060005 | 2020-02-01 | 2800.00 |    0.00 |     4 | D2019060014   |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
16 rows in set (0.00 sec)

13.查询每个部门的平均工资,

mysql 复制代码
mysql> SELECT department_NO,AVG(salary) AS 平均工资 FROM employee GROUP BY department_NO;
+---------------+--------------+
| department_NO | 平均工资     |
+---------------+--------------+
| D2019060001   |  2800.000000 |
| D2019060002   |  2800.000000 |
| D2019060011   |  3300.000000 |
| D2019060012   |  4650.000000 |
| D2019060013   |  3200.000000 |
| D2019060014   |  2800.000000 |
| D2019090001   |  2800.000000 |
| D2019090011   |  3800.000000 |
| D2020010001   |  2800.000000 |
+---------------+--------------+
9 rows in set (0.00 sec)

14.求出每个部门的雇员数量

mysql 复制代码
mysql> SELECT department_NO, COUNT(number)
    -> AS 雇员数量
    -> FROM employee
    -> GROUP BY department_NO;
+---------------+--------------+
| department_NO | 雇员数量     |
+---------------+--------------+
| D2019060001   |            1 |
| D2019060002   |            1 |
| D2019060011   |            2 |
| D2019060012   |            4 |
| D2019060013   |            2 |
| D2019060014   |            2 |
| D2019090001   |            2 |
| D2019090011   |            1 |
| D2020010001   |            1 |
+---------------+--------------+
9 rows in set (0.00 sec)

15.查询每种工作的最高工资、最低工资、人数

mysql 复制代码
mysql> SELECT
    -> job ,
    -> MAX(salary) AS 最高工资,
    -> MIN(salary) AS 最低工资,
    -> COUNT(number) AS 人数
    -> FROM employee
    -> GROUP BY job;
+-----------------+--------------+--------------+--------+
| job             | 最高工资     | 最低工资     | 人数   |
+-----------------+--------------+--------------+--------+
| 总经理          |      2800.00 |      2800.00 |      4 |
| 技术总监        |      4800.00 |      4800.00 |      1 |
| 研发工程师      |      4800.00 |      4200.00 |      2 |
| 网络管理员      |      3200.00 |      3200.00 |      2 |
| 行政专员        |      2800.00 |      2800.00 |      1 |
| 财务专员        |      2800.00 |      2800.00 |      1 |
| 财务总监        |      3800.00 |      3800.00 |      2 |
| 销售专员        |      2800.00 |      2800.00 |      1 |
| 销售经理        |      2800.00 |      2800.00 |      1 |
| 高级工程师      |      4800.00 |      4800.00 |      1 |
+-----------------+--------------+--------------+--------+
10 rows in set (0.00 sec)

16.列出最低薪金大于4000的各种工作及从事此

工作的员工人数。

mysql 复制代码
mysql> SELECT
    -> job ,
    -> MIN(salary) AS 最低工资,
    -> COUNT(number) AS 人数
    -> FROM employee
    -> GROUP BY job
    -> HAVING MIN(salary) > 4000;
+-----------------+--------------+--------+
| job             | 最低工资     | 人数   |
+-----------------+--------------+--------+
| 技术总监        |      4800.00 |      1 |
| 研发工程师      |      4200.00 |      2 |
| 高级工程师      |      4800.00 |      1 |
+-----------------+--------------+--------+
3 rows in set (0.00 sec)

17.统计各部门工资总和,显示部门编号和该部门雇员的月工资的总和,并且要满足该部门雇员的月工资合计大于6000,输出结果按月工资的合计升序排列。

mysql 复制代码
mysql> SELECT
    -> department_NO,
    -> SUM(salary) AS 工资总和
    -> FROM employee
    -> GROUP BY department_NO
    -> HAVING SUM(salary) > 6000
    -> ORDER BY 工资总和 ASC;
+---------------+--------------+
| department_NO | 工资总和     |
+---------------+--------------+
| D2019060013   |      6400.00 |
| D2019060011   |      6600.00 |
| D2019060012   |     18600.00 |
+---------------+--------------+
3 rows in set (0.00 sec)

多表练习

1.列出所有员工的姓名及其直接上级的姓名

mysql 复制代码
mysql> SELECT
    ->   e.name AS '员工姓名',
    ->   m.name AS '上级姓名'
    -> FROM employee e
    -> LEFT JOIN employee m
    ->   ON e.leader_NO = m.number;
+--------------+--------------+
| 员工姓名     | 上级姓名     |
+--------------+--------------+
| 吴所为       | NULL         |
| 韩金龙       | NULL         |
| 王黎明       | NULL         |
| 龚爱国       | NULL         |
| 马金花       | 吴所为       |
| 李昌贵       | 马金花       |
| 王建国       | 吴所为       |
| 黎锦熙       | 王建国       |
| 繁茂森       | 张善民       |
| 张善民       | 吴所为       |
| 廖云龙       | 吴所为       |
| 刘盛会       | 廖云龙       |
| 马明全       | 廖云龙       |
| 李意         | 韩金龙       |
| 刘六一       | 韩金龙       |
| 陈超         | 廖云龙       |
+--------------+--------------+
16 rows in set (0.00 sec)

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

mysql 复制代码
mysql> SELECT
    ->    e.number AS '员工编号',
    ->    e.name AS '姓名',
    ->  d.name AS '部门名称'
    ->  FROM employee e
    ->  JOIN employee m
    ->    ON e.leader_NO = m.number
    ->  JOIN department d
    ->    ON e.department_NO = d.number
    ->  WHERE e.hire_date < m.hire_date;
+--------------+-----------+--------------+
| 员工编号     | 姓名      | 部门名称     |
+--------------+-----------+--------------+
| E2019020001  | 马明全    | 技术部       |
+--------------+-----------+--------------+
1 row in set (0.00 sec)

3.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

mysql 复制代码
mysql>  SELECT
    ->    d.name AS '部门名称',
    ->    e.*
    ->  FROM department d
    ->  LEFT JOIN employee e
    ->    ON d.number = e.department_NO;
+--------------+------+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| 部门名称     | id   | number      | name      | job             | leader_NO   | hire_date  | salary  | bonus   | level | department_NO |
+--------------+------+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
| 清华集团     | NULL | NULL        | NULL      | NULL            | NULL        | NULL       |    NULL |    NULL |  NULL | NULL          |
| 集团总部     | NULL | NULL        | NULL      | NULL            | NULL        | NULL       |    NULL |    NULL |  NULL | NULL          |
| 成都中心     |    1 | E2018010001 | 吴所为    | 总经理          | NULL        | 2018-01-01 | 2800.00 | 4000.00 |     9 | D2019060001   |
| 武汉中心     |    3 | E2018060002 | 王黎明    | 总经理          | NULL        | 2018-06-01 | 2800.00 | 4000.00 |     8 | D2019060002   |
| 上海中心     |    2 | E2018070003 | 韩金龙    | 总经理          | NULL        | 2018-07-01 | 2800.00 | 4000.00 |     8 | D2019090001   |
| 上海中心     |   14 | E2019120015 | 李意      | 行政专员        | E2018070003 | 2019-12-20 | 2800.00 |  500.00 |     4 | D2019090001   |
| 广州中心     |    4 | E2018020002 | 龚爱国    | 总经理          | NULL        | 2018-02-01 | 2800.00 | 4000.00 |     8 | D2020010001   |
| 财务部       |   15 | E2019020017 | 刘六一    | 财务总监        | E2018070003 | 2019-02-16 | 3800.00 | 1000.00 |     6 | D2019090011   |
| 行政部       | NULL | NULL        | NULL      | NULL            | NULL        | NULL       |    NULL |    NULL |  NULL | NULL          |
| 财务部       |    5 | E2019050001 | 马金花    | 财务总监        | E2018010001 | 2019-01-01 | 3800.00 |  500.00 |     6 | D2019060011   |
| 财务部       |    6 | E2019050018 | 李昌贵    | 财务专员        | E2019050001 | 2019-04-21 | 2800.00 |  800.00 |     4 | D2019060011   |
| 技术部       |   11 | E2019060009 | 廖云龙    | 技术总监        | E2018010001 | 2019-06-01 | 4800.00 | 2000.00 |     7 | D2019060012   |
| 技术部       |   12 | E2019120021 | 刘盛会    | 研发工程师      | E2019060009 | 2019-12-11 | 4800.00 |  500.00 |     5 | D2019060012   |
| 技术部       |   13 | E2019020001 | 马明全    | 高级工程师      | E2019060009 | 2019-02-01 | 4800.00 | 1000.00 |     6 | D2019060012   |
| 技术部       |   16 | E2020020012 | 陈超      | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 |  500.00 |     5 | D2019060012   |
| 网络部       |    7 | E2019100011 | 王建国    | 网络管理员      | E2018010001 | 2019-10-01 | 3200.00 |    NULL |     5 | D2019060013   |
| 网络部       |    8 | E2019110004 | 黎锦熙    | 网络管理员      | E2019100011 | 2019-11-01 | 3200.00 |    NULL |     5 | D2019060013   |
| 市场部       |    9 | E2020020023 | 繁茂森    | 销售专员        | E2019060005 | 2020-02-01 | 2800.00 |    0.00 |     4 | D2019060014   |
| 市场部       |   10 | E2019060005 | 张善民    | 销售经理        | E2018010001 | 2019-06-01 | 2800.00 |  500.00 |     6 | D2019060014   |
+--------------+------+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+
19 rows in set (0.00 sec)

4.列出在财务部工作的员工的姓名,假定不知道财务部的部门编号。

mysql 复制代码
mysql> SELECT
    ->    e.name AS '姓名'
    ->  FROM employee e
    ->  JOIN department d
    ->    ON e.department_NO = d.number
    ->  WHERE d.name = '财务部';
+-----------+
| 姓名      |
+-----------+
| 刘六一    |
| 马金花    |
| 李昌贵    |
+-----------+
3 rows in set (0.00 sec)

5.列出薪金高于公司平均薪金的所有员工信息所在部门名称,上级领导。

mysql 复制代码
mysql> SELECT
    ->   e.*,
    ->   d.name AS '部门名称',
    ->   m.name AS '上级领导'
    -> FROM employee e
    -> JOIN department d
    ->   ON e.department_NO = d.number
    -> LEFT JOIN employee m
    ->   ON e.leader_NO = m.number
    -> WHERE e.salary > (SELECT AVG(salary) FROM employee);
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+--------------+--------------+
| id | number      | name      | job             | leader_NO   | hire_date  | salary  | bonus   | level | department_NO | 部门名称     | 上级领导     |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+--------------+--------------+
| 15 | E2019020017 | 刘六一    | 财务总监        | E2018070003 | 2019-02-16 | 3800.00 | 1000.00 |     6 | D2019090011   | 财务部       | 韩金龙       |
|  5 | E2019050001 | 马金花    | 财务总监        | E2018010001 | 2019-01-01 | 3800.00 |  500.00 |     6 | D2019060011   | 财务部       | 吴所为       |
| 16 | E2020020012 | 陈超      | 研发工程师      | E2019060009 | 2020-02-18 | 4200.00 |  500.00 |     5 | D2019060012   | 技术部       | 廖云龙       |
| 13 | E2019020001 | 马明全    | 高级工程师      | E2019060009 | 2019-02-01 | 4800.00 | 1000.00 |     6 | D2019060012   | 技术部       | 廖云龙       |
| 12 | E2019120021 | 刘盛会    | 研发工程师      | E2019060009 | 2019-12-11 | 4800.00 |  500.00 |     5 | D2019060012   | 技术部       | 廖云龙       |
| 11 | E2019060009 | 廖云龙    | 技术总监        | E2018010001 | 2019-06-01 | 4800.00 | 2000.00 |     7 | D2019060012   | 技术部       | 吴所为       |
+----+-------------+-----------+-----------------+-------------+------------+---------+---------+-------+---------------+--------------+--------------+
6 rows in set (0.00 sec)

6.列出与陈超从事相同工作的所有员工及部门名称。

mysql 复制代码
mysql> SELECT
    ->   e.name 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 != '陈超';
+-----------+--------------+
| 姓名      | 部门名称     |
+-----------+--------------+
| 刘盛会    | 技术部       |
+-----------+--------------+
1 row in set (0.00 sec)

7.查出至少有一个员工的部门。显示部门编号部门名称、部门位置、部门人数。

mysql 复制代码
mysql> SELECT
    ->   d.number AS '部门编号',
    ->   d.name AS '部门名称',
    ->   d.location AS '部门位置',
    ->   COUNT(e.number) AS '部门人数'
    -> FROM department d
    -> JOIN employee e
    ->   ON d.number = e.department_NO
    -> GROUP BY d.number, d.name, d.location
    -> HAVING COUNT(e.number) >= 1;
+--------------+--------------+--------------+--------------+
| 部门编号     | 部门名称     | 部门位置     | 部门人数     |
+--------------+--------------+--------------+--------------+
| D2019060001  | 成都中心     | 成都         |            1 |
| D2019060002  | 武汉中心     | 武汉         |            1 |
| D2019090001  | 上海中心     | 上海         |            2 |
| D2020010001  | 广州中心     | 广州         |            1 |
| D2019090011  | 财务部       | 上海         |            1 |
| D2019060011  | 财务部       | 成都         |            2 |
| D2019060012  | 技术部       | 成都         |            4 |
| D2019060013  | 网络部       | 成都         |            2 |
| D2019060014  | 市场部       | 成都         |            2 |
+--------------+--------------+--------------+--------------+
9 rows in set (0.00 sec)

8.列出薪金高于在财务部工作员工平均薪金的员工姓名和薪金、部门名称。

mysql 复制代码
mysql> 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(salary)
    ->   FROM employee e
    ->   JOIN department d
    ->     ON e.department_NO = d.number
    ->   WHERE d.name = '财务部'
    -> );
+-----------+---------+--------------+
| 姓名      | 薪金    | 部门名称     |
+-----------+---------+--------------+
| 刘六一    | 3800.00 | 财务部       |
| 马金花    | 3800.00 | 财务部       |
| 陈超      | 4200.00 | 技术部       |
| 马明全    | 4800.00 | 技术部       |
| 刘盛会    | 4800.00 | 技术部       |
| 廖云龙    | 4800.00 | 技术部       |
+-----------+---------+--------------+
6 rows in set (0.00 sec)
相关推荐
狗头实习生8 小时前
Spring常见的事务失效原因
java·数据库·spring
冉冰学姐8 小时前
SSM泰兴市公交信息系统f504u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架应用·泰兴市公交·息管理系统
偶像你挑的噻10 小时前
3.Qt-基础布局以及事件
开发语言·数据库·qt
Dxy123931021610 小时前
MySQL如何做读写分离架构
数据库·mysql·架构
毕设十刻11 小时前
基于Vue的考勤管理系统8n7j8(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
合方圆~小文12 小时前
不同画面,三个镜头实时监控拍摄方案
数据结构·数据库·人工智能
ChrisitineTX13 小时前
凌晨突发Java并发问题:synchronized锁升级导致接口超时,排查过程全记录
java·数据库·oracle
极限实验室13 小时前
Easysearch 2.0.0 性能测试
数据库·性能优化
老华带你飞14 小时前
社团管理|基于Java社团管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端