详解oracle分页查询的基础原理
网络编程 2021-07-05 16:09www.168986.cn编程入门
这篇文章主要介绍了详解oracle分页查询的原理,从实例测试数据具体分析了实现方式,一起来参考下。
本文从数据查询原理,以及分页实现的方法详细分析了oracle分页查询的基础知识,以下是本文内容
原因一
oracle默认为每个表生成rowmun,rowid字段,这些字段我们称之为伪列
1 创建测试表
CREATE TABLE TEST( ID NUMBER, NAME VARCHAR2(20) )
2 插入测试数据
INSERT INTO TEST VALUES (1,'张三'); INSERT INTO TEST VALUES (2,'李四'); INSERT INTO TEST VALUES (3,'王五'); INSERT INTO TEST VALUES (4,'赵六'); INSERT INTO TEST VALUES (5,'郑七'); INSERT INTO TEST VALUES (6,'胡八'); INSERT INTO TEST VALUES (7,'刘九');
3 查看表字段,证实自带的字段
select rowid,rownum,id,name from TEST;
4 rowid一般用不到,Oracle内部用来存储行的物理位置,和分页相关的就是rownum,也就是行号
二
1 查询小于5的行,查询出四条结果
select rowid,rownum,id,name from test where rownum <5;
2 查询大于2小于5的行
select rownum,id,name from test where rownum>2 and rownum <5;
发现什么也没查出来,什么原因呢?,
rownum有如下特点
1 ROWNUM只适用于小于或小于等于,如果进行等于判断,那么只能等于1;
2 ROWNUM是oracle系统顺序分配的行的编号,返回的第一行分配的是1,第二行是2,依此类推;
3 ROWNUM总是从1开始
4 第一条数据行号为1,不符合>2的条件,则第一行被去掉,之前的第二行变为新的第一行,如此下去,一直到一行,条件始终没法满足,所以就一条数据也查不出来。
3 正确写法因为>用不了,将行号用内层查询查询出来当做一个结果集,在外层用内层结果集进行比较即可
select rownum,id,name from ( select rownum rn, u. from test u where rownum<5) un where un.rn>2
4 如果进行分页的话,比如每页三行,要查询第二页,则相当于查4,5,6条,起始行4= (页码-1)每页长度+1,结束行6=页码每页长度
select rownum,id,name from ( select rownum rn , t. from test t where rownum <=6) n where n.rn>=4
5 同样的可以把4中查询改为最常见的三层结构
select rownum,id,name from ( select rownum rn, n. from ( select from test --最内层循环该怎么写怎么写 ) n where rownum <=6 --小于限制写在第二层 ) where rn>=4
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南