OracleDual表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OracleDual表相关的知识,希望对你有一定的参考价值。

参考技术A

  一 Dual 是 Oracle中的一个实际存在的表 任何用户均可读取 常用在没有目标表的Select语句块中 如

   查看系统当前时间 select   sysdate   from   dual;

   当计算器使用 select   +    from   dual;

   查看系统当前用户 select user from dual;

   将系统当前时间转换为一定的格式 select to_char(sysdate yyyy mm dd hh :mi:ss ) from dual;

   查看序列下一个值 select aaa nextval from dual;

  二 DUAL是属于SYS schema的一个表 然后以PUBLIC SYNONYM的方式供其他数据库USER使用 只有一个字段DUMMY 为VARCHAR ( )型

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

       华丽的分割线  

  字符函数分为转换函数和字符操作函数

  转换函数有 LOWER UPPER INITCAP(首字母大写)

  字符操作函数 CONCAT SUBSTR LENGTH INSTR(某个字符串在此字符串中的位置) IPAD(字符串按某种格式显示);

  例如

  select initcap(ename) from emp; //返回所有所有的人名 并且将名字首字母大写 select concat(ename job) from emp; //返回一列 此列是由ename和job组成的 select initcap(substr(ename )) from emp; //返回一列 此列是某列的字串 Select length( 我爱你 ) from dual; //返回 字母和汉字都是按两个字节来存储的 select lpad(ename * ) from emp; //返回名字 如果不足 个 用*补全

   在Oracle内部存储都是以大写存储的

  例如

  select * from emp where ename= king ; //查找不出结果 select * from emp where ename=upper( king ); //能查找出符合条件的结果

   Oracle Dual表

  Oracle Dual表比较特殊 是一个系统表 只有一个Dummy Varchar ( )字段 而且Oracle会尽量保证它只返回一条记录 在查询Oracle中的sysdate或sequence currval等系统值时需要在Select 语句中写Dual 如 select sysdate from dual 用Dual表来查询一些没有具体用户表的数据

  其实在每个表中都有一个隐藏的rowid rownum(除了dual 其他表都有)

  dual不仅可以插入还可以删除(最好不要删除该表 可能会引起数据库无法启动 如果误删也有解决办法 将参数replication_dependency_tracking 设置成 FALSE就可以了)

  dual它应该是系统内存中的一个虚拟的表 而系统中的dual表只是为了维护数据字典和系统对dual的操作权限 在看看下面的实验 向Oracle Dual表中随便插入几条记录然后查询

lishixinzhi/Article/program/Oracle/201311/18906

Oracle 表空间详解

目录