Oracle中dual的解釋

2021-08-16 00:07:58 字數 1492 閱讀 5516

q:dual是什麼?

a: dual是乙個系統表,不能刪除或者修改其表結構。它的名稱叫做「偽表」或者「啞表」。

檢視其表結構:

sql> desc dual

名稱     是否為空?   型別

----------- --------  -----------

dummy             varchar2(1)

其欄位只有乙個「dummy」,中文叫做「啞巴」。長度只有1。這個表結構只供參考。

oracle的select語法的限制為:

select * | [column1 [as alias1], column2 [as alias2]] from table

所以,沒有表名就沒有辦法查詢,於是這個dual虛擬表的概念就被引入了。

問題:dual的作用是什麼,如何使用?

1、oracle中使用dual的主要原因是為了計算表示式的值。如計算:99*99。

對dual表的操作只能是查詢,其它如增刪改或者修改表結構,都沒有實際應用價值,不用研究。如:  

select 99*99 from dual;

返回: 9801

也可以一次性計算多個表示式的值,執行:

select 9*9,1+1,1/null from dual;

返回:9*9   1+1     1/null

--- ---------- ----------

81    2

注意,「1/null」的結果為null。因為在資料庫中,任何值與null進行運算,其結果為null。

2、還有乙個最常見的用途就是查詢當前系統日期,對應函式是:sysdate,即「system date」。

**:select sysdate from dual;

返回:sysdate

----------

22-11月-10

為了更容易看懂,可以用to_char函式指定顯式的格式。

select to_char(sysdate,'yyyy.mm.dd') as 當前日期 from dual;

返回:當前日期

----------

2010.11.22

執行:select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') as 當前時間 from dual;

返回:當前時間

-------------------

2010.11.22 11:28:44

3、另外,在學習序列以後,就可以知道,查詢序列的下乙個值和當前值,通常也會用到dual表

小結:·dual表主要用於計算表示式。

·表結構只供引數,實際返回的列數與表示式的個數有關

·dual表只有可能返回一行,不可能返回多行。因為dual表並不是從表中取資料。

以上,參考自

oracle中的dual詳解

對於oracle的dual,有以下幾點我們需要明確 第一點dual不是縮寫詞而是完整的單詞。dual名詞意思是對數,做形容詞時是指二重的,二元的。第二點oracle中的dual表是乙個單行單列的虛擬表。第三點dual表是oracle與資料字典一起自動建立的乙個表,這個表只有1列dummy,資料型別為...

oracle中 dual 的含義

字串查詢 instr 函式 格式 select instr 字串 子字串 開始查詢的位置,第幾個匹配的 from dual select instr hellosdahedsd he 2 from dual 補充 dual 是資料庫中的 乙個 虛 偽 表 沒實際意義的 但不可省略 dual是orac...

Oracle中dual表的用途

dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下 1 檢視當前使用者,可以在 sql plus中執行下面語句 select user from dual 2 用來呼叫系統函式 select to char sysdat...