在所有的子句之中,一定要记住,ORDER BY 子句是放在查询语句的最后一行,是最后一个执行的,它的执行顺序:FROM、WHERE、SELECT、ORDER BY ,既然 ORDER BY 在 SELECT 之后执行,那么就表示 ORDER BY 子句可以使用 SELECT 子句之中设置的别名。
范例:查询雇员的完整信息并且按照基本工资由高到低进行排序
SELECT * FORM emp ORDER BY sal DESC;范例:修改之前的查询,要求按照基本工资由低到高进行排序
实现一:
SELECT * FORM emp ORDER BY sal;实现二:
SELECT * FORM emp ORDER BY sal ASC;范例:查询出所有办事员(CLERK)的详细资料,并且按基本工资由低到高排序
现在不再是针对所有的数据进行排序,需要对数据执行筛选,那么就利用 WHERE 子句完成。
SELECT * FORM emp WHERE job = 'CLERK' ORDER BY sal;范例:查询所有雇员信息,要求按照基本工资由高到低排序,如果工资相等则按照雇佣日期进行排序,按照由早到晚的顺序
现在的排序需要设置两个排序的字段:sal(DESC),hiredate(ASC)
SELECT * FORM emp ORDER BY sal DESC,hiredate ASC;显示结果中有点小问题,本程序的语法没有问题,有问题的是在于数据上。因为现在的数据都是后期处理的结果,如果要想正常的观察数据,那么可以将数据库切换到 PDB 中,找到原始的 scott 数据。
方法:在 DBA_Connection 中先执行下面两行代码后继续查询
ALTER SESSION SET CONTAINER = pdbmldn; ALTER DATABASE pdbmldn OPEN; SELECT * FROM scott.emp ORDER BY sal DESC ,hiredate ASC;但是对于排序,除了使用字段之外,也可以设置一个序号,但是此操作不建议使用。
SELECT empno, ename, sal, job FORM emp ORDER BY sal DESC; SELECT empno, ename, sal, job FORM emp ORDER BY 3 DESC; 上面两个语句执行效果一样,但个人认为,在编写排序的时候还是建议写上字段,不要用序号,不方便。
小结
SQL 语法:
SELECTL [DISTINCT] * |列 [AS][别名], 列 [AS][别名],... FROM 表名称 [别名] [WHERE 限定条件(s)] [ORDER BY 排序字段 [ASC|DESC][,排序字段[ASC|DESC]...]];使用 ORDER BY 子句可以对查询结果进行排序,ORDER BY 子句一定要写在所有查询语句的最后。
说明:本学习资料是根据李兴华的Oracle开发实战经典整理
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx