伪列
要了解Oracle的分页查询就要知道一个很重要的概——伪列
伪列:
伪列是在ORACLE中的一个虚拟的列。
伪列的数据是由ORACLE进行维护和管理的,用户不能对这个列修改,只能查看。
所有的伪列要得到值必须要显式的指定。
伪列只能查询,不能增删改.
Oracle的常见伪列有:rowid、rownum。
rowid的产生:
是表的伪列,是用来唯一标识表中的一条记录,并且间接给出了表行的物理位置,定位表行最快的方式
使用insert语句插入数据时,oracle会自动生成rowid 并将其值与表数据一起存放到表行中。
这与rownum有很大不同,rownum不是表中原本的数据,只是在查询的时候才生成的。
主键:
标识唯一的一条业务数据的标识。主键是给业务给用户用的。不是给数据库用的。
记录编号rowid:
标识唯一的一条数据的。主要是给数据库用的。类似UUID。
rowid有以下几个用处:
· 能以最快的方式访问表中的一行
· 能显示表中行是如何存储的
· 可以作为表中行的唯一标识
rowid的常见应用:
去除重复数据。-- 在plsql Developer工具中,加上rowid可以更改数据
关于主键和rowid的区别:
此伪列用于返回一个数值代表行的次序.返回的第一行的rownum值为1,下一个为2,一次类推.通过使用它可以限制用户查询返回的行数
提示:rownum默认的排序就是根据rowid

注意:oracle认为rownum>N(也就是rownum>1)这种条件不成立,所以查不到记录
因为是伪列是根据查询出来的数据进行分配的,第一笔数据永远是1,第二笔也永远是2.当过滤了第一笔那么第二笔就成了第一笔,
Oracle分页:
//起始行号(下限)
firstRownum = pageSize*(pageNum-1)+1
//结束行号(上限)
endRownum = firstRownum+pageSize-1
例如:


公众号:码上遇见你







