ROWID伪列

ROWID伪列概念:

  在数据表中每一行所保存的记录,oracle会为每条记录分配一个唯一的地址编号,这个编号就是通过ROWID表示的。

  所有的数据都利用ROWID进行定位。

 

观察rowid的存在

 

SQL> select rowid,deptno,dname,loc from dept;

ROWID               DEPTNO DNAME         LOC
------------------ ---------- -------------- -------------
AAAR3vAAEAAAACHAAA       10 ACCOUNTING     NEW YORK
AAAR3vAAEAAAACHAAB       20 RESEARCH         DALLAS
AAAR3vAAEAAAACHAAC       30 SALES         CHICAGO
AAAR3vAAEAAAACHAAD       40 OPERATIONS     BOSTON

 

  以deptno为10的rowid为例:

  •   数据对象号:AAAR3v
  •   相对文件号:AAE
  •   数据块号:AAAACH
  •   数据行号: AAA

通过函数定位出rowid的映射位置:

  

复制代码
select rowid,
       dbms_rowid.rowid_object(rowid) 数据对象号,
       dbms_rowid.rowid_relative_fno(rowid) 相对文件号,
       dbms_rowid.rowid_block_number(rowid) 数据块号,
       dbms_rowid.rowid_row_number(rowid) 数据行号,
       deptno,
       dname,
       loc
  from dept;
复制代码

结果:

 


 

posted @   头痛不头痛  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2016-01-06 Centos下Nagios的安装与配置
点击右上角即可分享
微信分享提示
主题色彩