tnblog
首页
视频
资源
登录

oracle数据库表dual的讲解

8061人阅读 2020/6/5 19:37 总访问:404058 评论:4 收藏:0 手机
分类: Oracle数据库

我希望有个如你一般的人


我还是很喜欢你,像日光洒满天地,温柔惬意。


先提个问 :oracle数据库里dual表是什么表?


这几天在使用oracle,常常会用到dual这个系统表,dual表到底是一个什么表?带着疑问google了一下,现在总结一下:


DUAL是Oracle与数据字典一起自动创建的一个表,它只有一列:DUMMY,其数据类型为:VARCHAR2(1)。DUAL中只有一行数据:'X'。DUAL属于SYS模式,但所有用户都可以使用DUAL名称访问它。用SELECT计算常量表达式、伪列等值时常用该表,因为它只返回一行数据,而使用其它表时可能返回多个数据行。


 

查看表结构:desc dual;


执行select * from dual;里面只有一条记录,插入一条记录,insert into dual values('Y');后,再次查询dual表,里面任然显示一条记录。刚才插入的那条记录并没有显示出来。明明DUAL表中有两条记录,可就是只显示一条。再试一下删除,狠一点,全删光,也只有一条记录被删掉。为什么会这样呢? 难道SQL的语法对DUAL不起作用吗?带着这个疑问, 我查询了一些ORACLE官方的资料. 原来ORACLE对DUAL表的操作做了一些内部处理,尽量保证DUAL表中只返回一条记录.当然这写内部操作是不可见的。看来ORACLE真是蕴藏着无穷的奥妙呢。


 

dual是一个oracle内部表,不论我们做什么操作(不要删除记录)它都只有一条记录,上面插入了一条之后,他仍然只有1条记录,所以很多取系统时间,计算,等只要选择一条记录,而且记录内容与表内容无关的操作,我们都喜欢使用这个表。虚表(dual)是oracle提供的最小的工作表,它仅包含一行一列。对于虚表(dual)来说,其中的列往往是不相关的或无关紧要的。


 

DUAL?有什么神秘的?当你想得到ORACLE系统时间,简简单单敲一行SQL不就得了吗?故弄玄虚…

SQL> select sysdate from dual;


 


举个例子:我们在查询数据的时候,有些参数是date类型的,在Orcale中,不能直接查询,需要做个时间的类型转换


假如我们查询一条SQL,如下:




或者这种:



这种情况报错:文字与格式字符串不匹配,说明也是不行。


最后我们对改参数作类型转换之后就OK了。



然后再去查询SQL,就有数据了:



总结:虽然是个小知识,但是对于我们初学者还是有极大的帮助哦!


确实DUAL的使用很方便。但是大家知道DUAL倒底是什么OBJECT,它有什么特殊的行为吗?我们一起看一看。首先搞清楚DUAL是什么OBJECT:


select owner, object_name , object_type from dba_objects where object_name like '%DUAL%'; 

原来DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用。


 


1、查看当前用户,可以在 SQL Plus中执行下面语句

      select user from dual;


2、用来调用系统函数

      select to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间

  select sys_context('userenv','terminal') from dual;--获得主机名

  select sys_context('userenv','language') from dual;--获得当前locale

  select DBMS_RANDOM.random from dual;--获得一个随机数


3、可以用做计算器

  select 7*9*10-10 from dual;


4、查看系统时间

     select sysdate from dual;


现在大家应该有所了解拉吧,感兴趣的建议亲自试试呢。


评价

剑轩

2020/6/6 11:05:02

我还是很喜欢你,像日光洒满天地,温柔惬意

陪你听风:@剑轩世界那么大,一生那么长,是否有一个人让你温情相待

2020/6/8 11:03:59 回复

剑轩:@陪你听风哈哈哈,有有有

2020/6/8 11:20:04 回复

陪你听风:@剑轩哈哈哈,那就好咯

2020/6/8 12:08:36 回复

oracle数据库中没有scott用户

使用SYS用户登录conn sys/密码 as sysdba(默认密码123456)然后找到oracle安装目录下scott.sql的这个文件然后执行命令:@+...

oracle自定义函数的简单使用

一.最最最简单的返回一个数字的函数createorreplacefunctionfun_show returnint--申明返回值 as begin return1; end;...

oracle存储过程

一个简单的带输入输出参数的存储过程(求两数之和)createorreplaceprocedureproc_sum(p1int,p2int,presultoutint) as be...

oracle事务的简单使用

事务:  事务是一个整体,这些操作要么全部执行成功,要么全部不执行。使用事务的原因:保证数据的安全有效。事务的四个特...

oracle编程基础

简单介绍一下oracle中if,else,case when,循环,异常处理等用法if,elsedeclareptypeint:=2; begin ifptype=1then dbms_out...

oracle使用游标

其实游标就是把查询的结果放入游标中,然后在去游标里边读取。相当于使用游标做了一个中转,而游标是可以作为参数进行传递...

oracle程序包

当项目越来越大的时候,数据库中的函数,存储过程等越来越多。为了方便管理,Oracle建议使用程序包的管理机制。实现业务模...

oracle中MERGE INTO,for,start with,decode用法

1. MERGEINTO:MERGEINTOT_TD_BU_MODIFY_NOTICE_LSA USING( selectMODIFY_NOTICE_ID,REJECT_REASONfromT_TD_BU_MODIFY_NOT...

oracle+命令

oracle常用命令SQLPLUS进入oracle撤销命令revoke 权限 form 用户名show user查询当前登录账户锁定账户命令Alter user 用户...

oracle 11g数据库的安装+空间管理

如果你在圣诞节没有收到礼物,请不要伤心也不要难过,因为接下来还有元旦,春节,还有情人节,还有元宵节......慢慢的你就...

oracle--常用命令、条件语句、循环语句、SQL函数

Oracle常用命令1、登录数据库默认账户 默认密码 拥有权限sys 123456 as sysdba 拥有数据库的最高权限system ...

oracle数据库的基本操作

Oracle数据库Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域...

oracle数据库的认识和基本使用

推荐一个Oracle数据库的一个学习网站:http://www.oraclejsq.com/article/010100110.html一、对Oracle数据库的认识1、数据...

oracle操作

Oracle数据库操作1、创建数据库create database databasename2、删除数据库drop database dbname3、备份数据库完全备份exp ...

oracle 安装和常用的命令

Oracle 安装如下:https://jingyan.baidu.com/article/f79b7cb32095f79144023eae.html默认账户Sys 123456 as sysdba 数据...

oracle数据库的同义词与视图

同义词概念:同义词顾名思义,是数据库方案对象的一个别名。这里的数据库方案对象指表、视图、序列、存储过程、包等。创建...
你之所以觉得时间一年比一年过得快,是因为时间对你一年比一年重要。
排名
13
文章
64
粉丝
20
评论
30
MUI框架页面间的传值指针
XingDy姐 : 不错哦
MUI框架页面间的传值指针
剑轩 : 接口的真实地址可以用xx/yy什么的代替哦,真实地址还是隐藏一下好
.NET EF 用户按钮权限
YOU : 可以,在写文章的时候,有需要写代码的地方,可以选择编辑器上的代...
.NET EF 用户按钮权限
剑轩 : 哈哈哈哈,你这个追女生的逻辑
EF三种模式解析
剑轩 : 好文采!
重要sql语句和linq,lamdba分组条件查询语句
剑轩 : 开头那句诗句写得很好哇!
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术