Oracle数据库之限定查询和排序显示详解(4)

在所有的子句之中,一定要记住,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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8c83d1517b28875ac8489f9fbbccb525.html