Oracle中的双表是什么?

我听到人们提到这张桌子,但不确定它是关于什么的。

请先 登录 后评论

9 个回答

Jorge Ferreira

我想维基百科上的这篇文章可能有助于澄清。

http://en.wikipedia.org/wiki/DUAL_table

DUAL表是一个特殊的单行表,默认存在于所有Oracle数据库安装中。表中有一个名为DUMMY的VARCHAR2(1)列,其值为“X”。

请先 登录 后评论
Community

一种可以运行命令并获得结果的伪表,例如sysdate。还可以帮助您检查Oracle是否启动,检查sql语法等。

请先 登录 后评论
Sean McMains

它是一种虚拟表,只有一条记录,用于选择,当你实际上对数据不感兴趣,但希望在选择语句中获得某些系统函数的结果:

如。 select sysdate from dual;

参见http://www.adp-gmbh.ch/ora/misc/dual.html

请先 登录 后评论
Martin08

它是Oracle中的特殊表。我经常用它来计算或检查系统变量。例如:

  • Select 2*4 from dual 输出计算结果
  • Select sysdate from dual 打印服务器当前日期。
请先 登录 后评论
mfx

它是一个包含一个元素的虚拟表。它很有用,因为Oracle不允许这样的语句

 SELECT 3+4

您可以通过编写来绕过这个限制

 SELECT 3+4 FROM DUAL

代替。

请先 登录 后评论
Community

它是一个放入from返回1空行的对象。例如:select 1 from dual;返回1

从dual中选择21+44;返回65

选择(序列)。从双nextval;返回序列中的下一个值。

请先 登录 后评论
Sakin

DUAL表是一个特殊的单行表,默认存在于所有Oracle数据库安装中。它适合用于选择伪列,如SYSDATE或USER

表中有一个名为DUMMY的VARCHAR2(1)列,其值为“X”。

你可以在http://en.wikipedia.org/wiki/DUAL_table上阅读相关内容

请先 登录 后评论
Ivan Bosnic

维基百科

历史

DUAL表是由Oracle公司的Chuck Weiss创建的,用来提供一个连接内部视图的表:

我在Oracle数据字典中创建了DUAL表作为底层对象。它从来都不是要被看到的,而是在一个视图中被使用,而这个视图是要被查询的。其思想是,您可以对DUAL表执行一个JOIN,并为表中的每一行在结果中创建两行。然后,通过使用GROUP by,可以对结果连接进行汇总,以显示DATA区和INDEX区的存储量。DUAL这个名字似乎很适合从一行创建一对行的过程。1

从上面的内容中可能看不出来,但原始的DUAL表中有两行(因此得名)。现在它只有一行。

优化

DUAL最初是一个表,当从DUAL中进行选择时,数据库引擎将对表执行磁盘IO。这个磁盘IO通常是逻辑IO(不涉及物理磁盘访问),因为磁盘块通常已经缓存在内存中。这导致了针对DUAL表的大量逻辑IO。

Oracle数据库的后期版本已经进行了优化,数据库不再对DUAL表执行物理或逻辑IO,即使DUAL表实际上仍然存在。

请先 登录 后评论
steevc

在PL/SQL开发中,使用仅在SQL中可用的函数时,DUAL是必要的

如。

DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;
请先 登录 后评论