基本上oracle引入dual為的就是符合語法
1. 我們先從名稱來說,dual不是縮寫詞,本身就是完整的單詞。dual名詞意思是對數,做形容詞時是指二重的,二元的。
2. Oracle中的dual表是一個單行單列的虛擬表。
3. Dual表主要用來選擇系統變量或求一個表達式的值。
4. 更具體的說,我們見過這樣一個簡單的例子:
SELECT sysdate FROM daul
而Oracle的SELECT語法的限制為:
SELECT * | [column1 [AS alias1], column2 [AS alias2]] FROM table
所以,沒有表名就沒有辦法查詢,而時間日期並不存放在任何表中,於是這個dual虛擬表的概念就被引入了。
備注:
dual是一個系統表,不能刪除或者修改其表結構。它的名稱叫做“偽表”或者“啞表”。
查看其表結構:
SQL> desc dual
名稱 是否為空? 類型
----------- -------- -----------
DUMMY VARCHAR2(1)
其字段只有一個“dummy”,中文叫做“啞巴”。長度只有1。這個表結構只供參考。
DUAL表的用途:
Dual 是 Oracle中的一個實際存在的表,任何用戶均可讀取,常用在沒有目標表的Select語句塊中
--查看當前連接用戶
SQL> select user from dual;
--查看當前日期、時間
SQL> select sysdate from dual;
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
--當作計算器用
SQL> select 1+2 from dual;
--查看序列值
SQL> create sequence aaa increment by 1 start with 1;
SQL> select aaa.nextval from dual;