ORACLE中的僞列

-- ORACLE 中的僞列
----- 僞列就像表中的列一樣,但是在表中並不存儲。僞列只能查詢。不能進行增刪改工作。
----- ROWNUM與ROWID不同,ROWID是插入記錄時生成,ROWNUM是查詢數據時生成。ROWID標識的是行的物理地址。ROWNUM標識的是查詢結果中的行的次序。

 

---- 1. rowid


------ 表中的每一行記錄都有一個物理地址。rowid 僞列就返回該行的物理地址

SELECT ROWID,dept_name from base_dept;


---  2. rownum


----- rownum爲結果集中的每一行標識一個行號。使用rownum僞列可以限制查詢結果集中返回的行數。

SELECT ROWNUM,dept_name from base_dept;

---案例5:查詢出工資最高的前5名員工的姓名、工資和工資。
---- 案例分析
---- “工資最高的前5名”需要先降序排序,再取前5名,但是生成ROWNUM操作比排序要早,排序時已經連同ROWNUM一起排序了,
----- 因此不能直接在案例1的語句中直接加上Order by就行,而是需要對排序的結果重新做二次查詢,產生新的ROWNUM才能作爲查詢的條件依據。

SELECT ROWNUM,T.* FROM (SELECT ENAME,JOB,SAL FROM EMP ORDER BY SAL DESC) T  WHERE ROWNUM<=5

---  rownum 分頁

SELECT * FROM (SELECT ROWNUM R,ENAME,JOB,SAL FROM EMP WHERE ROWNUM<=10) WHERE R>5;

 

 

發佈了81 篇原創文章 · 獲贊 38 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章