加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle学习(3)---数据定义语言---查询结果排序

发布时间:2020-12-12 15:47:30 所属栏目:百科 来源:网络整理
导读:查询结果排序 在执行查询操作时,默认情况下查询结果无序排列。这种无需的显示非常不方便查看 为了更直观的显示数据结果,经常需要对数据按一定规则进行排序操作。查询结果排序 的功能由ORDER BY子句实现,语法如下: SELECT *,COLUM[ALIAS],... FROM TABLE [WHE

查询结果排序

在执行查询操作时,默认情况下查询结果无序排列。这种无需的显示非常不方便查看 为了更直观的显示数据结果,经常需要对数据按一定规则进行排序操作。查询结果排序 的功能由ORDER BY子句实现,语法如下:

SELECT <*,COLUM[ALIAS],...>
    FROM TABLE
    [WHERE condition(s)]
    [ORDER BY column [ASC | DESC]];

在上述语法中,ORDER BY子句用来指定排序列,ASC用来指定升序排序(默认选项),DESC 用来指定降序排序。注意ORDER BY子句必须出现在SELECT中的最后一个子句

  1. 升序排序

> 在SELECT中使用 ORDER BY子句指定了拍序列,默认情况下数据是按升序排列的,也就是说,可以指定ASC关键字指定升序排列,如果不指定,默认就是升序,显示效果是
一样的。

--例1:测试查询结果按升序排列

         SELECT ENAME,SAL
         FROM SCOTT.EMP
         ORDER BY SAL;

结果为: ![测试查询结果按升序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/6.png)

**值得注意的一点是,如果子啊排序的列中有NULL值,则NULL值会显示在最后,NULL值被认为是最大**
--例2:测试查询结果升序排列,排序列中有NULL值

      SELECT EMPNO,ENAME,MGR
      FROM SCOTT.EMP
      WHERE DEPTNO = 10
      ORDER BY MGR;

结果为: ![测试查询结果按升序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/7.png)
  1. 降序排序

> 当希望查询结果降序排列是,必须在排序后制定DESC关键字。

--例3: 测试查询结果按降序排列

      SELECT ENAME,SAL
      FROM SCOTT.EMP
      ORDER BY SAL DESC;

结果为: ![测试查询结果按降序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/8.png)

**和上述升序排列相思,如果排序列存在NULL值,那么有NULL值的行会显示在最前面**
  1. 使用非选择列表排序

--例4: 使用非选择排序

      SELECT ENAME
      FROM SCOTT.EMP
      ORDER BY SAL DESC ;

结果为: ![使用非选择排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/9.png)
  1. 使用表达式排序

> 在SELECT的列中可以出现算数表达式,排序时可以使用表达式来按照表达式
的计算结果来排序的目的

--例5: 使用表达式排序

      SELECT ENAME,SAL,SAL * 12
      FROM SCOTT.EMP
      ORDER BY SAL * 12 DESC ;

结果为: ![使用表达式排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/10.png)
  1. 使用列别名排序

> 在做SELECT查询是,可以为表的列或表达式定义别名。
在执行排序操作时,可以使用列的别名进行排序。

--例6: 使用列的别名排序

      SELECT ENAME,SAL * 12 ANNUAL_SALARY
      FROM SCOTT.EMP
      ORDER BY ANNUAL_SALARY DESC ;

结果为: ![使用列的别名排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/11.png)
  1. 使用列位置排序

> Oracle可以按照列或表达式在SELECT列表中的位置进行排序,可以有效的缩减排序语句的长度。另外在使用UNION这类的集合
操作符时,如果SELECT列表的列名不同,此时必须使用列表达式
排序。

--例7: 使用列的位置排序
--查询部门表和职员表,列出所有部门编码和部门名字,以及所有的
--职工编码和职工名字,并以部门编码和职工编码作为升序排列的标准

      SELECT DEPTNO,DNAME
      FROM SCOTT.DEPT
      UNION
      SELECT EMPNO,ENAME
      FROM SCOTT.EMP
      ORDER BY 1;

结果为: ![使用列的位置排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/12.png)
  1. 使用多列排序

> 在执行操作时,不仅可以按照单列进行排序,还可以根据多列排序。当以多列
作为排序的标准时,首先按照第一列进行排序,如果第一列数据相同,再以第二列
排序,以此类推。
需要注意的是,多列排序是,不管正序还是倒序,每个列需要单独的设置排序方式。

--例8: 使用多列排序
--对职员表中的职员排序,先按照部门编码正序排列,再按照薪水降序排列

      SELECT ENAME,DEPTNO,SAL
      FROM SCOTT.EMP
      ORDER BY DEPTNO ASC,SAL DESC ;

结果为: ![使用多列排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/13.png)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读