oracle數據庫之rownum和rowid用法


Rownum RowidOracle數據庫所特有的,通過他們可以查詢到指定行數范圍內的數據記錄。

 

以下通過例子講解:

-- 為了方便,首先,查找dept表中的所有。

select deptno,dname,loc from scott.dept;

 

 

-- Rownum

-- 可以查詢 rownum(行數) 為 1 的數據

select rownum,deptno,dname,loc

from scott.dept

where rownum = 1;

 

 

-- 如果直接查詢 rownum 為 2 的數據,返回是 null

-- 因為 rownum 是臨時產生的一個“偽列”

-- 是先獲取到全部的數據之后,才決定如何分配 rownum

-- 需要先搞定 1,才能知道下一個是 2,即需要從1開始查起。

 

-- 查詢最前面兩條的記錄

select rownum,deptno,dname,loc

from scott.dept

where rownum < 3;

-- 會從1開始查起,查到后接着查詢2...直到不符合條件。

 

 

 

-- 下面查詢結果為 null,因為1沒有查,接下來的無從查起。

select rownum,deptno,dname,loc

from scott.dept

where rownum > 3;

 

-- 1開始查起,直到全部。

select rownum,deptno,dname,loc

from scott.dept

where rownum > 0;

 

-- Rowid是一串隨機生成的字符串,也是 Oracle 提供的一個數列。

-- Rownum 和 Romid 區別

-- 一般情況下,每一行數據對應一個 rowid,這個值是固定而且唯一的。

-- 在這行數據存入數據庫的時候,就確定的了,自動生成的。

-- 相當於我們 Java 對象在堆內存中對應有一個固定的地址值。

-- 可以使用 rowid 來查詢記錄,通過它可以提高我們的查詢速度

-- 因為會有一張表單獨保存 rowid,如果在查詢的時候,

-- 需要掃描的列越少,速度就會越快,也是 oracle 查詢最快的方式之一

-- rowid 在你的表發生移動時候,也會跟着一起發生改變。

-- 最大的一個作用:因為是唯一的,可以用來避免重復數據。

select rowid, deptno, dname, loc

from scott.dept

where rowid = 'AAAR3qAAEAAAACHAAC';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM