你是否了解Oracle Dual表

数据库 Oracle
这里介绍Oracle Dual表比较特殊,是一个系统表,只有一个Dummy Varchar2(1)字段,而且Oracle会尽量保证它只返回一条记录。

Oracle还是比较常用的,于是我研究了一下Oracle Dual表,在这里拿出来和大家分享一下,希望对大家有用。字符函数分为转换函数和字符操作函数

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

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

  1. select initcap(ename) from emp;    
  2. //返回所有所有的人名,并且将名字首字母大写。  
  3. select concat(ename,job) from emp;    
  4. //返回一列,此列是由ename和job组成的。  
  5. select initcap(substr(ename,1,3)) from emp;    
  6. //返回一列,此列是某列的字串。  
  7. Select length(‘我爱你’) from dual;        
  8. //返回3,字母和汉字都是按两个字节来存储的。  
  9. select lpad(ename,10,'*') from emp;    
  10. //返回名字,如果不足10个,用*补全。 

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

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

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表中随便插入几条记录然后查询:

  1. SQL> select * from dual;  
  2. D  
  3. -  
  4. X  
  5. SQL> select rowid ,dummy from dual;  
  6. ROWID              D  
  7. ------------------ -  
  8. AAAM1CAABAAAAgiAAA X  
  9. SQL> select rowid ,dummy from dual order by dummy;  
  10. ROWID              D  
  11. ------------------ -  
  12. AAAM1CAABAAAAgiAAA X  
  13. AAAM1CAABAAAAgiAAB Y  
  14. AAAM1CAABAAAAgiAAC Y  
  15. AAAM1CAABAAAAgiAAD Z 

【编辑推荐】

  1. 闲谈重做Oracle日志文件
  2. Oracle优化缓冲区之高论
  3. 详谈Oracle优化CPU使用率
  4. 概述操作系统Oracle优化
  5. 高手谈Oracle减少共享服务器进程
责任编辑:佚名 来源: 腾讯科技
相关推荐

2009-11-18 13:15:06

Oracle触发器

2009-11-17 17:11:32

Oracle空闲数据块

2009-11-20 17:10:43

Oracle B树索引

2009-05-13 10:28:30

OracleDUAL数据库

2009-11-18 13:20:07

PHP设计模式

2010-11-15 11:40:44

Oracle表空间

2011-05-31 09:38:48

OracleDUAL

2010-08-04 11:38:24

Oracle数据库

2009-11-19 14:52:37

Oracle UNIO

2009-12-02 18:04:35

SUSE Applia

2009-11-02 09:43:01

VB.NET构造函数

2010-10-27 15:58:01

Oracle临时表

2009-10-27 17:40:35

Oracle表空间状态

2023-07-10 09:27:36

分层架构服务架构

2009-11-18 18:19:49

Oracle.Net

2010-11-19 15:53:28

oracle管理表空间

2009-02-20 08:52:35

DLP数据分析

2009-10-23 11:33:52

VB.NET集成开发环

2017-10-17 10:15:54

数据库Oracle逻辑读和物理读

2011-07-05 09:27:54

DUAL表数据库
点赞
收藏

51CTO技术栈公众号