问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ORACLE数据库中,dual表究竟有什么作用,怎么老师上课总用这个表?

发布网友 发布时间:2022-04-07 23:51

我来回答

4个回答

懂视网 时间:2022-04-08 04:12

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下:

  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 your_sequence.nextval from dual;--获得序列your_sequence的下一个值

  select your_sequence.currval from dual;--获得序列your_sequence的当前值

  4、可以用做计算器 select 7*9 from dual;

  ------

  Oracle系统中dual表是一个“神秘”的表,网上有很多网友都对该表进行了测试,该表只有一行一列,其实该表和系统中的其他表一样,一样可以执行插入、更新、删除操作,还可以执行drop操作。但是不要去执行drop表的操作,否则会使系统不能用,数据库起不了,会报Database startup crashes with ORA-1092错误。此时也不要慌乱,可以通过执行以下步骤来进行恢复。可以用sys用户登陆。

  SQL> create pfile=’d:pfile.bak’ from spfile

  SQL> shutdown immediate

  在d:pfile.bak文件中最后加入一条:

  replication_dependency_tracking = FALSE

  重新启动数据库:

  SQL> startup pfile=’d:pfile.bak’

  SQL> create table “sys”.”DUAL”

  [an error occurred while processing this directive]

  =====

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

  SQL> select sysdate from dual;

  SYSDATE

  ---------

  28-SEP-03

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

  SQL> connect system/manager

  Connected.

  SQL> select owner, object_name , object_type from dba_objects where object_name like ‘%DUAL%‘; OWNER OBJECT_NAME OBJECT_TYPE

  --------------- --------------- -------------

  SYS DUAL TABLE PUBLIC DUAL SYNONYM

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

  再看看它的结构:

  SQL> desc dual Name Null? Type

  ----------------------------------------- -------- ----------------------------

  DUMMY VARCHAR2(1)

  SQL>

  只有一个名字叫DUMMY的字符型COLUMN .

  然后查询一下表里的数据:

  SQL> select dummy from dual;

  DUMMY

  ----------

  X

  哦, 只有一条记录, DUMMY的值是’X’ .很正常啊,没什么奇怪嘛. 好,下面就有奇妙的东西出现了!

  插入一条记录:

  SQL> connect sys as sysdba

  Connected.

  SQL> insert into dual values ( ‘Y‘);

  1 row created.

  SQL> commit;

  Commit complete.

  SQL> select count(*) from dual;

  COUNT(*)

  ----------

  2

  迄今为止,一切正常. 然而当我们再次查询记录时,奇怪的事情发生了

  SQL> select * from dual;

  DUMMY

  ----------

  X

  刚才插入的那条记录并没有显示出来 ! 明明DUAL表中有两条记录, 可就是只显示一条!

  再试一下删除 ,狠一点,全删光 !

  SQL> delete from dual; /*注意没有限定条件,试图删除全部记录*/

  1 row deleted.

  SQL> commit;

  Commit complete.

  哈哈,也只有一条记录被删掉,

  SQL> select * from dual;

  DUMMY

  ----------

  Y

  为什么会这样呢? 难道SQL的语法对DUAL不起作用吗?带着这个疑问,

  我查询了一些ORACLE官方的资料. 原来ORACLE对DUAL表的操作做了一些内部处理,尽量保证DUAL表中只返回一条记录.当然这写内部操作是不可见的 . 看来ORACLE真是蕴藏着无穷的奥妙啊!

Oracle中dual表的用途介绍

标签:

热心网友 时间:2022-04-08 01:20

这个表实际上是sys用户下的一个表,只有一个字段,一条记录,其他用户看到的只是一个公共同义词,所有用户都有权限查看这个公共同义词-【al】使用这个表的好处是无论什么时候这个表总是存在的,例如执行一个查看当前日期的语句 select sysdate from al;
这条语句在放在放在任何一个oracle数据库当中都不会报错,所以一般做一些特定查询的时候用这个表是最稳妥的。

热心网友 时间:2022-04-08 02:38

al是一个虚拟表,用来构成select语法规则,oracle保证al里面永远只有一条记录。
作用:
  1、查看当前用户,可以在 SQL Plus中执行下面语句 select user from al;
  2、用来调用系统函数
  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al;--获得当前系统时间
  select SYS_CONTEXT('USERENV','TERMINAL') from al;--获得主机名
  select SYS_CONTEXT('USERENV','language') from al;--获得当前 locale
  select dbms_random.random from al;--获得一个随机数
  3、得到序列的下一个值或当前值,用下面语句
  select your_sequence.nextval from al;--获得序列your_sequence的下一个值
  select your_sequence.currval from al;--获得序列your_sequence的当前值
  4、可以用做计算器 select 7*9 from al;
5、得到1到(n - 1)的数select level r from al connect by level < 10; -- 输出1-9的数

热心网友 时间:2022-04-08 04:13

al可以理解为oracle中存在的一张虚拟表,因为sql命令强制要求数据从某表中取得,也就是说sql语句中必须要有from命令,所以oracle定义了虚拟表al,提供一些特殊字段的查询,例如时间日期、算术运算等功能。
select sysdate from al;
selecr 1+2 from al;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 别人扫我的微信二维码收款时,哪怕一元钱都要输密码,怎么设置密码,没有密码钱? 立定跳远腰痛 如何样才能让立定跳远一千米个坐位体前屈的成绩提高 立定跳远落地时如果没站稳会不会无成绩? 立定跳远和青蛙跳有什么共同之处 怎样能快速提高立定跳远的能力? 立定跳远和引体向上有什么技巧吗?高手请赐教。 立定跳远是双脚起跳,但它是田径运动吗? 中考立定跳远 立定跳远的正规跳法和技巧吗? 为什么我抖音号礼物更新不了 抖音为什么刷礼物就显人不刷就不显 抖音什么时候禁止刷礼物 跪求照相馆工作人员PS修图教程!! 儿童摄影怎样拍摄孩子的皮肤更通透 那里有ps的全部教程? 刚进入影楼做后期修图,会使用ps软件。不太会修图 调色。 儿童摄影修图用什么软件? PS两步打造经典暗调中性色照片 22岁女生想学PS,以后去儿童摄影小店或者婚纱影楼应聘后期设计,想问一下具体学什么,有没有PS网上教程, 沈阳建设银行周日休息吗? 从哪里看手机的IP地址(红米1s)? 红米note手机如何设置ip地址查询(联通版) 红米手机,链接WIFI时一直显示获取IP地址。就是链接不上,怎么回事。在线等。谢谢 红米4手机怎么样把网络IP地址设置成为静态呀? 红米note手机连接wifi一直显示正在获取ip地址 今天我回到家发现红米手机连接不上wifi,一直显示正在获取IP地址。重新输入密码也连不上 我用手机开热点, 笔记本和车子都要连上,而且我要看到Ip地址,怎么办啊,很急,我是红米Redmi7 红米手机的ip地址不可用,现在WIFI也连接不了,求解 红米手机连不上小米WiFi创建的无线信号,一直提示正在获取ip地址,怎么回事? 红米手机连不上小米WiFi创建的无线信号,一直提示正在获取ip地址... dual这表有什么用?在oracle中的 求介绍一种小型饮水机呀!我想放在办公室,能烧水的那种? 关于饮水机烧水问题 普通饮水机烧水开一夜费多少电? 华为Mate 30 Pro和今年的9月新款iPhone 11,你会选哪个?为什么? 数长方形的方法是怎么样的? 华为Mate 30Pro输了,苹果11销量遥遥领先,库克到底依靠什么胜出? 怎样数出长方形的个数? 怎样巧数长方形的个数