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...