Oracle的dual表作用

2022-02-05 15:55:12 字數 1623 閱讀 5136

1、檢視當前使用者,可以在 sql plus中執行下面語句

select user from dual;

2、用來呼叫系統函式

select to_char(sysdate,』yyyy-mm-dd hh24:mi:ss』) from dual;——獲得當前系統時間

select sys_context(』userenv』,』terminal』) from dual;——獲得主機名

select sys_context(』userenv』,』language』) from dual;——獲得當前locale

select dbms_random.random from dual;——獲得乙個隨機數

3、得到序列的下乙個值或當前值,用下面語句

select your_sequence.nextval from dual;——獲得序列your_sequence的下乙個值

select your_sequence.currval from dual;——獲得序列your_sequence的當前值

4、可以用做計算器

select 7*9 from dual;

專案裡經常見到類似下面的語句:

select seq_project.nextval from dual

用於獲取序列值。而自己並沒有建立dual這個表,這個表是誰建立的呢,主要是用來做什麼的呢?

下面是我找到的部分解釋:

dual是oracle與資料字典一起自動建立的乙個表,它只有一列:dummy,其資料型別為:varchar2(1)。

dual中只有一行資料:'x'。

dual屬於sys模式,但所有使用者都可以使用dual名稱訪問它。用select計算常量表示式、偽列等值時常用該錶,因為它只返回一行資料,而使用其它表時可能返回多個資料行。

在oracle資料庫中建立乙個序列,使表的pk順序生成為表建立序列

create sequence emp_sequence

increment by 1  -- 每次加幾個

start with 1   -- 從1開始計數

nomaxvalue    -- 不設定最大值

nocycle     -- 一直累加,不迴圈

cache 100;

create sequence nad_pv_sequ

increment by 1

start with 1807487

maxvalue 999999999999999999

nocycle

cache 100;

刪除序列

drop sequence nad_pv_sequ;

為表建立序列

create sequence empseq ... ;

select empseq.currval from dual ;

自動插入序列的數值

insert into emp

values (empseq.nextval, 'lewis', 'clerk',

7902, sysdate, 1200, null, 20) ;

dual表的作用

dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。1.函式 select to char sysday,yyyy mm dd from dual 查詢系統當前的時間 select sys context userenv terminal from d...

Oracle中dual表的用途

dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下 1 檢視當前使用者,可以在 sql plus中執行下面語句 select user from dual 2 用來呼叫系統函式 select to char sysdat...

oracle中dual表的用法

dual是乙個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下 1 檢視當前使用者,可以在 sql plus中執行下面語句 select user from dual 2 用來呼叫系統函式 select to char sysdat...