表結構
Name | Type |
DUMMY | Varchar(1) |
特性
Oracle提供的最小的表,不論進行何種操作(不要刪除記錄),它都只有一條記錄——'X'。
例如:執行select * from dual,裡面只有一條記錄;執行insert into dual values('Y')後,再次查詢dual表,仍然顯示一條記錄。
是sys用戶下的一張內部表,所有用戶都可以使用DUAL名稱訪問,無論什麼時候這個表總是存在。
例如:執行一個查看當前日期的語句 select sysdate from dual,這條語句在放在放在任何一個oracle資料庫當中都不會報錯,所以一般做一些特定查詢的時候用這個表是最穩妥的。
1.Oracle提供的最小的表,不論進行何種操作(不要刪除記錄),它都只有一條記錄——'X'。
例如:執行select * from dual,裡面只有一條記錄;執行insert into dual values('Y')後,再次查詢dual表,仍然顯示一條記錄。
2.是sys用戶下的一張內部表,所有用戶都可以使用DUAL名稱訪問,無論什麼時候這個表總是存在。
例如:執行一個查看當前日期的語句 select sysdate from dual,這條語句在放在放在任何一個oracle資料庫當中都不會報錯,所以一般做一些特定查詢的時候用這個表是最穩妥的。
用途
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;
獲得當前locale
select sys_context('userenv','language') from dual;
獲得一個隨機數
select DBMS_RANDOM.random from dual;
查看序列值
創建序列aaa 以1開始,每次加1
create sequence aaa increment by 1 start with 1;
獲得序列aaa 的下一個序列值
select aaa.nextval from dual;
獲得序列aaa 的當前序列值
select aaa.currval from dual;
1.select計算常量表達式、偽列等值
oracle內部處理使它只返回一行數據,而使用其它表時可能返回多個數據行。
2.查看當前用戶
select user from dual;
select count(*) from dual;
3.用做計算器
select 7*9*10-10 from dual;
4.調用系統函式
5.獲得當前系統時間
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
6.獲得主機名
select sys_context('userenv','terminal') from dual;
7.獲得當前locale
select sys_context('userenv','language') from dual;
8.獲得一個隨機數
select DBMS_RANDOM.random from dual;
9.查看序列值
10.創建序列aaa 以1開始,每次加1
create sequence aaa increment by 1 start with 1;
11.獲得序列aaa 的下一個序列值
select aaa.nextval from dual;
12.獲得序列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表和日期函式設定日期格式及運算,從而理解它們如何起作用。