08-排序查询
排序查询
在检索数据时,如果把数据从数据库中直接读取出来,这时查询结果将按照默认顺序排列,但往往这种默认排列顺序并不是用户所需要看到的。尤其是返回数据量较大时,用户查看自己想要的信息非常不方便,因此需要对检索的结果集进行排序。
语法
select column1,column2,... from table_name where condition order by column1 asc/desc;
关键字:order by正序/倒序(升序/降序):asc(默认,可省略)/desc
ORDER BY 子句可以根据查询结果中的一个列或多个列对查询结果进行排序,并且第一个排序项是主要的排序依据,其次那些是次要的排序依据。
分类:
1.按排序规则
1)升序 排序项为升序
2)降序 排序项为降序
3)同升同降 前排序项为升序/降序,后排序项也为升序/降序
4)升降混合 前排序项为升序/降序,后排序项也为降序/升序
2.按排序内容
1)原字段
2)表达式(函数、计算)
3)代号(字段别名)
示例
select * from emp order by sal asc; --查询emp表中根据工资升序排序 (升序,asc 可省略)select * from emp order by sal desc; --根据工资列降序排序 (降序)
select * from emp order by deptno,sal;--先根据部门升序排序,再根据工资升序排序 (同升)
select * from emp order by deptno desc,sal desc;--先根据部门升序降序,再根据工资降序排序 (同降)
select * from emp order by deptno desc,sal;--先根据部门降序排序,再根据工资升序排序 (升降混合)
select * from emp order by sal + 500;--查询emp表,将工资加500后升序排序 (表达式)
select * from emp order by lower(ename) desc;--查询emp表,将姓名改为小写后降序排序 (函数)
select ename,sal s from emp order by s;--查询emp表中的员工姓名,工资,并按照工资升序排序 (代号)
NULL值的默认排序和强制排序
语法
1)NULL值的默认排序为极大值,即升序排序时空值排在最后,降序排序时空值排在最前2)
强制空值排在最前:NULLS FIRST3)
强制空值排在最后:NULLS LAST
示例
select * from emp order by comm; --升序排序时空值排在最后
select * from emp order by comm null first; --强制null排在前面