《卸甲笔记》-限定查询与排序显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《卸甲笔记》-限定查询与排序显示相关的知识,希望对你有一定的参考价值。

限定查询与排序显示

限定查询指的是在数据查询时设置一系列的过滤条件,只有满足指定的条件后才可以进行显示

在SQL标准中限定查询的语法如下:

select [distinct] *|列名称 [as] [列别名],列名称 [as] [列别名], … from 表名称 [表别名] [where 条件(s)]

1查看emp表中的数据量

Oracle

SQL> select count(*) from emp;

 

  COUNT(*)

----------

         14

 

PPAS

scott=# select count(*) from emp;

 count

-------

    14

(1 row)

 

2 统计出基本工资高于1500元的全部雇员信息

Oracle

 

SQL> select * from emp where sal>1500;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7499 ALLEN          SALESMAN                 7698 20-FEB-81

      1600       300             30

 

      7566 JONES          MANAGER                 7839 02-APR-81

      2975                    20

 

      7698 BLAKE          MANAGER                 7839 01-MAY-81

      2850                    30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

      7788 SCOTT          ANALYST                    7566 19-APR-87

      3000                    20

 

      7839 KING           PRESIDENT                      17-NOV-81

      5000                    10

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7902 FORD                    ANALYST                    7566 03-DEC-81

      3000                    20

 

 

7 rows selected.

 

PPAS

scott=# select * from emp where sal>1500;

 empno | ename |    job    | mgr  |      hiredate      |   sal   |  comm  | deptno

-------+-------+-----------+------+--------------------+---------+--------+--------

  7499 | ALLEN | SALESMAN  | 7698 | 20-FEB-81 00:00:00 | 1600.00 | 300.00 |     30

  7566 | JONES | MANAGER   | 7839 | 02-APR-81 00:00:00 | 2975.00 |        |     20

  7698 | BLAKE | MANAGER   | 7839 | 01-MAY-81 00:00:00 | 2850.00 |        |     30

  7782 | CLARK | MANAGER   | 7839 | 09-JUN-81 00:00:00 | 2450.00 |        |     10

  7788 | SCOTT | ANALYST   | 7566 | 19-APR-87 00:00:00 | 3000.00 |        |     20

  7839 | KING  | PRESIDENT |      | 17-NOV-81 00:00:00 | 5000.00 |        |     10

  7902 | FORD  | ANALYST   | 7566 | 03-DEC-81 00:00:00 | 3000.00 |        |     20

(7 rows)

 

3查询出所有基本工资小于等于2000元的全部雇员信息

Oracle

SQL> select * from emp where sal<=2000;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7369 SMITH          CLERK                         7902 17-DEC-80

       800                    20

 

      7499 ALLEN          SALESMAN                 7698 20-FEB-81

      1600       300             30

 

      7521 WARD                  SALESMAN                 7698 22-FEB-81

      1250       500             30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7654 MARTIN                SALESMAN                 7698 28-SEP-81

      1250     1400             30

 

      7844 TURNER                SALESMAN                 7698 08-SEP-81

      1500         0             30

 

      7876 ADAMS                 CLERK                         7788 23-MAY-87

      1100                    20

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7900 JAMES          CLERK                         7698 03-DEC-81

       950                    30

 

      7934 MILLER                 CLERK                         7782 23-JAN-82

      1300                    10

 

 

8 rows selected.

PPAS

scott=# select * from emp where sal<=2000;

 empno | ename  |   job    | mgr  |      hiredate      |   sal   |  comm   | deptno

-------+--------+----------+------+--------------------+---------+---------+--------

  7369 | SMITH  | CLERK    | 7902 | 17-DEC-80 00:00:00 |  800.00 |         |     20

  7499 | ALLEN  | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600.00 |  300.00 |     30

  7521 | WARD   | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250.00 |  500.00 |     30

  7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 |     30

  7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500.00 |    0.00 |     30

  7876 | ADAMS  | CLERK    | 7788 | 23-MAY-87 00:00:00 | 1100.00 |         |     20

  7900 | JAMES  | CLERK    | 7698 | 03-DEC-81 00:00:00 |  950.00 |         |     30

  7934 | MILLER | CLERK    | 7782 | 23-JAN-82 00:00:00 | 1300.00 |         |     10

(8 rows)

 

4根据之前的查询结果发现SMITH的工资 最低,所以现在希望可以取得SMITH的详细资料

