一文掌握Oracle中的Dual系統(tǒng)表
這幾天一直在研究Oracle,常常會用到Dual這個系統(tǒng)表,Dual表到底是一個什么表?帶著疑問baidu了一下:
Dual表是Oracle提供的最小的工作表(其實是一種虛擬表),是sys用戶下的一張內(nèi)部表,只有一行一列(一列:DUMMY,一列:DUMMY,其數(shù)據(jù)類型為:VARCHAR2(1))。所有用戶都可以使用Dual名稱訪問,無論什么時候這個表總是存在。不論進行何種操作(不要刪除記錄),它都只有一條記錄——'X'。
select * from dual;

我們來查一下它的表結(jié)構(gòu),PL/SQL Developer【命令窗口】輸入desc dual;

或者sys用戶下【SQL窗口】執(zhí)行以下語句
SELECT DBMS_METADATA.GET_DDL('TABLE','DUAL') FROM DUAL;
那么Dual在實際應用過程中可以做些什么呢?
- Dual表主要用來選擇系統(tǒng)變量或求一個表達式的值,最常見的一個簡單例子,執(zhí)行一個查看當前日期的語句,這條語句放在任何一個Oracle數(shù)據(jù)庫當中都不會報錯,所以一般做一些特定查詢的時候用這個表是最穩(wěn)妥的。
select sysdate from dual; --或日期轉(zhuǎn)換獲得當前系統(tǒng)時間,‘分鐘' 要用mi;hh24表示24小時制,hh表示12小時制。 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

- 當計算器使用
select 1024*1024 from dual;

- 查詢當前連接用戶
select user from dual;

- 查看序列值
--創(chuàng)建序列aaa 以1開始,每次加1 create sequence aaa increment by 1 start with 1; --獲得序列aaa 的下一個序列值,每次查詢加1 select aaa.nextval from dual; --獲得序列aaa 的當前序列值 select aaa.currval from dual;


- 獲得一個隨機數(shù)
select DBMS_RANDOM.random from dual;

- Dual到底是什么object?
select owner, object_name , object_type from dba_objects where object_name like '%DUAL%';
經(jīng)過查詢輸出的結(jié)果可以看到Dual是屬于sys的一個表,然后以PUBLIC SYNONYM的方式供其他用戶使用。
相關(guān)文章
oracle數(shù)據(jù)庫導出和oracle導入數(shù)據(jù)的二種方法(oracle導入導出數(shù)據(jù))
這篇文章主要介紹了oracle導入導出數(shù)據(jù)的二種方法,利用PL/SQL Developer工具導出和利用cmd的操作命令導出的出方法,大家參考使用吧2014-01-01
Oracle 數(shù)據(jù)倉庫ETL技術(shù)之多表插入語句的示例詳解
Oracle 數(shù)據(jù)庫為 ETL 流程提供了豐富的功能,今天我們就給大家介紹一下 Oracle 多表插入語句,也就是 INSERT ALL 語句,今天通過示例代碼給大家介紹Oracle 數(shù)據(jù)倉庫 ETL 技術(shù)之多表插入語句的相關(guān)知識,感興趣的朋友一起看看吧2021-04-04
Oracle數(shù)據(jù)庫中ora-12899錯誤的解決方法
大家在使用oracle數(shù)據(jù)庫時,經(jīng)常會遇到各種各樣的問題,其中ORA-12899就是前段時間我在將數(shù)據(jù)導入到我本地機器上的時候一直出現(xiàn)的問題.經(jīng)過一番倒騰問題順利解決,下面小編把實現(xiàn)思路分享到腳本之家平臺大家可以參考下2017-11-11
Oracle數(shù)據(jù)遠程連接的四種設(shè)置方法和注意事項
Oracle數(shù)據(jù)庫的遠程連接可以通過多種方式來實現(xiàn),本文我們主要介紹四種遠程連接的方法和注意事項,并通過示例來說明,接下來我們就開始介紹2014-04-04

