Oracle Dual表

一、Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中,如:
1、查看系统当前时间 select sysdate from dual;
2、当计算器使用 select 3+3 from dual;
3、查看系统当前用户 select user from dual;
4、将系统当前时间转换为一定的格式:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
5、查看序列下一个值:select aaa.nextval from dual;

二、DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用.只有一个字段DUMMY,为VARCHAR2(1)型。
DUAL表是建立在SYSTEM表空间的,第一是因为DUAL表是SYS这个用户建的,本来默认的表空间就是SYSTEM;第二,把这个可能经常被查询的表和用户表分开来存放,对于系统性能的是有好处的。


[color=red]------------------------ 华丽的分割线 -----------------------------[/color]
字符函数分为转换函数和字符操作函数

  转换函数有: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,1,3)) from emp; //返回一列,此列是某列的字串。 Select length(‘我爱你’) from dual; //返回3,字母和汉字都是按两个字节来存储的。 select lpad(ename,10,'*') from emp; //返回名字,如果不足10个,用*补全。

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

  例如:

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

  3:Oracle Dual表

  Oracle Dual表比较特殊,是一个系统表,只有一个Dummy Varchar2(1)字段,而且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表中随便插入几条记录然后查询:

  SQL> select * from dual; D - X SQL> select rowid ,dummy from dual; ROWID D ------------------ - AAAM1CAABAAAAgiAAA X SQL> select rowid ,dummy from dual order by dummy; ROWID D ------------------ - AAAM1CAABAAAAgiAAA X AAAM1CAABAAAAgiAAB Y AAAM1CAABAAAAgiAAC Y AAAM1CAABAAAAgiAAD Z
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值