oracle中的rowID

來源:互聯網
上載者:User

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

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

1. 資料對象編號,表明此行所屬的資料庫物件的編號,每個資料對象在資料庫建立的時候都被唯一分配一個編號,並且此編號唯

一。資料對象編號佔用大約32位。
2. 對應檔案編號,表明該行所在檔案的編號,資料表空間的每一個檔案標號都是唯一的。檔案編號所佔用的位置是10位。
3. 塊編號,表明改行所在檔案的塊的位置塊編號需要22位。
4. 行編號,表明該行在行目錄中的具體位置行編號需要16位。

這樣加起來就是80位。

rowid使用64為的編碼方案來顯示,使用了‘A-Z’,’a-z’,'0-9′和’/'來表示。

例如:
select rowid,empid from scott.emp;
將會得到結果:
SQL> select rowid,empno from scott.emp;

ROWID EMPNO
—————— ———-
AAAHW7AABAAAMUiAAA 7369
AAAHW7AABAAAMUiAAB 7499
AAAHW7AABAAAMUiAAC 7521
AAAHW7AABAAAMUiAAD 7566
AAAHW7AABAAAMUiAAF 7698
AAAHW7AABAAAMUiAAG 7782
AAAHW7AABAAAMUiAAH 7788
AAAHW7AABAAAMUiAAI 7839
AAAHW7AABAAAMUiAAJ 7844
AAAHW7AABAAAMUiAAK 7876
AAAHW7AABAAAMUiAAL 7900
AAAHW7AABAAAMUiAAM 7902
AAAHW7AABAAAMUiAAN 7934

這裡的AAAHW7是資料庫物件編號,AAB是檔案標號,AAAMU是塊編號,最後四位(empno = 7369時為iAAA)是行編號。

使用describle(或簡寫為desc)命令查看錶結構時,輸出結果中是不能看到rowid這裡一列的,這是因為這一列只在資料庫內部使用,

row通常被稱為一個偽列。

在某些oracle資料庫操作的IDE(例如golden)中使用這些工具內建的資料編輯功能時,必須指定rowid列才能完成,例如如果想選擇

scott.emp的資料後進行手工修改,則必須使用
select rowid,t.* from scott.emp t;
而不能直接寫成
select * from emp;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.