Oracle中dual的解释

Q:dual是什么?
A: dual是一个系统表,不能删除或者修改其表结构。它的名称叫做“伪表”或者“哑表”。
查看其表结构:
SQL> desc dual
名称     是否为空?   类型
----------- --------  -----------
DUMMY             VARCHAR2(1)
其字段只有一个“dummy”,中文叫做“哑巴”。长度只有1。这个表结构只供参考。


Oracle的SELECT语法的限制为:

SELECT * | [column1 [AS alias1], column2 [AS alias2]] FROM table
所以,没有表名就没有办法查询,于是这个dual虚拟表的概念就被引入了。


问题:dual的作用是什么,如何使用?
1、Oracle中使用dual的主要原因是为了计算表达式的值。如计算:99*99。
dual表的操作只能是查询,其它如增删改或者修改表结构,都没有实际应用价值,不用研究。如:  
select 99*99 from dual;
返回: 9801
也可以一次性计算多个表达式的值,执行:
select 9*9,1+1,1/null from dual;
返回:
9*9   1+1     1/NULL
--- ---------- ----------
81    2
注意,“1/null”的结果为null。因为在数据库中,任何值与null进行运算,其结果为null。

2、还有一个最常见的用途就是查询当前系统日期,对应函数是:sysdate,即“system date”。
代码:
select sysdate from dual;
返回:
SYSDATE
----------
22-11月-10
为了更容易看懂,可以用to_char函数指定显式的格式。
select to_char(sysdate,'yyyy.mm.dd') as 当前日期 from dual;
返回:
当前日期
----------
2010.11.22
执行:
select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') as 当前时间 from dual;
返回:
当前时间
-------------------
2010.11.22 11:28:44
3、另外,在学习序列以后,就可以知道,查询序列的下一个值和当前值,通常也会用到dual表
小结:
·dual表主要用于计算表达式。
·表结构只供参数,实际返回的列数与表达式的个数有关
·dual表只有可能返回一行,不可能返回多行。因为dual表并不是从表中取数据




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值