解釋下oracle中的偽列 top是不是無效?

2025-04-28 00:15:04 字數 3515 閱讀 6548

1樓:匿名使用者

一、偽列就像oracle中的乙個表列,但實際上它並未儲存在表中。偽列可以從表中查詢,但是不能插入、更新或刪除它們的值。常用的偽列:rowid和rownum。

rowid:資料庫中的每一行都有一腔櫻個行位址,rowid偽列返回該行位址。可以使用rowid值來定位表中的一行。通常情況下,rowid值可以唯一地標識資料庫中的一行。

rowid偽列有以下重要用途:

1)能以最快的方式訪問表中的一行;

2)能顯示錶的行是如何儲存的。

3)可以作為表中行的唯一標識。鄭圓州。

如:sql> select rowid,ename from emp;

rownum:對於乙個查詢返回的每一行,rownum偽列返回乙個數值代表的次序。返回的第一行的rownum值為1,第二行的rownum值為2,依此類推。

通過使用rownum偽列,使用者可以限制查詢返回的行數。

如:sql>select * from emp where rownum<11; 從emp表中提取10條記錄 二、oracle中不支援select top n from tablename 查詢,但是通過 order by 和 rownum 組合可以實現此功能喊蔽。例如:

select 列名1..列名n from

select 列名1..列名n from 表名 order by 列名1..列名n)

where rownum <=n(抽出記錄數)

order by rownum asc

2樓:匿名使用者

偽列有效,oracle不支援select top語句,偽列可替代top的作用。

oracle 中偽列的問題

3樓:老刀正能量

一、select * from (select rownum as rn,name from cus order by name) where rownum <= 3;

這裡的rownum是重新生成的。

二、select * from (select rownum as rn ,name from cus order by name) where rn<= 3;

而這裡的rn是指裡面的sql語句生成的rownum,是已經固定了的!

oracle偽列,偽表是什麼?有什麼用?與普通表、普通列有什麼區別?

4樓:網友

偽列:資料庫沒有實際儲存的列。

例如,rownum。 就是行號。你可以在任何乙個talbe,view,或者select中查到這個列,但是,這個列不存在任何的物理的儲存。

另外的例子: level , rowid 都是偽列普通的列,是實際有儲存的,在物理儲存上就有這個資料。偽列就沒有,是算出來的。可以認為是一種特殊的函式。

5樓:網友

虛擬的列。 在查詢中。 或者在 檢視中。 沒有實際的資料儲存。 這一列是固定的值。 資料為列名。

這一列只能用於查詢,不能更新。

例子 select 'a' ,'b' from dual; 這裡 有倆個偽列 (虛列)

用於檢視中也可以。

create view tt

表名。列1 as 列1 //真實存在的列'tag' as tag //虛擬的列,該列所有行的值都為 tag

from 引用的表名。

6樓:

可以完成資料庫管理,和某些功能的隱藏列,如rowid,rowscn,rownum等等。

oracle偽列以及偽表,有什麼用?

7樓:哈哈嗯吶

偽列以及偽表。

行序 rownumber 和 相當於主鍵的rowidrownumber 根據你排序方式不同,都是按照自然序列增加的。

rowid 不是,rowid是資料儲存是,即生成的。

oracle中的rownum屬性在where語句中大於號不起作用

8樓:

rownum是個偽列,使用時有一些特殊性。例如用於where條件時,不能用》、>=、=等操作符,因為只有有具體記錄時,rownum才有值。where條件用於篩選記錄時,《是可以篩選到記錄的,但是》就篩選不到記錄了。

9樓:網友

rownum是指對你的查詢結果集進行的編號。

12意思就是返回前11條記錄,>8 意思是返回第9條以上的記錄,為什麼這樣永遠不會有返回,是因為每次取回的記錄都是當作第一條,自然<8, 然後被濾掉,所以不會有返回值。。。

10樓:網友

大於不是這麼用的,如果想找到從第二行記錄以後的記錄,當使用rownum>8是查不出記錄的,原因是由於rownum是乙個總是從1開始的偽列,oracle 認為rownum> n(n>1的自然數)這種條件依舊不成立,所以查不到記錄。

sql> select rownum,id,name from abc where rownum >8;

rownum id name

可以使用以下的子查詢方法來解決。注意子查詢中的rownum必須要有別名,否則還是不會查出記錄來,這是因為rownum不是某個表的列,如果不起別名的話,無法知道rownum是子查詢的列還是主查詢的列。

sql>select * from(select rownum no ,id,name from abc) a where no>8;--除了rownum其他隨意寫的。

哪位oracle大神能夠告訴我,有關偽列的問題。

11樓:網友

oracle的rownum不能這麼用。rownum是對結果集的編序排列,始終是從1開始,所以你的rownum>5永遠為假,所以就沒記錄返回。rownum只能用於<。

當然你可以做巢狀,將rownum選出來後再做查詢。

12樓:網友

select * from (select rownum r,emp.* from emp) where where r>5 and r<10

rownum這個偽列中能用小於或者小於等於。

在oracle中有個rowid和rownum,他們是一樣的嗎?有什麼作用?大神求解!!!

13樓:炳德國學堂

rowid和rownum都是偽列,但含義完全不同。rowid是實體地址,用於定位oracle中具體資料的物理儲存位置,而rownum則是sql的輸出結果排序。通俗的講:

rowid是相對不變的,rownum會變化,尤其是使用order by的時候。

rowid 用於定位資料表中某條資料的位置,是唯一的、也不會改變。

rownum 表示查詢某條記錄在整個結果集中的位置, 同一條記錄查詢條件不同對應的 rownum 是不同的而 rowid 是不會變的。

14樓:網友

不一樣,rowid是乙個唯一標識,作用於整個資料庫,這個id可以表示具體一行記錄(就想身份證號),rownum則是結果集的行數。

資料結構偽碼解釋下,資料結構虛擬碼完全不懂啊。。

看了你的問題,其實很簡單,都是關於結點的問題,建議你好好看下資料結構的書!刪除結點,p的下乙個是q,現在刪除了乙個數,所以也就是說 p的下個結點是q,q的下個結點為x,現在q處結點被刪,所以,p的下個結點就是q 的下個結點 x,至於插入的那個也是一樣的道理,l為插入的數的結點位置,原來p指向的下乙個...

linu下安裝oracle中執行runinstaller提示沒有

linux下安裝oracle中執行.runinstaller 提示沒有這個檔案或目錄是設定錯誤造成的,解決方法為 1 檢查磁碟空間,按照要求oracle安裝盤應該大於6.5g以上。2 swap分割槽和記憶體。swap分割槽我們可以用命令檢視 grep swaptotal proc meminfo f...

有誰能夠通俗的給我解釋一下Oracle軟體,是一款怎樣的軟體,主要用用於哪些方面

中文的含義 甲骨文 oracle 是一家大型的軟體公司 資料庫管理軟體的巨頭 它專注於做大型資料庫軟體它在資料庫軟體的開發上是最有實力的,就像ms在pc作業系統的地位一樣,佔有統治的地位 除了oracle公司,還有其他的軟體公司也開發資料庫軟體比如像微軟,ibm等公司也開發資料庫軟體,它們的產品名字...