Oracle数据库管理系统的分页
分页概念
从表中查到的数据过于庞大时,如果全部显示出来,则对浏览器页面显示是一个很大的负担同时也不美观,所以我们有必要对查询结果进行分页。
如百度的搜索结果,如网络小说的下一页下一页。
Oracle中的分页
Oracle数据库为每一个表提供了一个字段:rownum,它用来对查询结果做编号,从1开始,并且对每一次查询结果都从1开始编号。
所以我们要给获取的结果分页时,要依赖rownum,比如只取前五条记录为第一页:
select rownum,e.* from emp e where rownum<=5;
在使用where筛选时,rownum只能使用<和<=,因为rownum是动态的,当使用where rownum>时,获得的新表的rownum又从1开始,循环往复,使得rownum永远无法大于任何正值。所以当需要获取某个区间的记录时,不能使用 row>x ,row<y的形式,而是使用将rownum的值使用别名记录下来,在对查询到的表进行二次查询,通过记录的别来筛选即可达成目的。
例如:要获取rownum为 5-10的案例:
select rownum,t.* from (select rownum r,e.* from emp e) t where r>=5 and r<=10;
设每页显示的数量为m,则查询第n页的公式为:
select * from (select rownum r,e.* from 表名 e where rownum<n*m) t where r>m*n-m;