- 我们先从名称来说,dual不是缩写词,本身就是完整的单词。dual名词意思是对数,做形容词时是指二重的,二元的。
- Oracle中的dual表是一个单行单列的虚拟表。
- Dual表是oracle与数据字典一起自动创建的一个表,这个表只有1列:DUMMY,数据类型为VERCHAR2(1),dual表中只有一个数据'X', Oracle有内部逻辑保证dual表中永远只有一条数据。
- Dual表主要用来选择系统变量或求一个表达式的值。
- 更具体的说,我们见过这样一个简单的例子:
SELECT sysdate FROM daul
而Oracle的SELECT语法的限制为:
SELECT * | [column1 [AS alias1], column2 [AS alias2]] FROM table
所以,没有表名就没有办法查询,而时间日期并不存放在任何表中,于是这个dual虚拟表的概念就被引入了。
1、DUAL表的用途
Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中
--查看当前连接用户
SQL> select user from dual;
USER
SYSTEM
--查看当前日期、时间
SQL> select sysdate from dual;
SYSDATE
2007-1-24 1
SQL> select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') from dual;
TO_CHAR(SYSDATE,''YYYY-MM-DDHH2
2007-01-24 15:02:47
--当作计算器用
SQL> select 1+2 from dual;
1+2
3
--查看序列值
SQL> create sequence aaa increment by 1 start with 1;
SQL> select aaa.nextval from dual;
NEXTVAL
1
SQL> select aaa.currval from dual;
CURRVAL
1