Oracle中ROWID詳解及應用

2021-09-29 03:13:08 字數 789 閱讀 5520

oracle資料庫的表中的每一行資料都有乙個唯一的識別符號,或者稱為rowid,在oracle內部通常就是使用它來訪問資料的。rowid需要

10個位元組的儲存空間,並用18個字元來顯示。該值表明了該行在oracle資料庫中的物理具體位置。可以在乙個查詢中使用rowid來表明查詢結果中包含該值。

儲存rowid需要10個位元組或者是80個位二進位制位。這80個二進位制位分別是:

1. 資料物件編號,表明此行所屬的資料庫物件的編號,每個資料物件在資料庫建立的時候都被唯一分配乙個編號,並且此編號唯一。資料物件編號占用大約32位。

2. 對應檔案編號,表明該行所在檔案的編號,表空間的每乙個檔案標號都是唯一的。檔案編號所占用的位置是10位。

3. 塊編號,表明改行所在檔案的塊的位置塊編號需要22位。

4. 行編號,表明該行在行目錄中的具體位置行編號需要16位。

oracle的物理擴充套件rowid有18個字元,每位採用64位編碼,分別用az、az、0~9、+、/共64個字元表示。a表示0,b表示1,……z表示25,a表示26,……z表示51,0表示52,……,9表示61,+表示62,/表示63。

例如:select rowid,empid from scott.emp;

rowid empno

aaar3saaeaaaacxaaa 7369

aaar3saaeaaaacxaab 7499

delete from dept where rowid not in

(select min(rowid) from dept group by deptno)

Oracle中rowid與rownum的區別

oracle中rowid和rownum都是偽列,但含義完全不同。rowid是實體地址,用於定位oracle中具體資料的儲存位置,而rownum則是sql語句的輸出結果排序。通俗的講 rowid是相對不變的,rownum會變化,尤其是使用order by的時候。需要注意的是rownum的用法 sele...

oracle中rownum和rowid的區別

rownum和rowid都是偽列,但是兩者的根本是不同的,rownum是根據sql查詢出的結果給每行分配乙個邏輯編號,所以你的sql不同也就會導致最終rownum不同,但是rowid是物理結構上的,在每條記錄insert到資料庫中時,都會有乙個唯一的物理記錄 例如 aaamgzaaeaaaaagaa...

oracle中 rowid 和rownum的使用

1 利用rowid 進行 查詢重複 select e.rowid,e.from test idx e select e.rowid,e.from test idx e where e.rowid select min x.rowid from test idx x where x.col2 e.co...