7 回答

TA貢獻1869條經驗 獲得超4個贊
1. dual 確實是一張表.是一張只有一個字段,一行記錄的表.
2.習慣上,我們稱之為'偽表'.因為他不存儲主題數據.
3. 他的存在,是為了操作上的方便.因為select 都是要有特定對象的.
如:select * from mytable ;
select * from myview;
等等.
但如果我們不需要從具體的表來取得表中數據,而是單純地為了得到一些我們想得到的信息,并要通過select 完成時,就要借助一個對象,這個對象,就是dual;
如我們要計算 999*999 的值,可以用:
select 999*999 from dual;
來實現;
要拼接一個電話信息:
select concat('010-','88888888')||'轉23' 高乾競電話 from dual;
就變成了我們想要的格式輸出.
4.當然,我們不一定要dual ,也可以這樣做.例如:
create table mydual( dummy varchar2(1));
也可以實現和dual 同樣的效果:
select 999*999 from mydual;
不過,dual 我們都用習慣了,就無謂自己再搞一套了.

TA貢獻1797條經驗 獲得超6個贊
dual是個虛表,其中只有一列,當你查詢時間或者日期等的時候就需要使用這個表,例如 select sysdate from dual;
因為在oracle當中查詢語句必須要有關鍵字 select ....from tablename; 只有這樣語句才完整,要是沒有表名就無法查詢,而時間,日期等不存在于任何表,這個時候就引入了 dual 虛表的概念。

TA貢獻1875條經驗 獲得超5個贊
在Oracle數據庫內有一種特殊的表Dual。Dual表是Oracle中的一個實際存在的表,任何用戶均可讀取,常用在沒有目標表的Select中。Dual表由Oracle連同數據字典一同創建,所有的用戶都可以用名稱DUAL訪問該表。這個表里只有一列DUMMY,該列定義為VARCHAR2(1)類型,有一行值X。從DUAL表選擇數據常被用來通過SELECT語句計算常數表達式,由于DUAL只有一行數據,所以常數只返回一次。
- 7 回答
- 0 關注
- 772 瀏覽