Oracle dual

       dual 是一个系统表,不能删除或者修改其表结构。它的名称叫做“伪表” dual 是一个系统表,不能删除或者修改其表结构。它的名称叫做“伪表”或者 哑表”。查看表结构:

      SQL> desc dual;
       Name  Type        Nullable Default Comments 
       ----- ----------- -------- ------- -------- 
       DUMMY VARCHAR2(1) Y 

其字段只有一个“dummy”,中文叫做“哑巴” 其字段只有一个“dummy”,中文叫做“哑巴”。长度只有 1。这个表结构只供 “dummy” 参考。

        在 Oracle 中,使用 dual 的主要原因是为了计算表达式的值。如计算:99*99。 表的操作只能是查询,其它如增删改或者修改表结构, 对 dual 表的操作只能是查询,其它如增删改或者修改表结构,都没有实际应用 价值,不用研究。 不使用。 价值,不用研究。何况有可能会导致 Oracle 不使用。

        SQL> select 99*99 from dual;
 
             99*99
        ----------
              9801

        也可以一次性计算多个表达式的值:

        SQL> select 9*9,1+1,1/null from dual;
 
               9*9        1+1     1/NULL
        ---------- ---------- ----------
                81          2 

        注意:“1/null”的结果为 null。因为在数据库中,任何值与 null 进行运算,其结果为 null。
        还有一个最常见的用途就是查询当前系统日期,对应函数是:sysdate,即“sysdate date”:

        SQL> select sysdate from dual;
 
        SYSDATE
        -----------
        2011-12-1 1

        为了更容易看懂,可以用 to_char 函数指定显式的格式。

        SQL> select to_char(sysdate,'yyyy.mm.dd') as 当前日期 from dual;
 
        当前日期
         ----------
        2011.12.01
        SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') as 当前时间 from dual; 
 
        当前时间
         -------------------
        2011.12.01 18:40:06

        插入数据时也可以用到,不过这是一个技巧:

        SQL> create table test_delete(name varchar2(10),value int);
 
        Table created
        SQL> INSERT INTO test_delete
        2    SELECT '张三', 100 FROM dual
        3    UNION ALL SELECT '张三', 100 FROM dual
        4    UNION ALL SELECT '李四', 80 FROM dual
        5    UNION ALL SELECT '王五', 80 FROM dual
        6    UNION ALL SELECT '王五', 80 FROM dual
        7    UNION ALL SELECT '赵六', 90 FROM dual
        8    UNION ALL SELECT '赵六', 70 FROM dual;
 
        7 rows inserted

       另外,在学习序列以后,就可以知道,查询序列的下一个值和当前值,通常也 会用到 dual 表。

小结:
         ·dual 表主要用于计算表达式。

         ·表结构只供参数,实际返回的列数与表达式的个数有关 表结构只供参数, 表只有可能返回一行,不可能返回多行。

         ·dual 表只有可能返回一行,不可能返回多行。因为 dual 表并不是从表中取数据。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值