Oracle ROWID

Oracle ROWID

ROWID为Oracle表的一个伪列,并不存储在数据库中,只是在执行查询的时候才计算它的值。

注:除了在同一聚簇中可能不唯一外,每条记录的rowid是唯一的

示例:查看rowid列

SQL> select rowid from emp;

ROWID
------------------
AAAR3sAAEAAAACXAAA
AAAR3sAAEAAAACXAAB
AAAR3sAAEAAAACXAAC
AAAR3sAAEAAAACXAAD
AAAR3sAAEAAAACXAAE
AAAR3sAAEAAAACXAAF
AAAR3sAAEAAAACXAAG
AAAR3sAAEAAAACXAAH
AAAR3sAAEAAAACXAAI
AAAR3sAAEAAAACXAAJ
AAAR3sAAEAAAACXAAK
AAAR3sAAEAAAACXAAL
AAAR3sAAEAAAACXAAM
AAAR3sAAEAAAACXAAN
AAAR3sAAEAAAACXAAO

已选择15行。

rowid包含如下内容:

①:对象所在的数据文件号

②:对象所在的块号

③:对象所在行在块内的位置

④:对象号

Oracle正是根据这些内容找到相应的数据的。

可以通过dbms_rowid包把rowid转换成易懂的内容。

示例1:看文件号

已选择15行。

SQL> select ROWID,DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)file_id from emp;

ROWID                FILE_ID
------------------ ----------
AAAR3sAAEAAAACXAAA          4
AAAR3sAAEAAAACXAAB          4
AAAR3sAAEAAAACXAAC          4
AAAR3sAAEAAAACXAAD          4
AAAR3sAAEAAAACXAAE          4
AAAR3sAAEAAAACXAAF          4
AAAR3sAAEAAAACXAAG          4
AAAR3sAAEAAAACXAAH          4
AAAR3sAAEAAAACXAAI          4
AAAR3sAAEAAAACXAAJ          4
AAAR3sAAEAAAACXAAK          4
AAAR3sAAEAAAACXAAL          4
AAAR3sAAEAAAACXAAM          4
AAAR3sAAEAAAACXAAN          4
AAAR3sAAEAAAACXAAO          4

已选择15行。

相关推荐