ROWID是壹種數據類型,它使用基於64為編碼的18個字符來唯壹標識壹條記錄物理位置的壹個ID,類似於Java中壹個對象的哈希碼,都是為了唯壹標識對應對象的物理位置,需要註意的是ROWID雖然可以在表中進行查詢,但是其值並未存儲在表中,所以不支持增刪改操作,下面看個例子:
[html]?view plain?copy
SELECT?ROWNUM,ROWID,empno,ename,job?FROM?emp?WHERE?ROWNUM?<=?5;?
結果如下:可以看到ROWID確實由18個字符組成,組成結構如下:
數據對象編號 文件編號 塊編號 行編號
OOOOOO FFF BBBBBB RRR
至於ROWID的作用,由於ROWID用來唯壹標識表中數據的唯壹性,所以可以利用這個特性去除重復,舉個例子,首先運行下述兩行代碼:[html]?view plain?copy
CREATE?TABLE?dept_bak?AS?SELECT?*?FROM?dept;?
INSERT?INTO?dept_bak?SELECT?*?FROM?dept;?
得到壹個如下的數據庫表很明顯,數據有重復的,但是ROWID肯定不會重復的,那麽就可以利用這個特性去重,簡單示例代碼如下:
[html]?view plain?copy
DELETE?FROM?dept_bak?WHERE?ROWID?NOT?IN(?SELECT?MIN(ROWID)?FROM?dept_bak?GROUP?BY?DEPTNO);?