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

前端之家收集整理的这篇文章主要介绍了Oracle学习(3)---数据定义语言---查询结果排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

查询结果排序

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

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

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

  1. 升序排序

  1. > SELECT中使用 ORDER BY子句指定了拍序列,默认情况下数据是按升序排列的,也就是说,可以指定ASC关键字指定升序排列,如果不指定,默认就是升序,显示效果
  2. 一样的。
  3.  
  4. --例1:测试查询结果按升序排列
  5.  
  6. SELECT ENAME,SAL
  7. FROM SCOTT.EMP
  8. ORDER BY SAL;
  9.  
  10. 结果为: ![测试查询结果按升序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/6.png)
  11.  
  12. **值得注意的一点是,如果子啊排序的列中有NULL值,则NULL值会显示在最后,NULL值被认为是最大**
  13. --例2:测试查询结果升序排列,排序列中有NULL
  14.  
  15. SELECT EMPNO,ENAME,MGR
  16. FROM SCOTT.EMP
  17. WHERE DEPTNO = 10
  18. ORDER BY MGR;
  19.  
  20. 结果为: ![测试查询结果按升序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/7.png)
  1. 降序排序

  1. > 当希望查询结果降序排列是,必须在排序后制定DESC关键字。
  2.  
  3. --例3: 测试查询结果按降序排列
  4.  
  5. SELECT ENAME,SAL
  6. FROM SCOTT.EMP
  7. ORDER BY SAL DESC;
  8.  
  9. 结果为: ![测试查询结果按降序排列](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/8.png)
  10.  
  11. **和上述升序排列相思,如果排序列存在NULL值,那么有NULL值的行会显示在最前面**
  1. 使用非选择列表排序

  1. --例4: 使用非选择排序
  2.  
  3. SELECT ENAME
  4. FROM SCOTT.EMP
  5. ORDER BY SAL DESC ;
  6.  
  7. 结果为: ![使用非选择排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/9.png)
  1. 使用表达式排序

  1. > SELECT的列中可以出现算数表达式,排序时可以使用表达式来按照表达式
  2. 的计算结果来排序的目的
  3.  
  4. --例5: 使用表达式排序
  5.  
  6. SELECT ENAME,SAL,SAL * 12
  7. FROM SCOTT.EMP
  8. ORDER BY SAL * 12 DESC ;
  9.  
  10. 结果为: ![使用表达式排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/10.png)
  1. 使用列别名排序

  1. > 在做SELECT查询是,可以为表的列或表达式定义别名。
  2. 在执行排序操作时,可以使用列的别名进行排序。
  3.  
  4. --例6: 使用列的别名排序
  5.  
  6. SELECT ENAME,SAL * 12 ANNUAL_SALARY
  7. FROM SCOTT.EMP
  8. ORDER BY ANNUAL_SALARY DESC ;
  9.  
  10. 结果为: ![使用列的别名排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/11.png)
  1. 使用列位置排序

  1. > Oracle可以按照列或表达式在SELECT列表中的位置进行排序,可以有效的缩减排序语句的长度。另外在使用UNION这类的集合
  2. 操作符时,如果SELECT列表的列名不同,此时必须使用列表达式
  3. 排序。
  4.  
  5. --例7: 使用列的位置排序
  6. --查询部门表和职员表,列出所有部门编码和部门名字,以及所有的
  7. --职工编码和职工名字,并以部门编码和职工编码作为升序排列的标准
  8.  
  9. SELECT DEPTNO,DNAME
  10. FROM SCOTT.DEPT
  11. UNION
  12. SELECT EMPNO,ENAME
  13. FROM SCOTT.EMP
  14. ORDER BY 1;
  15.  
  16. 结果为: ![使用列的位置排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/12.png)
  1. 使用多列排序

  1. > 在执行操作时,不仅可以按照单列进行排序,还可以根据多列排序。当以多列
  2. 作为排序的标准时,首先按照第一列进行排序,如果第一列数据相同,再以第二列
  3. 排序,以此类推。
  4. 需要注意的是,多列排序是,不管正序还是倒序,每个列需要单独的设置排序方式。
  5.  
  6. --例8: 使用多列排序
  7. --对职员表中的职员排序,先按照部门编码正序排列,再按照薪水降序排列
  8.  
  9. SELECT ENAME,DEPTNO,SAL
  10. FROM SCOTT.EMP
  11. ORDER BY DEPTNO ASC,SAL DESC ;
  12.  
  13. 结果为: ![使用多列排序](https://git.oschina.net/weiwei02/OracleDemo/raw/master/doc/oracle/resources/image/query/13.png)

猜你在找的Oracle相关文章