天天看點

Oracle中ROWID和ROWNUM的用法Oracle中ROWID和ROWNUM的用法

Oracle中ROWID和ROWNUM的用法

ROWID的用法:

ROWID是資料的詳細位址,通過rowid,oralce可以快速的定位某行具體的資料的位置。

[sql]  view plain  copy

  1. select a.*, rowid from 表名 a where 列名 = '值'  

ROWID常用用法1:

[sql]  view plain  copy

  1. select a.*, a.rowid from 表名 a where 列名 = '值';  

點選

Oracle中ROWID和ROWNUM的用法Oracle中ROWID和ROWNUM的用法

即可進行這一行值的修改。 修改後點選

Oracle中ROWID和ROWNUM的用法Oracle中ROWID和ROWNUM的用法

,然後點選

Oracle中ROWID和ROWNUM的用法Oracle中ROWID和ROWNUM的用法

修改儲存完成。

ROWID常用用法2:(删除重複記錄)

DELETE FROM EMP E
WHERE E.ROWID >; (SELECT MIN(X.ROWID)
                    FROM EMP X
                    WHERE X.EMP_NO = E.EMP_NO);
           

最高效的删除重複記錄方法 ( 因為使用了ROWID)

ROWNUM的用法:

ROWNUM表示查詢某條記錄在整個結果集中的位置,同一條記錄查詢條件不同對應的rownum是不同的而rowid是不會變的。

rownum表明了查詢記錄的順序,傳回的第一條row的序号為1,第二條row的序号為2,以此類推。 用法:

1.可通過rownum限制傳回結果的記錄數。

[sql]  view plain  copy

  1. select rownum from test where rownum < 10  

2.通過rownum為表中某列産生一個唯一(UNIQUE)值

[sql]  view plain  copy

  1. update table_name set column_name = rownum  

3.依靠重命名列,和子查詢可以實作rownum>10的查詢

[sql]  view plain  copy

  1. select count(*) from(select t.*,rownum rn from ljb_test t)where rn > 10  

4.Oracle的分頁查詢,也是通過ROWNUM實作的(分三層實作,友善記憶)

❌錯誤示例:
select rownum,empno,ename,sal from emp where  rownum>= and rownum<=;

✅正确示例:
select *
from   (select rownum r,e1.*
 from (select * from emp order by sal) e1
 where rownum <=
)
where r >=;
           

注:rownum應用中>,>=,=,between...and條件,傳回結果都為空。

覺得對你有幫助或者喜歡的可以點個贊哦~~