oracle中dual是什,oracle中的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

2、关于DUAL表的测试与分析

DUAL就是个一行一列的表,如果你往里执行insert、delete、truncate操作,就会导致很多程序出问题。结果也因sql*plus、pl/sql dev等工具而异。

--查看DUAL是什么OBJECT

--DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用.

SQL> select owner, object_name , object_type from dba_objects where object_name like ''%DUAL%'';

OWNER OBJECT_NAME OBJECT_TYPE

---------- ----------------- ------------------

SYS DUAL TABLE

PUBLIC DUAL SYNONYM

--查看表结构,只有一个字段DUMMY,为VARCHAR2(1)型

SQL> desc dual

Name Type Nullable Default Comments

----- ----------- -------- ------- --------

DUMMY VARCHAR2(1) Y

--DUAL表的结构:

create table SYS.DUAL

(

DUMMY VARCHAR2(1)

)

tablespace SYSTEM

pctfree 10

pctused 40

initrans 1

maxtrans 255

storage

(

initial 16K

next 16K

minextents 1

maxextents 505

pctincrease 50

);

/*

很是困惑,ORACLE为什么要用VARCHAR(1)型,用CHAR(1)难道不好么?从这样的表结构来看,DUAL表设计的目的就是要尽可能的简单,以减少检索的开销。

还有,DUAL表是建立在SYSTEM表空间的,第一是因为DUAL表是SYS这个用户建的,本来默认的表空间就是SYSTEM;第二,把这个可能经常被查询的表和用户表分开来存放,对于系统性能的是有好处的。

有了创建了表、创建了同义词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值