暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle的分页

码上遇见你 2019-08-08
166

Oracle的分页

伪列

要了解Oracle的分页查询就要知道一个很重要的概——伪列

伪列:

    伪列是在ORACLE中的一个虚拟的列。

    伪列的数据是由ORACLE进行维护和管理的,用户不能对这个列修改,只能查看。

    所有的伪列要得到值必须要显式的指定

    伪列只能查询,不能增删改.

Oracle的常见伪列有:rowidrownum

01

rowid


rowid的产生:

    是表的伪列,是用来唯一标识表中的一条记录,并且间接给出了表行的物理位置,定位表行最快的方式

   使用insert语句插入数据时,oracle会自动生成rowid 并将其值与表数据一起存放到表行中。

    这与rownum有很大不同,rownum不是表中原本的数据,只是在查询的时候才生成的。

    

主键:

标识唯一的一条业务数据的标识。主键是给业务给用户用的。不是给数据库用的。

记录编号rowid

    标识唯一的一条数据的。主要是给数据库用的。类似UUID



rowid有以下几个用处:


· 能以最快的方式访问表中的一行

· 能显示表中行是如何存储的

· 可以作为表中行的唯一标识

rowid的常见应用:

    去除重复数据。-- plsql Developer工具中,加上rowid可以更改数据


关于主键和rowid的区别:

相同点:为了标识唯一一条记录的。

不同点:主键:针对业务数据,用来标识不同的一条业务数据。

      rowid:针对具体数据的,用来标识不同的唯一的一条数据,跟业务无关。




02

下面说说最常用的伪列:rownum



此伪列用于返回一个数值代表行的次序.返回的第一行的rownum值为1,下一个为2,一次类推.通过使用它可以限制用户查询返回的行数

提示:rownum默认的排序就是根据rowid

        


注意:oracle认为rownum>N(也就是rownum>1)这种条件不成立,所以查不到记录

        因为是伪列是根据查询出来的数据进行分配的,第一笔数据永远是1,第二笔也永远是2.当过滤了第一笔那么第二笔就成了第一笔,


Oracle分页:

//起始行号(下限)

firstRownum = pageSize*(pageNum-1)+1

//结束行号(上限)

endRownum = firstRownum+pageSize-1

例如:

    


公众号:码上遇见你



文章转载自码上遇见你,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论