Oracle

SQL> select * from emp where ename=‘SMITH‘;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7369 SMITH          CLERK                         7902 17-DEC-80

       800                    20

PPAS

scott=# select * from emp where ename=‘SMITH‘;

 empno | ename |  job  | mgr  |      hiredate      |  sal   | comm | deptno

-------+-------+-------+------+--------------------+--------+------+--------

  7369 | SMITH | CLERK | 7902 | 17-DEC-80 00:00:00 | 800.00 |      |     20

(1 row)

5查询出所有业务员(CLERK)的雇员信息

Oracle

SQL>  select * from emp where job=‘CLERK‘;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7369 SMITH          CLERK                         7902 17-DEC-80

       800                    20

 

      7876 ADAMS                 CLERK                         7788 23-MAY-87

      1100                    20

 

      7900 JAMES          CLERK                         7698 03-DEC-81

       950                    30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7934 MILLER                 CLERK                         7782 23-JAN-82

      1300                    10

PPAS

scott=# select * from emp where job=‘CLERK‘;

 empno | ename  |  job  | mgr  |      hiredate      |   sal   | comm | deptno

-------+--------+-------+------+--------------------+---------+------+--------

  7369 | SMITH  | CLERK | 7902 | 17-DEC-80 00:00:00 |  800.00 |      |     20

  7876 | ADAMS  | CLERK | 7788 | 23-MAY-87 00:00:00 | 1100.00 |      |     20

  7900 | JAMES  | CLERK | 7698 | 03-DEC-81 00:00:00 |  950.00 |      |     30

  7934 | MILLER | CLERK | 7782 | 23-JAN-82 00:00:00 | 1300.00 |      |     10

(4 rows)

 

6为了和其他职位的雇员对比,现在决定查询所有不是业务员的雇员信息

Oracle

SQL>  select * from emp where job<>‘CLERK‘;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7499 ALLEN          SALESMAN                 7698 20-FEB-81

      1600       300             30

 

      7521 WARD                  SALESMAN                 7698 22-FEB-81

      1250       500             30

 

      7566 JONES          MANAGER                 7839 02-APR-81

      2975                    20

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7654 MARTIN                SALESMAN                 7698 28-SEP-81

      1250     1400             30

 

      7698 BLAKE          MANAGER                 7839 01-MAY-81

      2850                    30

 

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7788 SCOTT          ANALYST                    7566 19-APR-87

      3000                    20

 

      7839 KING           PRESIDENT                      17-NOV-81

      5000                    10

 

      7844 TURNER                SALESMAN                 7698 08-SEP-81

      1500         0             30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7902 FORD                    ANALYST                    7566 03-DEC-81

      3000                    20

 

 

10 rows selected.

SQL> select * from emp where job!=‘CLERK‘;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7499 ALLEN          SALESMAN                 7698 20-FEB-81

      1600       300             30

 

      7521 WARD                  SALESMAN                 7698 22-FEB-81

      1250       500             30

 

      7566 JONES          MANAGER                 7839 02-APR-81

      2975                    20

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7654 MARTIN                SALESMAN                 7698 28-SEP-81

      1250     1400             30

 

      7698 BLAKE          MANAGER                 7839 01-MAY-81

      2850                    30

 

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7788 SCOTT          ANALYST                    7566 19-APR-87

      3000                    20

 

      7839 KING           PRESIDENT                      17-NOV-81

      5000                    10

 

      7844 TURNER                SALESMAN                 7698 08-SEP-81

      1500         0             30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7902 FORD                    ANALYST                    7566 03-DEC-81

      3000                    20

 

 

10 rows selected.

PPAS

scott=# select * from emp where job<>‘CLERK‘;

 empno | ename  |    job    | mgr  |      hiredate      |   sal   |  comm   | deptno

