毕业后,一直在从事oracle的开发,但一直没有理解明白oracle中rownum,rowid的一些概念,今天趁休息正好学习一下,加强一下。
rownum和rowid也被称为oracle的伪列,就像表中的一列一样,但是实际并未存储,也不可以对该列进行更新,删除之类的操作。
rowid:数据库中的每一行都有一个行地址,Rowid伪列返回该行地址。可以使用Rowid值来定位表中的一行。通常情况下,Rowid值可以唯一地标识数据库中的一行。
rownum:对于查询返回的结果集,rownum伪列表示每行返回的次序号,第一条结果集的rownum为1,第二条为2,依次类推,递增,因此oracle利用rownum可以实现分页。
实际过程中在使用rownum的时候,有一些陷阱
1、ROWNUM是伪列,必须要要有返回结果后,每条返回记录就会对应产生一个ROWNUM数值;
2、返回结果记录的ROWNUM是从1开始排序的,因此第一条始终是1;