1 分页(分段)查询
分页查询就是将查询表中的数据时进行分段,而不是一次性把所有的数据都查询出来,有时候查询的数据量非常大,会导致系统资源消耗大,响应速度慢,数据冗余严重,为此遇到这种情况一般就使用分页查询解决,数据库基本都支持分页,但是不同的数据库语法不同。
ORACLE中的分页是基于伪列ROWNUM实现的,为查询出来的每一行数据都编个行号。ROWNUM不存在任何一张表中,但是所有的表都可以查询这个字段,这个字段的值是随着查询自动生成的。
方式:每当可以从表中查询出一条记录的时候,那么这个字段的值为该条记录的行号,从1开始的,依次递增。
SELECT ROWNUM,empno,ename,sal,job FROM emp;
SELECT ROWNUM,empno,ename,sal,job FROM emp WHERE ROWNUM >1;–没有数据
SELECT ROWNUM,empno,ename,job,sal FROM emp WHERE ROWNUM BETWEEN 6 AND 10; --没有数据
在使用ROWNUM对结果集进行编号的查询过程中不能够使用ROWNUM做大于1以上的判断,因为ROWNUM第一次查询的时候,此时ROUNUM=1,WHERE过滤条件不成立,就没有对第一行进行编号。依次向下推理,编号都不成立,就无法查询出一条数据。等于1就只有第一条数据,>0没有什么意义。
解决方法:1先使用ROWNUM进行编号,对结果集当做表
2对结果集里面的编号字段名(ROWNUM)进行过滤
但是此时要对结果集中ROWNUM添加别名,否则不写别名的话计算机会把过滤条件