關於Oracle資料庫的rownum應用

2022-03-29 04:38:06 字數 1694 閱讀 1872

它是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,以此類推,這個偽欄位可以用於限制查詢返回的總行數,而且rownum不能以任何表的名稱作為字首。

如以下語句將無法正常執行:

select student.*, student.rownum from student;

我們如果要將rownum這個偽欄位動態產生的列顯示出來,需要使用如下語句:

select t.*, rownum from student t;

如果我們在查詢時加入了限制條件,則rownum又將動態生成。結論就是rownum是不會與任何一行進行繫結都是根據查詢後的記錄來生成的:

select t.*, rownum from student t where sage >

25;

由於rownum的特殊性,我們在使用rownum時必須注意以下事項:

select

*from student where rownum =

1; --

能查詢到第一條記錄

select

*from student where rownum =

2; --

不能查詢第二條記錄

select

*from student where rownum >

2; --

不能查詢出記錄

select

*from student where rownum <

3; --

選擇前兩條記錄

--

正常返回最後三條記錄

select

*from student where rownum <

4order

by sid desc;--

返回了前三條記錄

select

*from student where rownum <

4order

by sage desc;

我們可以看到,同樣的sql語句,只是排列序不一樣,就導致了完全不一樣的結果。兩個語句的對比中可以看出在第二條語句中rownum並不是以sage列生成序列號,而是在插入記錄時以主鍵列為參考生成的。之所以我們在使用第一條語句時可以成功取得最後三條,原因就在於第一條語句是按照主鍵進行排序的。

select

*from (select

*from student order

by sage desc) where rownum <

4;

select

*from student where rownum <

20minus

--將兩個記錄集相減

select

*from student where rownum <

10;

或者

select

*from (select rownum r, student.*

from student where rownum <

20order

by sid) where r >=

10;

select student.*, rowid from student;

關於oracle資料庫的註冊

一 什麼是註冊?註冊就是將資料庫作為乙個服務註冊到監聽程式。客戶端不需要知道資料庫名和例項名,只需要知道該資料庫對外 提供的服務名就可以申請連線到資料庫。這個服務名可能與例項名一樣,也有可能不一樣。在資料庫伺服器啟動過程中,資料庫伺服器會向監聽程式註冊相應的服務 無論何時啟動乙個資料庫,預設地都有 ...

關於oracle資料庫解鎖

microsoft windows 版本 10.0.14393 c 2016 microsoft corporation。保留所有權利。c windows system32 sqlplus nolog sql plus release 10.2.0.1.0 production on 星期日 7月 ...

關於Oracle資料庫的查詢優化

沒事兒嘮嘮it 2016 12 08 00 58 1 多表查詢時,資料量小的表放在靠右放。2 單錶查詢時,能夠過濾掉較大資料量的條件靠右放。3 查詢字段盡量避免使用 號,應直接羅列欄位名稱。4 儘量減少對資料庫的訪問次數。1 索引字段存在資料型別轉換 如數值字元轉換位數字,或字串轉換為日期等 2 索...