oracle中常用的兩個偽列
阿新 • • 發佈:2018-11-07
偽列
偽列就行oracle中的一個列表,但世界上它並未儲存在表中,偽列可以被查詢但是不能被插入或者更改.
rowID
該偽列返回該行地址,可以使用rowID值來定位表中的一行.通常rowID值可以標識資料庫中的一行
rowID偽列有以下重用用途
- 能以最快的方式訪問表中的一行
- 能顯示錶中行是如何儲存的
- 可以作為表中行的唯一標識
可以直接檢視rowID的值如下
select t.*, t.rowid from EMP t
rownum
此偽列用於返回一個數值代表行的次序.返回的第一行的rownum值為1,下一個為2,一次類推.通過使用它可以限制使用者查詢返回的行數
select t.*, rownum from EMP t where rownum<4
注意:oracle認為rownum>N(也就是rownum>1)這種條件不成立,所以查不到記錄
因為是偽列是根據查詢出來的資料進行分配的,第一筆資料永遠是1,第二筆也永遠是2.當過濾了第一筆那麼第二筆就成了第一筆,
所以查不到資料
如下例子
select t.*, rownum from EMP t where comm>0
不加條件前
加了條件後
因此row是根據結果進行分配的,如有錯誤歡迎各位評論指正