oracle中的dual详解
对于Oracle的dual,有以下几点我们需要明确:
第一点
dual不是缩写词而是完整的单词。dual名词意思是对数,做形容词时是指二重的,二元的。
第二点
Oracle中的dual表是一个单行单列的虚拟表。
第三点
Dual表是oracle与数据字典一起自动创建的一个表,这个表只有1列DUMMY,数据类型为VERCHAR2(1),dual表中只有一个数据'X', Oracle有内部逻辑保证dual表中永远只有一条数据。
第四点
Dual表主要用来选择系统变量或求一个表达式的值。
第五点
最常见的一个简单的例子SELECT sysdate FROM daul
Oracle的SELECT语法的限制为 SELECT * | [column1 [AS alias1], column2 [AS alias2]] FROM table
所以没有表名就没有办法查询,而时间日期并不存放在任何表中,于是这个dual虚拟表的概念就被引入了。
DUAL表的用途
dual是Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中。
查看当前连接用户
select user from dual;
SYSTEM
查看当前日期、时间
select sysdate from dual;
2007-1-24 1
日期转换
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
2007-01-24 15:02:47
当作计算器用
select 1+2 from dual;
3
创建查看序列值
create sequence aaa increment by 1 start with 1;
select aaa.nextval from dual;
1
select aaa.currval from dual;
1
DUAL就是个一行一列的表,如果你往里执行insert,delete,truncate操作,就会导致很多程序出问题。结果也因sql*plus、pl/sql dev等工具而异。假我们插入想dual插入一条数据,那会是什么结果呢?
insert into dual values('Y');
select * from dual;
DUMMY
-----
X
Y
select sysdate from dual;
SYSDATE
-----------
2004-12-15
2004-12-15
这个时候返回的是两条记录,会引起问题。在通过使用select sysdate into v_sysdate from dual来获取时间或者其他信息的存储过程来说,ORACLE会抛出TOO_MANY_ROWS(ORA-01422)异常。
因此,需要保证在DUAL表内有且仅有一条记录,不能把DUAL表的UPDATE,INSERT,DELETE权限随意释放出去,这样对于系统是很危险的。
如果不小心把dual删除了,是可以恢复的。网上很多资料。
原帖地址:http://yesican.blog.51cto.com/700694/269814
oracle中的dual详解相关推荐
- oralce中的dual详解
oralce中的dual详解 dual是属于sys的 只有一个X varchar2(1)列 查询虚拟列不会产生逻辑IO ======================================== ...
- oracle中的用户详解 【转】
oracle中的用户详解 [转] - feiyun8616 - 博客园 (cnblogs.com)https://www.cnblogs.com/feiyun8616/p/6497690.htmlor ...
- oracle中imp命令详解,ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对照...
ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间 ...
- oracle中调试存储过程,详解Oracle调试存储过程
详解Oracle调试存储过程 一 调试关键步骤 1.在要调试的存储过程右键,选择编辑以进行调试,截图如下: 2.点击小瓢虫,弹出调试窗口,截图如下: 3.输入7839员工编号,点击确认,进行调试,截图 ...
- oracle中to_date函数详解
to_date()与24小时制表示法及mm分钟的显示: 一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用"yyyy-MM-dd HH:mm:ss& ...
- Oracle中动态SQL详解
1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...
- [转载]Oracle中动态SQL详解
1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...
- oracle中的index函数,Oracle中的索引详解(整理)
一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name ...
- oracle中常见索引,Oracle中的索引详解(整理)
一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name ...
最新文章
- Python自然语言处理中文版-学习笔记
- SAP Spartacus里的product carousel控件
- 怎样添加、移除、移动、复制、创建和查找节点?
- java导入导出excel_Java导入导出Excel工具 easyexcel
- 【Spring】HttpMessageNotWritableException No converter found for return value of type
- bzoj3255 一个关于序列的游戏
- 打印纸张尺寸换算_纸张开本和尺寸对照表!
- python安装pygame的命令是什么_Python的pygame安装教程详解
- 【muduo】TcpClient与TcpServer建立连接过程对比
- 对于课程签到设置合理性的调查报告
- 白化滤波器matlab程序,04实验四:白化滤波器的设计实验报告
- java单继承多实现_单继承,多实现
- BOM成本计算成最下级算到最上级
- 用python将九九乘法口诀表打印在Excel中
- Day10.事件下(学习日记10)
- python3GUI--翻译器-v2.0(附源码)
- 项目经理如何才能做好沟通?
- RSD 教程 —— §2.3 窗口布局
- 高效的HPPC java库
- 读007 学风险管理RSK
热门文章
- 经验法则:回波损耗多少才算多?//学习记录
- java 等待线程池结束_等待线程池中任务执行完毕做优雅关闭
- ASCII,ISO8859-1,GBK,GB18030,Unicode,UTF-8详解
- 女人一生中重要的三件事。
- pythonecharts地图画散点_用Python把图做的好看点:用Pyecharts做个交互地图(一)...
- 计算机毕业设计java+SSM学生兼职工作网站(源码+系统+mysql数据库+Lw文档)
- 中小型企业网络解决方案的设计和实施
- Android动画特效之Animator属性动画实现
- Python基础之算数运算符
- JAVA实现简单“伪植物大战僵尸“游戏