首頁  >  文章  >  資料庫  >  oracle中rowid怎麼用

oracle中rowid怎麼用

WBOY
WBOY原創
2022-06-08 17:41:567144瀏覽

在oracle中,rowid是用於存取數據,是唯一標記表中行的偽列,是表中的每一行數據都有一個唯一的標識符,語法為“select rowid...” ;rowid是物理表中行資料的內部位址,其中一個是指向資料表中包含該行的區塊所存放資料檔案的位址,另一個是可以直接定位到資料行本身的這一行在資料區塊中的位址。

oracle中rowid怎麼用

本教學操作環境:windows10系統、Oracle 12c版、Dell G3電腦。

oracle中rowid

rowid是一個用來唯一標記表中行的偽列。它是實體表中行資料的內部位址,包含兩個位址,其一為指向資料表中包含該行的區塊所存放資料檔案的位址,另一個是可以直接定位到資料行本身的這一行在資料區塊中的地址。

oracle資料庫的表中的每一行資料都有一個唯一的標識符,或稱為rowid,在oracle內部通常就是使用它來存取資料的。 rowid需要 10個位元組的儲存空間,並用18個字元來顯示。該值顯示了該行在oracle資料庫中的物理具體位置。可以在一個查詢中使用rowid來表示查詢結果中包含該值。

oracle中rowid怎麼用

AAAR1yAAHAAAAFkAAA為例

這裡的AAAR1y是資料庫物件編號,AAH是檔案標號,AAAAFk是區塊編號,最後三位AAA是行編號。

使用select * from DEPT; 輸出結果中是不能看到rowid這裡一列的,這是因為這一列只在資料庫內部使用,rowid通常被稱為一個偽列。

oracle中rowid怎麼用

如果想選擇

scott.emp的資料後進行手動修改,則必須使

select rowid,t.* from scott.emp t;

而不能直接寫成

select * from emp;
select rowid,t.* from scott.emp t;
select * from scott.emp for update;

在ORACLE中用ROWID來定位記錄是最快的,比索引還快,所以如果先用SELECT ROWID選出要更新的行,放入COLLECTION中,再用FORALL UPDATE 來批量更新可以提高速度。從這點來講是比其他方法好一點

SELECT FOR UPDATE在更新前會鎖定記錄,這在複雜的平行查詢更新程式中是必要的,例如要求資料一致性,在過濾資料時不允許他人改變數據,會用FOR UPDATE或SET TRANSACTION READ ONLY來加鎖。另外像 CURSOR裡的WHERE CURRENT OF CURSOR語句要求SELECT中必須加FOR UPDATE.

推薦教學:《Oracle影片教學

以上是oracle中rowid怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn