• oracle--dual-伪表


    Oracle提供的最小的工作表,只有一行一列,具有某些特殊功用。

    特性

    1. Oracle提供的最小的,不论进行何种操作(不要删除记录),它都只有一条记录——'X'。
      例如:执行select * from dual,里面只有一条记录;执行insert into dual values('Y')后,再次查询dual表,仍然显示一条记录。
    2. 是sys用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在。
      例如:执行一个查看当前日期的语句 select sysdate from dual,这条语句在放在放在任何一个oracle数据库当中都不会报错,所以一般做一些特定查询的时候用这个表是最稳妥的。

    用途

    1. select计算常量表达式、伪列等值
      oracle内部处理使它只返回一行数据,而使用其它表时可能返回多个数据行。
    2. 查看当前用户
      select user from dual;
      select count(*) from dual;
    3. 用做计算器
      select 7*9*10-10 from dual;
      1. 获得当前系统时间
        select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
      2. 获得主机名
        select sys_context('userenv','terminal') from dual;
      3. 获得当前locale
        select sys_context('userenv','language') from dual;
      4. 获得一个随机数
        select DBMS_RANDOM.random from dual;
    4. 查看序列值
      1. 创建序列aaa 以1开始,每次加1
        create sequence aaa increment by 1 start with 1;
      2. 获得序列aaa 的下一个序列值
        select aaa.nextval from dual;
      3. 获得序列aaa 的当前序列值
        select aaa.currval from dual;

    原理

    dual倒底是什么object?它有什么特殊的行为吗?
    select owner, object_name , object_type from dba_objects where object_name like '%DUAL%';
    原来dual是属于sys schema的一个表,然后以PUBLIC SYNONYM的方式供其他用户使用。
    可以利用dual表和日期函数设置日期格式及运算,从而理解它们如何起作用。
  • 相关阅读:
    从体制内的国家干部转变为自由职业者-2017年总结
    为什么选择Django?
    Django contrib Comments 评论模块详解
    Django 2.0 新特性 抢先看!
    Python 为何能坐稳 AI 时代头牌语言
    为什么说Python 是大数据全栈式开发语言
    继承中的构造方法
    super关键字
    方法的重写
    类的继承与访问控制
  • 原文地址:https://www.cnblogs.com/miss123/p/5584518.html
Copyright © 2020-2023  润新知