Rumah >pembangunan bahagian belakang >tutorial php >详解oracle分页查询的基础原理
这篇文章主要介绍了详解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 896d8e27a2a1e6770399cdb9165fdb912 and rownum bb0b192c1943e6b67198cbedb8c4c6de2的条件,则第一行被去掉,之前的第二行变为新的第一行,如此下去,一直到最后一行,条件始终没法满足,所以就一条数据也查不出来。<p style="text-align: center"><img alt="" src="https://img.php.cn/upload/article/000/054/025/ac875cc9f4d678726fb8d77d884e69b4-2.png"></p><p>3 正确写法:因为>用不了,将行号用内层查询查询出来当做一个结果集,在外层用内层结果集进行比较即可</p><p class="cnblogs_code"><br></p><pre class="brush:php;toolbar:false">select rownum,id,name from ( select rownum rn, u.* from test u where rownumf6456af7e9d45973fb65c284a41d2e8b2
4 如果进行分页的话,比如每页三行,要查询第二页,则相当于查4,5,6条,起始行4= (页码-1)*每页长度+1,结束行6=页码*每页长度
select rownum,id,name from ( select rownum rn , t.* from test t where rownum a15c685b42299c7d65c5378e1cf9c539=4
5 同样的可以把4中查询改为最常见的三层结构
select rownum,id,name from ( select rownum rn, n.* from ( select * from test --最内层循环该怎么写怎么写 ) n where rownum <=6 --小于限制写在第二层 ) where rn>=4
以上内容就是oracle分页查询的基础原理,希望能帮助到大家。
相关推荐:
Atas ialah kandungan terperinci 详解oracle分页查询的基础原理. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!