-------+--------+-----------+------+--------------------+---------+---------+--------

  7499 | ALLEN  | SALESMAN  | 7698 | 20-FEB-81 00:00:00 | 1600.00 |  300.00 |     30

  7521 | WARD   | SALESMAN  | 7698 | 22-FEB-81 00:00:00 | 1250.00 |  500.00 |     30

  7566 | JONES  | MANAGER   | 7839 | 02-APR-81 00:00:00 | 2975.00 |         |     20

  7654 | MARTIN | SALESMAN  | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 |     30

  7698 | BLAKE  | MANAGER   | 7839 | 01-MAY-81 00:00:00 | 2850.00 |         |     30

  7782 | CLARK  | MANAGER   | 7839 | 09-JUN-81 00:00:00 | 2450.00 |         |     10

  7788 | SCOTT  | ANALYST   | 7566 | 19-APR-87 00:00:00 | 3000.00 |         |     20

  7839 | KING   | PRESIDENT |      | 17-NOV-81 00:00:00 | 5000.00 |         |     10

  7844 | TURNER | SALESMAN  | 7698 | 08-SEP-81 00:00:00 | 1500.00 |    0.00 |     30

  7902 | FORD   | ANALYST   | 7566 | 03-DEC-81 00:00:00 | 3000.00 |         |     20

(10 rows)

scott=# select * from emp where job!=‘CLERK‘;

 empno | ename  |    job    | mgr  |      hiredate      |   sal   |  comm   | deptno

-------+--------+-----------+------+--------------------+---------+---------+--------

  7499 | ALLEN  | SALESMAN  | 7698 | 20-FEB-81 00:00:00 | 1600.00 |  300.00 |     30

  7521 | WARD   | SALESMAN  | 7698 | 22-FEB-81 00:00:00 | 1250.00 |  500.00 |     30

  7566 | JONES  | MANAGER   | 7839 | 02-APR-81 00:00:00 | 2975.00 |         |     20

  7654 | MARTIN | SALESMAN  | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 |     30

  7698 | BLAKE  | MANAGER   | 7839 | 01-MAY-81 00:00:00 | 2850.00 |         |     30

  7782 | CLARK  | MANAGER   | 7839 | 09-JUN-81 00:00:00 | 2450.00 |         |     10

  7788 | SCOTT  | ANALYST   | 7566 | 19-APR-87 00:00:00 | 3000.00 |         |     20

  7839 | KING   | PRESIDENT |      | 17-NOV-81 00:00:00 | 5000.00 |         |     10

  7844 | TURNER | SALESMAN  | 7698 | 08-SEP-81 00:00:00 | 1500.00 |    0.00 |     30

  7902 | FORD   | ANALYST   | 7566 | 03-DEC-81 00:00:00 | 3000.00 |         |     20

(10 rows)

 

7查询出工资范围在1500~3000(包含1500和3000)元的全部雇员信息

Oracle

SQL>  select * from emp where sal>=1500 and sal<=3000;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7499 ALLEN          SALESMAN                 7698 20-FEB-81

      1600       300             30

 

      7566 JONES          MANAGER                 7839 02-APR-81

      2975                    20

 

      7698 BLAKE          MANAGER                 7839 01-MAY-81

      2850                    30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

      7788 SCOTT          ANALYST                    7566 19-APR-87

      3000                    20

 

      7844 TURNER                SALESMAN                 7698 08-SEP-81

      1500         0             30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7902 FORD                    ANALYST                    7566 03-DEC-81

      3000                    20

 

 

7 rows selected.

PPAS

scott=# select * from emp where sal>=1500 and sal<=3000;

 empno | ename  |   job    | mgr  |      hiredate      |   sal   |  comm  | deptno

-------+--------+----------+------+--------------------+---------+--------+--------

  7499 | ALLEN  | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600.00 | 300.00 |     30

  7566 | JONES  | MANAGER  | 7839 | 02-APR-81 00:00:00 | 2975.00 |        |     20

  7698 | BLAKE  | MANAGER  | 7839 | 01-MAY-81 00:00:00 | 2850.00 |        |     30

  7782 | CLARK  | MANAGER  | 7839 | 09-JUN-81 00:00:00 | 2450.00 |        |     10

  7788 | SCOTT  | ANALYST  | 7566 | 19-APR-87 00:00:00 | 3000.00 |        |     20

  7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500.00 |   0.00 |     30

  7902 | FORD   | ANALYST  | 7566 | 03-DEC-81 00:00:00 | 3000.00 |        |     20

(7 rows)

 

8查询职位是销售人员,并且基本工资高于1200元的所有雇员信息

Oracle

SQL> select * from emp where job=‘SALESMAN‘ and sal>1200;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7499 ALLEN          SALESMAN                 7698 20-FEB-81

      1600       300             30

 

      7521 WARD                  SALESMAN                 7698 22-FEB-81

      1250       500             30

 

      7654 MARTIN                SALESMAN                 7698 28-SEP-81

      1250     1400             30

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7844 TURNER                SALESMAN                 7698 08-SEP-81

      1500         0             30

