1.概述
Oracle中有一个单行单列的虚拟表dual,引入该表的目的是为了符合语法。
Dual表是Oracle与数据字典一起自动创建的一个表。
Oracle有内部逻辑保证dual表中永远只有一条数据。
Oracle的SELECT语法的限制为:
SELECT * | [column1 [AS alias1], column2 [AS alias2]] FROM table
因而,如果没有表名就无法进行查询,于是引入了一个虚拟表dual。
2.dual表结构及数据
dual:
adj. 双的,两部分的,二体的,二重的;
n. 双数; 双数词;
我们来看下dual表的结构和数据。
在命令窗口下:
SQL> desc dual;
Name Type Nullable Default Comments
----- ----------- -------- ------- --------
DUMMY VARCHAR2(1) Y
SQL> select * from dual;
DUMMY
-----
X
可以看出
dual表是单行单列的表;
这个表只有1列:DUMMY,数据类型为VERCHAR2(1),dual表中只有一个数据’X’。
(dummy有傀儡、样品的意思)
3.dual表的作用
如下:
查看当前连接用户
SQL> select user from dual;
查看当前日期、时间
SQL> select sysdate from dual;
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;
数据计算
SQL> select 10*10 from dual;
4.dual建表语句
如下是dual的建表语句:
-- Create table
create table SYS.DUAL
(
dummy VARCHAR2(1)
)
tablespace SYSTEM
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 16K
next 1M
minextents 1
maxextents unlimited
);
-- Grant/Revoke object privileges
grant select on SYS.DUAL to PUBLIC with grant option;