它是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 索...