排序
通过在查询结果中应用排序,可以使得查询的结果顺序按照指定的顺序进行排序,在select子句中可以使用order by子句排序,可以为order by子句指定一个表达式或一个列名作为排序的条件
注意:order by 子句必须是select语句的最后一个子句,否则select语句将会执行失败
select expr from table [where condition(s)] [order by {column,expr} [asc|desc]];
语法中的order by 关键字指定要对结果进行排序,可选择的asc和desc表示排序的方向,默认值为asc,表示按照升序排序,如果未指定任何排序方向,则使用asc,否则使用desc指定降序排序
例如要查询emp表按照empno进行排序
select * from emp order by empno
由于empno是数字类型,因此查询的结果是按照数字值从小到大进行排序的,下面是其他数据类型的排序规则,
1、日期类型:较早的日期显示在前面
2、字符类型:依字母顺序显示
3、空值:升序排序时显示在最后,降序排序时显示在最前面
例如下面的select语句按照ename进行降序处理,在order by子句中使用了desc关键字
select * from emp order by ename desc
可以看到降序排序后,员工名称果然是按首字母从26个字母表中的最后排序到最前
下面的语句获取了部门编号为20的员工列表,先用员工编号进行排序,然后按员工名称进行倒序排序
select * from emp order by empno,ename desc
除了直接指定列名之外,还可以根据select语句的字段列表的索引顺序指定排序,例如下面的语句将根据select语句中第4个字段mgr列值进行排序
select * from emp order by 4 desc
如果指定一个不在select语句中的索引号,oracle将提示异常,例如下面的语句按照一个并不存在的索引号进行排序
select * from emp order by 10 desc