Oracle数据库隐藏列 rownum 和 rowid 的使用
1、rowid 隐藏列的介绍rowid 列是 Oracle 为我们的数据表的每行数据提供的一个唯一的相对地址列,这一列是实实在在存在于数据表中的,通过这列数值获取行数据是最快的!我们可以通过 select 获取这个隐藏列的数据:select rowid, t.* from t
2、rowid 隐藏列的作用这是一列唯一值(需区分大小写),有时如果某个表没有设置主键,或者组合主键包含的列比较多不方便使用,可以使用这个 rowid 隐藏列作为主键列。
3、rownum 隐藏列的介绍我们通过 select 语句获取的结果集中都会包含这个隐藏列,该列本质上是不存在于漉胜衲仰表中的,只是在获取到结果集后,Oracle为结果集附加的一列,该列数值从 1 开始递增,可以在执行select查询时,主动显示这列的值:select rownum, t.* from t
4、rownum 隐藏列使用的注意事项注意,在执行 select 查询的 where 条件过滤时,数据表的行数据的 rownu罪焐芡拂m 列会被赋予初始值 1,当其通过了 where 条件过滤进入结果集后,下一行数据的 rownum 会被赋予值 2 ,但如果其没有进入结果集中,则下一行数据的 rownum 继续为 1 ,以此类推!基于此,我们会得到如下结论:1. select * from t where rownum = 1 ; // 可以获取一条数据 (演示和原因参考图1)2. select * from t where rownum = 2; // 无法获取到数据(演示和原因参考图2)3. select * from t where rownum <= 5; // 可以获取到 5 条数据(演示和原因参考图3)4. select * from t where rownum > 5; // 无法获取到任何数据(演示和原因参考图4)
5、rownum 获取 >num 的行数据通过子查询固化 rownum 值来实现这种需求select * from (select rownum rn, t.* from t ) where rn > 5 (图示)
6、rownum 列的应用场景Oracle数据库查询的分页就是通过 rownum 进行的,通常语句为:select * from (select rownum rn, t.* from t ) where rn >= startIndex and rn <= endIndex