MySQL单表查询、多表查询、分组查询、等级查询综合练习-二、 单表查询

时间:2024-01-21 11:13:05

1.选择部门30中的所有员工

mysql> select empno 编号,ename 姓名 from emp where deptno = 30;
+--------+-----------+
| 编号   | 姓名      |
+--------+-----------+
|   7499 | 刘博      |
|   7521 | 李兴      |
|   7654 | 刘浩      |
|   7698 | 刘涛      |
|   7844 | 马琪      |
|   7900 | 李小涵    |
+--------+-----------+
6 rows in set (0.00 sec)

2.列出所有办事员的姓名,编号和部门编号

mysql> select empno 编号,ename 姓名,deptno 部门号 from emp where job = '办事员';
+--------+--------+-----------+
| 编号   | 姓名   | 部门号    |
+--------+--------+-----------+
|   7369 | 张倩   |        20 |
|   7876 | 李涵   |        20 |
+--------+--------+-----------+
2 rows in set (0.01 sec)

3.找出佣金高于薪金的员工

mysql> select empno 编号,ename 姓名 from emp where comm > sal;
+--------+--------+
| 编号   | 姓名   |
+--------+--------+
|   7654 | 刘浩   |
+--------+--------+
1 row in set (0.00 sec)

4.找出没有佣金的员工

mysql> select empno 编号,ename 姓名,comm 佣金 from emp where comm is null;
+--------+-----------+--------+
| 编号   | 姓名       | 佣金    |
+--------+-----------+--------+
|   7369 | 张倩      |   NULL |
|   7566 | 李雷      |   NULL |
|   7698 | 刘涛      |   NULL |
|   7782 | 华仔      |   NULL |
|   7788 | 张飞      |   NULL |
|   7839 | 马晓云    |   NULL |
|   7876 | 李涵      |   NULL |
|   7900 | 李小涵    |   NULL |
|   7902 | 张三      |   NULL |
|   7934 | 张三丰    |   NULL |
+--------+-----------+--------+
10 rows in set (0.00 sec)

5.找出佣金高于薪金的60%的员工

mysql> select empno 编号,ename 姓名 from emp where comm > sal * 0.6;
+--------+--------+
| 编号   | 姓名   |
+--------+--------+
|   7654 | 刘浩   |
+--------+--------+
1 row in set (0.01 sec)

6.找出部门10中所有人事部长和部门20中所有办事员的详细资料

mysql> select * from emp where ((deptno = 10 and job = '人事部长') or (deptno = 20 AND job = '办事员'));
+-------+--------+--------------+------+------------+------+------+--------+
| empno | ename  | job          | mgr  | hiredate   | sal  | comm | deptno |
+-------+--------+--------------+------+------------+------+------+--------+
|  7782 | 华仔   | 人事部长     | 7839 | 1995-06-09 | 2450 | NULL |     10 |
|  7369 | 张倩   | 办事员       | 7902 | 2002-12-17 |  820 | NULL |     20 |
|  7876 | 李涵   | 办事员       | 7788 | 1997-05-23 | 1100 | NULL |     20 |
+-------+--------+--------------+------+------------+------+------+--------+
3 rows in set (0.00 sec)

7.找出收取佣金的员工

mysql> select empno 编号,ename 姓名,comm 佣金 from emp where comm is not null;
+--------+--------+--------+
| 编号   | 姓名   | 佣金   |
+--------+--------+--------+
|   7499 | 刘博   |    300 |
|   7521 | 李兴   |    500 |
|   7654 | 刘浩   |   1400 |
|   7844 | 马琪   |      0 |
+--------+--------+--------+
4 rows in set (0.00 sec)

8.找出不收取佣金或收取的佣金低于100的员工

mysql> select empno 编号,ename 姓名,comm 佣金 from emp where comm is null or comm < 100;
+--------+-----------+--------+
| 编号   | 姓名       | 佣金    |
+--------+-----------+--------+
|   7369 | 张倩      |   NULL |
|   7566 | 李雷      |   NULL |
|   7698 | 刘涛      |   NULL |
|   7782 | 华仔      |   NULL |
|   7788 | 张飞      |   NULL |
|   7839 | 马晓云    |   NULL |
|   7844 | 马琪      |      0 |
|   7876 | 李涵      |   NULL |
|   7900 | 李小涵    |   NULL |
|   7902 | 张三      |   NULL |
|   7934 | 张三丰    |   NULL |
+--------+-----------+--------+
11 rows in set (0.00 sec)

9.找出姓张的员工的信息

