Oracle中的双表是什么?

Bri*_*n G 218 oracle dual-table

我听说有人提到这张桌子,不知道它是什么.

Sea*_*ins 216

它是一种带有单个记录的虚拟表,用于在您实际上对数据不感兴趣时​​进行选择,而是希望在select语句中使用某些系统函数的结果:

例如 select sysdate from dual;

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

  • 另一个很好的信息来源 - > http://en.wikipedia.org/wiki/DUAL_table (7认同)

mfx*_*mfx 78

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

 SELECT 3+4
Run Code Online (Sandbox Code Playgroud)

你可以通过写作解决这个限制

 SELECT 3+4 FROM DUAL
Run Code Online (Sandbox Code Playgroud)

代替.


Iva*_*nic 66

来自维基百科

历史

DUAL表由Oracle公司的Chuck Weiss创建,用于提供加入内部视图的表:

我创建了DUAL表作为Oracle数据字典中的底层对象.它本来就不会被人看到,而是在一个有望被查询的视图中使用.我们的想法是你可以对DUAL表进行JOIN,并在结果中为表中的每一行创建两行.然后,通过使用GROUP BY,可以汇总结果连接以显示DATA范围和INDEX范围的存储量.名称DUAL似乎适合从一个行创建一对行的过程.1

从上面可能不是很明显,但原始的DUAL表中有两行(因此它的名字).现在它只有一排.

优化

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

Oracle数据库的更高版本已经过优化,即使DUAL表仍然存在,数据库也不再在DUAL表上执行物理或逻辑IO.


Jor*_*ira 20

我认为这篇维基百科文章可能有助于澄清.

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

DUAL表是所有Oracle数据库安装中默认存在的特殊单行表.它适用于选择伪列,例如SYSDATE或USER.该表有一个名为DUMMY的VARCHAR2(1)列,其值为"X"


Mar*_*n08 10

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

  • Select 2*4 from dual 打印出计算结果
  • Select sysdate from dual 打印服务器当前日期.


AB0*_*B01 7

Oracle 中的实用程序表只有 1 行 1 列。它用于执行许多算术运算,通常可用于需要生成已知输出的情况。

从双选择*;

将给出一行,其中有一列名为“DUMMY”且值为“X”,如下所示:

DUMMY
----- 
X
Run Code Online (Sandbox Code Playgroud)


小智 5

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