dual(Oracle中的一張內部表)

本詞條是多義詞,共3個義項
更多義項 ▼ 收起列表 ▲

Oracle提供的最小的工作表,只有一行一列,具有某些特殊功用。

基本介紹

  • 中文名:dual
  • 性質:Oracle中的一張表
  • 特點:Oracle提供的最小的工作表
  • 功能:某些特殊功用
表結構,特性,用途,原理,

表結構

Name
Type
DUMMY
Varchar(1)

特性

  1. Oracle提供的最小的,不論進行何種操作(不要刪除記錄),它都只有一條記錄——'X'。
    例如:執行select * from dual,裡面只有一條記錄;執行insert into dual values('Y')後,再次查詢dual表,仍然顯示一條記錄。
  2. 是sys用戶下的一張內部表,所有用戶都可以使用DUAL名稱訪問,無論什麼時候這個表總是存在。
    例如:執行一個查看當前日期的語句 select sysdate from dual,這條語句在放在放在任何一個oracle資料庫當中都不會報錯,所以一般做一些特定查詢的時候用這個表是最穩妥的。

用途

  1. select計算常量表達式、偽列等值
    oracle內部處理使它只返回一行數據,而使用其它表時可能返回多個數據行。
  2. 查看當前用戶
    select user from dual;
    select count(*) from dual;
  3. 用做計算器
    select 7*9*10-10 from dual;
  4. 獲得當前系統時間
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
  5. 獲得主機名
    select sys_context('userenv','terminal') from dual;
  6. 獲得當前locale
    select sys_context('userenv','language') from dual;
  7. 獲得一個隨機數
    select DBMS_RANDOM.random from dual;
查看序列值
  1. 創建序列aaa 以1開始,每次加1
    create sequence aaa increment by 1 start with 1;
  2. 獲得序列aaa 的下一個序列值
    select aaa.nextval from dual;
  3. 獲得序列aaa 的當前序列值
    select aaa.currval from dual;

原理

dual到底是什麼object?它有什麼特殊的行為嗎?
select owner, object_name , object_type from dba_objects where object_name like '%DUAL%';
原來dual是屬於sys schema的一個表,然後以PUBLIC SYNONYM的方式供其他用戶使用。
可以利用dual表和日期函式設定日期格式及運算,從而理解它們如何起作用。

相關詞條

熱門詞條

聯絡我們