mysql> select * from emp where ename regexp '^张';
+-------+-----------+--------------+------+------------+------+------+--------+
| empno | ename     | job          | mgr  | hiredate   | sal  | comm | deptno |
+-------+-----------+--------------+------+------------+------+------+--------+
|  7369 | 张倩      | 办事员       | 7902 | 2002-12-17 |  820 | NULL |     20 |
|  7788 | 张飞      | 人事专员     | 7566 | 1998-04-19 | 3000 | NULL |     20 |
|  7902 | 张三      | 人事组长     | 7566 | 1992-10-08 | 3000 | NULL |     20 |
|  7934 | 张三丰    | 人事长       | 7782 | 1997-06-23 | 1300 | NULL |     10 |
+-------+-----------+--------------+------+------------+------+------+--------+
4 rows in set (0.04 sec)

10.显示员工的姓名和受雇日期,新的员工排在最前面

mysql> select ename 姓名,hiredate 受雇日期 from emp order by hiredate desc;
+-----------+--------------+
| 姓名      | 受雇日期       |
+-----------+--------------+
| 张倩      | 2002-12-17   |
| 张飞      | 1998-04-19   |
| 张三丰    | 1997-06-23   |
| 李涵      | 1997-05-23   |
| 刘涛      | 1997-05-01   |
| 马琪      | 1996-09-08   |
| 李兴      | 1995-07-22   |
| 华仔      | 1995-06-09   |
| 李小涵    | 1993-02-13   |
| 张三      | 1992-10-08   |
| 刘博      | 1992-02-20   |
| 马晓云    | 1991-11-17   |
| 刘浩      | 1991-09-28   |
| 李雷      | 1991-04-02   |
+-----------+--------------+
14 rows in set (0.00 sec)

11.按工作的降序排序,若工作相同则按薪金排序

mysql> select empno 编号,ename 姓名,job 工作,sal 薪资 from emp order by job desc,sal;
+--------+-----------+--------------+--------+
| 编号   | 姓名      | 工作         | 薪资     |
+--------+-----------+--------------+--------+
|   7698 | 刘涛      | 销售部长     |   2850 |
|   7900 | 李小涵    | 销售员       |    950 |
|   7839 | 马晓云    | 董事长       |   5000 |
|   7521 | 李兴      | 售货员       |   1250 |
|   7654 | 刘浩      | 售货员       |   1250 |
|   7844 | 马琪      | 售货员       |   1500 |
|   7499 | 刘博      | 售货员       |   1900 |
|   7369 | 张倩      | 办事员       |    820 |
|   7876 | 李涵      | 办事员       |   1100 |
|   7934 | 张三丰    | 人事长       |   1300 |
|   7566 | 李雷      | 人事部长     |    975 |
|   7782 | 华仔      | 人事部长     |   2450 |
|   7902 | 张三      | 人事组长     |   3000 |
|   7788 | 张飞      | 人事专员     |   3000 |
+--------+-----------+--------------+--------+
14 rows in set (0.00 sec)

12.查出不姓刘的员工的信息

mysql> select * from emp where ename regexp '^[^刘]';
+-------+-----------+--------------+------+------------+------+------+--------+
| empno | ename     | job          | mgr  | hiredate   | sal  | comm | deptno |
+-------+-----------+--------------+------+------------+------+------+--------+
|  7369 | 张倩      | 办事员       | 7902 | 2002-12-17 |  820 | NULL |     20 |
|  7521 | 李兴      | 售货员       | 7698 | 1995-07-22 | 1250 |  500 |     30 |
|  7566 | 李雷      | 人事部长     | 7839 | 1991-04-02 |  975 | NULL |     20 |
|  7782 | 华仔      | 人事部长     | 7839 | 1995-06-09 | 2450 | NULL |     10 |
|  7788 | 张飞      | 人事专员     | 7566 | 1998-04-19 | 3000 | NULL |     20 |
|  7839 | 马晓云    | 董事长       | NULL | 1991-11-17 | 5000 | NULL |     10 |
|  7844 | 马琪      | 售货员       | 7698 | 1996-09-08 | 1500 |    0 |     30 |
|  7876 | 李涵      | 办事员       | 7788 | 1997-05-23 | 1100 | NULL |     20 |
|  7900 | 李小涵    | 销售员       | 7698 | 1993-02-13 |  950 | NULL |     30 |
|  7902 | 张三      | 人事组长     | 7566 | 1992-10-08 | 3000 | NULL |     20 |
|  7934 | 张三丰    | 人事长       | 7782 | 1997-06-23 | 1300 | NULL |     10 |
+-------+-----------+--------------+------+------------+------+------+--------+
11 rows in set (0.00 sec)

13.取出姓李的员工

mysql> select empno 编号,ename 姓名 from emp where ename regexp '^李';
+--------+-----------+
| 编号   | 姓名      |
+--------+-----------+
|   7521 | 李兴      |
|   7566 | 李雷      |
|   7876 | 李涵      |
|   7900 | 李小涵    |
+--------+-----------+
4 rows in set (0.00 sec)