ROWID伪列

Posted 头痛不头痛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

结果:

 


 

以上是关于ROWID伪列的主要内容,如果未能解决你的问题,请参考以下文章

Oracle-12:伪列rowid和rownum

Oracle Schema Objects——伪列ROWID Pseudocolumn(ROWNUMROWID)

Oracle-数据伪列ROWNUM, ROWID

在oracle 数据伪列 rowid中删除重复的数据时。为啥数据插入的早,rowid 就小啊?我看不出来哪里小了

浅析SQL Server数据库中的伪列以及伪列的含义

oracle 之 伪列 rownum 和 rowid的用法与区别