📜  SQL 中的 DUAL 表

📅  最后修改于: 2021-09-10 02:04:17             🧑  作者: Mango

可能存在我们想要查询不是来自表的内容的情况。例如,获取当前日期或查询像 2+2 这样的简单算术表达式。

在 Oracle 中,子句 FROM 也不例外。如果我们不在 Oracle 中编写 FROM 子句,我们会得到一个错误。

示例 1:Oracle 查询

SELECT SYSDATE;

输出 –

ORA-00923: FROM keyword not found where expected

示例 2:Oracle 查询

SELECT 'GeeksforGeeks';

输出 –

ORA-00923: FROM keyword not found where expected

双 :
它是一个由 Oracle 数据库与数据字典一起自动创建的表。 DUAL 位于用户 SYS 的架构中,但所有用户都可以通过名称 DUAL 访问。它有一列 DUMMY,定义为 VARCHAR2(1),并包含一个值为 X 的行。

示例:Oracle 查询

SELECT * 
FROM DUAL ;

输出 –

X 

从 DUAL 表中进行选择对于使用 SELECT 语句计算常量表达式很有用。因为 DUAL 只有一行,所以常量只返回一次。

甲骨文查询:

SELECT 'GeeksforGeeks' 
AS NAME FROM DUAL;

输出 –

GeeksforGeeks 

甲骨文查询:

SELECT 2+2 
FROM DUAL;

输出 :

2+2 = 4 

其他几个数据库,包括 MS SQL Server、MySQL、PostgreSQL 和 SQLite,允许省略 FROM 子句。这个例外是其他数据库中没有像 DUAL 这样的虚拟表的原因。