mysql怎麼用偽表 Oracle偽列和偽表

2021-10-19 19:29:39 字數 1823 閱讀 4587

oracle系統為了實現完整的關聯式資料庫功能,系統專門提供了一組成為偽列(pseudocolumn)的資料庫列,這些列不是在建立物件時由我

oracle的偽列以及偽表

oracle系統為了實現完整的關聯式資料庫功能,系統專門提供了一組成為偽列(pseudocolumn)的資料庫列,這些列不是在建立物件時由我們完成的,而是在我們建立時由oracle完成的。oracle目前有以下偽列:

一、偽列:

currval and nextval 使用序列號的保留字

level 查詢資料所對應的層級

rowid 記錄的唯一標識

rownum 限制查詢結果集的數量

rowid的概念:rowid是乙個偽列,既然是偽列,那麼這個列就不是使用者定義,而是系統自己給加上的。對每個表都有乙個rowid的偽列,但是表中並不物理儲存rowid列的值。不過你可以像使用其它列那樣使用它,,但是不能刪除改列,也不能對該列的值進行修改、插入。一旦一行資料插入資料庫,則rowid在該行的生命週期內是唯一的,即即使該行產生行遷移,行的rowid也不會改變。

rownum是乙個序列,是oracle資料庫從資料檔案或緩衝區中讀取資料的順序。它取得第一條記錄則rownum值為1,第二條為2,依次類推。如果你用》,>=,=,between...and這些條件,因為從緩衝區或資料檔案中得到的第一條記錄的rownum為1,則被刪除,接著取下條,可是它的rownum還是1,又被刪除,依次類推,便沒有了資料。

二、偽表

dual 表

該錶主要目的是為了保證在使用select語句中的語句的完整性而提供的。

一般用於驗證函式。例如:

select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') from dual

oracle的幾個偽列函式

oracle有幾個函式專門用來產生偽列的,rownum,rowid,row_number(),rank,dense_rank,lan

1 connect by 語句

該語句結合偽列rownum或level 可以產生乙個結果集.

1. 基本用法:

產生1~~100之間的整數

select rownum xh from dual connect by rownum<=100;

select level xh from dual connect by level<=100;

2. 高階用法

2.1.產生所有漢字,漢字內碼為:19968~~~40869之間

select t.* from(

select rownum xh,nchr(rownum) hz from dual

connect by rownum<65535

) twhere t.xh between 19968 and 40869

2 rownum按行的順序自動增加產生

row_number() 給每個組內的不同記錄進行排號(分組可不設)

3 rank() 按並列情況跨越排序

4 dense_rank() 按並列情況排序,不跳躍

5 lag對列進行偏移(下面是偏移2列)

mysql行轉列怎麼用 mysql錶行轉列的用法

現在有一張score表,儲存學生每門課的成績,結構資料如下 idnamesubjectscore 1張三 語文90 2張三 數學88 3張三 外語75 4李四 語文99 5李四 數學70 6李四 外語95 7李五 語文88 8李五 數學85 9李五 外語90 現在要求列出每個學生所有課程的成績.這就...

mysql怎麼該錶名 mysql怎麼設定表名?

mysql設定表名的方法 通過alter table語句,使用sql alter table rename to 來進行設定 修改資料表的名稱 to是為可選引數,使用與否均不影響結果。需求描述 今天在進行mysql表的歷史資料遷移,需要將某張表進行備份,修改表的名字,在此記錄下操作過程.操作過程 m...

mysql索引怎麼用 mysql怎麼使用索引?

在排序操作中如果能使用到索引來排序,那麼可以極大的提高排序的速度,要使用索引來排序需要滿足以下兩點即可。1 order by子句後的列順序要與組合索引的列順序一致,且所有排序列的排序方向 正序 倒序 需一致 2 所查詢的字段值需要包含在索引列中,及滿足覆蓋索引。通過例子來具體分析 在user tes...