1. 程式人生 > >關於dual表的一些資料

關於dual表的一些資料

經常看到別人的儲存過程中有select …………from dual;

那麼DUAL表是什麼表呢?及作用又是做什麼的?

現在做個小結:

為了SQL語意完整而已

select sysdate from dual

相當與Sql Server的

set @Date=getdate()

dual是Oracle與資料字典一起自動建立的一個表﹐它只有一列﹕DUMMY﹐其資料型別為﹕VARCHAR2(1)。dual中只有一行資料﹕'X'。dual屬於sys模式﹐但所有使用者都可以使用dual名稱訪問它﹐用SELECT計算常量表達式﹑偽列等值時常用該表﹐因為它只返回一行資料﹐而使用其它表時可能返回多個數據行。

在查詢語句中產生臨時計算資料的,一個幫助查詢語句產生計算結果的臨時表

在Oracle資料庫內有一種特殊的表Dual。Dual表是Oracle中的一個實際存在的表任何使用者均可讀取,常用在沒有目標表的Select中。Dual表由Oracle連同資料字典一同建立,所有的使用者都可以用名稱DUAL訪問該表。這個表裡只有一列DUMMY,該列定義為VARCHAR2(1)型別,有一行值X。從DUAL表選擇資料常被用來通過SELECT語句計算常數表示式,由於DUAL只有一行資料,所以常數只返回一次。

Oracle下的DUAL查詢如下所示:
SELECT ‘x’ FROM dual
而對等的SQL Server查詢則是下面這個樣子:
SELECT ‘x’

以下是null相關的知識,用到了dual:
SQL> select 1 from dual where null=null;
沒有查到記錄
SQL> select 1 from dual where null='';
沒有查到記錄
SQL> select 1 from dual where ''='';
沒有查到記錄
SQL> select 1 from dual where null is null;
1
---------
1
SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
1
---------
1
檢視當前連線使用者
SQL> select user from dual;

檢視當前日期、時間
SQL> select sysdate from dual;