Oracle中的双表是什么?
我听说有人提到这张桌子,但不确定它是关于什么的。
解决方案
回答
我认为这篇维基百科文章可能有助于澄清。
http://en.wikipedia.org/wiki/DUAL_table
The DUAL table is a special one-row table present by default in all Oracle database installations. It is suitable for use in selecting a pseudocolumn such as SYSDATE or USER The table has a single VARCHAR2(1) column called DUMMY that has a value of "X"
回答
我们可以针对某种伪表运行命令并获取结果,例如sysdate。还可以检查Oracle是否启动并检查sql语法等。
回答
这是一种具有单个记录的伪表,用于在我们实际上对数据不感兴趣时选择,而是在select语句中希望某些系统函数的结果:
例如从双重选择sysdate;
参见http://www.adp-gmbh.ch/ora/misc/dual.html
回答
这是Oracle中的特殊表。我经常将其用于计算或者检查系统变量。例如:
- "从对偶中选择2 * 4"会打印出计算结果
- 从双重选择sysdate打印服务器当前日期。
回答
它是一个虚拟表,其中包含一个元素。这很有用,因为Oracle不允许使用以下语句
SELECT 3+4
我们可以通过以下方式解决此限制:
SELECT 3+4 FROM DUAL
反而。
回答
从返回1空行中放入的对象。例如:
从对偶中选择1;
返回1
从双选中选择21 + 44;
返回65
从对偶中选择[sequence] .nextval;
返回序列中的下一个值。
回答
DUAL表是一种特殊的单行表,默认情况下在所有Oracle数据库安装中都存在。它适用于选择伪列,例如SYSDATE或者USER
该表具有一个称为DUMMY的VARCHAR2(1)列,其值是" X"
我们可以在http://en.wikipedia.org/wiki/DUAL_table中阅读全部内容
回答
来自维基百科
历史
DUAL表是由Oracle公司的Chuck Weiss创建的,用于提供用于内部视图联接的表:
I created the DUAL table as an underlying object in the Oracle Data Dictionary. It was never meant to be seen itself, but instead used inside a view that was expected to be queried. The idea was that you could do a JOIN to the DUAL table and create two rows in the result for every one row in your table. Then, by using GROUP BY, the resulting join could be summarized to show the amount of storage for the DATA extent and for the INDEX extent(s). The name, DUAL, seemed apt for the process of creating a pair of rows from just one. 1
从上面可能看不出来,但是原始DUAL表中有两行(因此得名)。如今,它只有一行。
优化
DUAL最初是一个表,并且从DUAL中进行选择时,数据库引擎将在该表上执行磁盘IO。该磁盘IO通常是逻辑IO(不涉及物理磁盘访问),因为磁盘块通常已经缓存在内存中。这导致针对DUAL表的大量逻辑IO。
Oracle数据库的更高版本已经过优化,即使DUAL表仍然存在,该数据库也不再对DUAL表执行物理或者逻辑IO。
回答
在PL / SQL开发中,必须使用DUAL才能使用仅在SQL中可用的功能
例如
DECLARE x XMLTYPE; BEGIN SELECT xmlelement("hhh", 'stuff') INTO x FROM dual; END;