PPAS

scott=# select * from emp where job=‘SALESMAN‘ and sal>1200;

 empno | ename  |   job    | mgr  |      hiredate      |   sal   |  comm   | deptno

-------+--------+----------+------+--------------------+---------+---------+--------

  7499 | ALLEN  | SALESMAN | 7698 | 20-FEB-81 00:00:00 | 1600.00 |  300.00 |     30

  7521 | WARD   | SALESMAN | 7698 | 22-FEB-81 00:00:00 | 1250.00 |  500.00 |     30

  7654 | MARTIN | SALESMAN | 7698 | 28-SEP-81 00:00:00 | 1250.00 | 1400.00 |     30

  7844 | TURNER | SALESMAN | 7698 | 08-SEP-81 00:00:00 | 1500.00 |    0.00 |     30

(4 rows)

 

9要求查询出10部门中的经理或者20部门中的业务员的信息

Oralce

SQL> select * from emp

  2   where (deptno=10 and job=‘MANAGER‘) or (deptno=20 and job=‘CLERK‘);

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7369 SMITH          CLERK                         7902 17-DEC-80

       800                    20

 

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

      7876 ADAMS                 CLERK                         7788 23-MAY-87

      1100                    20

PPAS

scott=# select * from emp

scott-# where (deptno=10 and job=‘MANAGER‘) or (deptno=20 and job=‘CLERK‘);

 empno | ename |   job   | mgr  |      hiredate      |   sal   | comm | deptno

-------+-------+---------+------+--------------------+---------+------+--------

  7369 | SMITH | CLERK   | 7902 | 17-DEC-80 00:00:00 |  800.00 |      |     20

  7782 | CLARK | MANAGER | 7839 | 09-JUN-81 00:00:00 | 2450.00 |      |     10

  7876 | ADAMS | CLERK   | 7788 | 23-MAY-87 00:00:00 | 1100.00 |      |     20

(3 rows)

 

10查询不是业务员且基本工资大于2000元的全部雇员信息

Oracle

SQL> select * from emp

  2   where job !=‘CLERK‘ and sal>2000;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7566 JONES          MANAGER                 7839 02-APR-81

      2975                    20

 

      7698 BLAKE          MANAGER                 7839 01-MAY-81

      2850                    30

 

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7788 SCOTT          ANALYST                    7566 19-APR-87

      3000                    20

 

      7839 KING           PRESIDENT                      17-NOV-81

      5000                    10

 

      7902 FORD                    ANALYST                    7566 03-DEC-81

      3000                    20

 

 

6 rows selected.

SQL> select * from emp

  2    where  job <>‘CLERK‘ and  sal>2000;

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7566 JONES          MANAGER                 7839 02-APR-81

      2975                    20

 

      7698 BLAKE          MANAGER                 7839 01-MAY-81

      2850                    30

 

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7788 SCOTT          ANALYST                    7566 19-APR-87

      3000                    20

 

      7839 KING           PRESIDENT                      17-NOV-81

      5000                    10

 

      7902 FORD                    ANALYST                    7566 03-DEC-81

      3000                    20

 

 

6 rows selected.

SQL> select * from emp

  2   where not(job=‘CLERK‘ or sal<=2000);

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7566 JONES          MANAGER                 7839 02-APR-81

      2975                    20

 

      7698 BLAKE          MANAGER                 7839 01-MAY-81

      2850                    30

 

      7782 CLARK          MANAGER                 7839 09-JUN-81

      2450                    10

 

 

     EMPNO ENAME              JOB                       MGR HIREDATE

---------- -------------------- ------------------ ---------- ------------

       SAL     COMM     DEPTNO

---------- ---------- ----------

      7788 SCOTT          ANALYST                    7566 19-APR-87

      3000                    20

 

      7839 KING           PRESIDENT                      17-NOV-81

      5000                    10

 

以上是关于《卸甲笔记》-限定查询与排序显示的主要内容,如果未能解决你的问题,请参考以下文章

《卸甲笔记》-多表查询之二

《卸甲笔记》-子查询

《卸甲笔记》-分组统计查询

《卸甲笔记》-多表查询之一

mysql分组查询和排序

对数据进行限定和排序