一直对oracle中dual表耿耿于怀,不能揭开她的真正面纱。
下面将自己对dual的一点理解写出来,欢迎大虾指点迷津。
我执行语句:select count(1+1),count(3+2),count(DUMMY),count(*) from dual 得到结果:
由这条语句,我得出我的思考结果: 1. dual表是怎样的表? 一张有表名为dual,设置了一个固定列(DUMMY)的表,可以任意增加临时column的表。
上图中很明显,COUNT(DUMMY)列是固定列,而COUNT(1+1)列和COUNT(1+2)列是临时增加列。因此得出1中的结论,欢迎大虾指教。 2. 设计dual的意义? 为了满足数据库数据处理过程中的逻辑运算、查询系统信息,让这些查询语句符合sql规范而设计的一个特殊的表。 可以查询一个逻辑运算,如:select 1+1 from dual;也可以查询系统中的信息,如:select sysdate from dual等;为了让这些语句符合sql语句规范,如:要查询当然用户,难不成用select user(如果允许这样语句,那么将天下大乱)
下面将自己对dual的一点理解写出来,欢迎大虾指点迷津。
我执行语句:select count(1+1),count(3+2),count(DUMMY),count(*) from dual 得到结果:
由这条语句,我得出我的思考结果: 1. dual表是怎样的表? 一张有表名为dual,设置了一个固定列(DUMMY)的表,可以任意增加临时column的表。
上图中很明显,COUNT(DUMMY)列是固定列,而COUNT(1+1)列和COUNT(1+2)列是临时增加列。因此得出1中的结论,欢迎大虾指教。 2. 设计dual的意义? 为了满足数据库数据处理过程中的逻辑运算、查询系统信息,让这些查询语句符合sql规范而设计的一个特殊的表。 可以查询一个逻辑运算,如:select 1+1 from dual;也可以查询系统中的信息,如:select sysdate from dual等;为了让这些语句符合sql语句规范,如:要查询当然用户,难不成用select user(如果允许这样语句,那么将天下大乱)
就是这句话
取得当前时间:
SELECT getdate()
这就是它的语法,不会什么天下大乱的……
当一个值必需要被返回一次时,dual表非常有用,例:当时系统日期和时间。
Dual表有一个列为dummy,和一行,它的值为X。
我还有点疑惑的是为什么要这样设计一张 dual表,难道就是为了符合sql语句规范?