-
dual
(Oracle中的一張內部表)
鎖定
- 中文名
- dual
- 性 質
- Oracle中的一張表
- 特 點
- Oracle提供的最小的工作表
- 功 能
- 某些特殊功用
dual表結構
Name | Type |
DUMMY | Varchar2(1) |
dual特性
- 是sys用户下的一張內部表,所有用户都可以使用DUAL名稱訪問,無論什麼時候這個表總是存在。例如:執行一個查看當前日期的語句 select sysdate from dual,這條語句在放在放在任何一個oracle數據庫當中都不會報錯,所以一般做一些特定查詢的時候用這個表是最穩妥的。
dual用途
- select計算常量表達式、偽列等值oracle內部處理使它只返回一行數據,而使用其它表時可能返回多個數據行。
- 查看當前用户select user from dual;select count(*) from dual;
- 用做計算器select 7*9*10-10 from dual;
- 調用系統函數
- 獲得當前系統時間select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
- 獲得主機名select sys_context('userenv','terminal') from dual;
- 獲得當前localeselect sys_context('userenv','language') from dual;
- 獲得一個隨機數select DBMS_RANDOM.random from dual;
- 查看序列值
- 創建序列aaa 以1開始,每次加1create sequence aaa increment by 1 start with 1;
- 獲得序列aaa 的下一個序列值select aaa.nextval from dual;
- 獲得序列aaa 的當前序列值select aaa.currval from dual;
dual原理
dual到底是什麼object?它有什麼特殊的行為嗎?
select owner, object_name , object_type from dba_objects where object_name like '%DUAL%';
原來dual是屬於sys schema的一個表,然後以PUBLIC SYNONYM的方式供其他用户使用。
可以利用dual表和日期函數設置日期格式及運算,從而理解它們如何起作用。