关于dual表的一些资料

转载 2007年09月13日 09:16:00

经常看到别人的存储过程中有select …………from dual;

那么DUAL表是什么表呢?及作用又是做什么的?

现在做个小结:

 


为了SQL语意完整而已

select sysdate from dual

相当与Sql Server的

set @Date=getdate()

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

在查询语句中产生临时计算数据的,一个帮助查询语句产生计算结果的临时表

在Oracle数据库内有一种特殊的表Dual。Dual表是Oracle中的一个实际存在的表任何用户均可读取,常用在没有目标表的Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。

Oracle下的DUAL查询如下所示:
SELECT ‘x’ FROM dual
而对等的SQL Server查询则是下面这个样子:
SELECT ‘x’

以下是null相关的知识,用到了dual:
SQL> select 1 from dual where null=null;
没有查到记录
SQL> select 1 from dual where null='';
没有查到记录
SQL> select 1 from dual where ''='';
没有查到记录
SQL> select 1 from dual where null is null;
1
---------
1
SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
1
---------
1
查看当前连接用户
SQL> select user from dual;

查看当前日期、时间
SQL> select sysdate from dual;

 

Oracle中的dual表到底是什么

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下: 1、查看当前用户,可以在 SQL Plus中执行下面语句 sq...
  • huiwenjie168
  • huiwenjie168
  • 2012年02月09日 15:23
  • 2789

oracle数据库里dual表是什么表?

这几天一直在研究oracle,常常会用到dual这个系统表,dual表到底是一个什么表?带着疑问google了一下,现在总结一下:DUAL是Oracle与数据字典一起自动创建的一个表,它只有一列:DU...
  • lpioneer
  • lpioneer
  • 2010年10月14日 11:32
  • 11417

Oracle和MySQL中的dual表

Oracle和MySQL中都有一张名称为dual的虚拟表,但是两者之前的区别呢?   在MySQL中,对dual表时怎么解释的: DUAL is purely for the con...
  • h254541060
  • h254541060
  • 2015年09月15日 21:31
  • 473

mysql中的dual表

mysql文档中对于dual表的解释: You are allowed to specify DUAL as a dummy table name in situations where n...
  • a137268431
  • a137268431
  • 2016年07月24日 15:59
  • 3189

MySQL和ORACLE的虚拟表DUAL

在mysql里也存在和oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用。 你可千万注意了: sele...
  • qq_27289001
  • qq_27289001
  • 2016年08月12日 15:24
  • 610

在hive中虚构dual表

虚构hive中的dual表
  • woqiang68
  • woqiang68
  • 2017年06月07日 20:20
  • 441

达梦数据库新建数据库提示DUAL表或视图不存在的解决方法

由于DM数据库中,dual伪表在SYSTEM库的SYSDBA模式下,非SYSDBA用户访问时需要带上库名和模式名来访问, 如果需要直接访问可以用SYSDBA创建一个PUBLIC同义词: CREATE ...
  • WangK_1991
  • WangK_1991
  • 2017年03月16日 10:29
  • 329

关于虚表dual 的来源 作用

这是个虚拟表,你在操作大多数Oracle对象的时候都可以使用这个表,比如sequence,sysdate等等。  比如select sysdate from dual           sel...
  • chang_oracle
  • chang_oracle
  • 2017年12月05日 10:20
  • 39

postgresql中没有dual表解决方案

CREATE OR REPLACE VIEW dual ASSELECT NULL::"unknown"WHERE 1 = 1;ALTER TABLE dual OWNER TO jxdx;GRANT...
  • wangxifeng920
  • wangxifeng920
  • 2011年02月12日 16:55
  • 1194

Oracle中dual虚拟表

dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。我们可以用它来做很多事情,如下:   1、查看当前用户,可以在 SQL Plus中执行下面语句 s...
  • liutong123987
  • liutong123987
  • 2016年01月02日 17:10
  • 228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于dual表的一些资料
举报原因:
原因补充:

(最多只允许输入30个字)