Oracle和MySQL中的dual表

本文探讨了Oracle和MySQL数据库中名为DUAL的特殊表的作用及其使用方式。在Oracle中,DUAL用于返回一个固定的值,而在MySQL中则主要用于保持SQL语句的完整结构。文章还详细介绍了这两种数据库系统在处理DUAL表时的不同行为。
摘要由CSDN通过智能技术生成

Oracle和MySQL中都有一张名称为dual的虚拟表,但是两者之前的区别呢?

 

在MySQL中,对dual表时怎么解释的:

DUAL is purely for the convenience of people who require that all SELECT statements should have FROM and possibly other clauses.

纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用。

 

区别:

select * from dual;

mysql会出错: 1096 - No tables used,

oracle 会返回列:“DUMMY”,其值为“X”, 行为和只有一行记录的普通表是一样的!


 伦理片 http://www.dotdy.com/

select  express [from dual];  

mysql总是作为返回该表达式值的普通select语句执行,返回一行记录的结果集,from dual 对mysql来说根本就是摆设!

Sql代码   收藏代码
  1. select 1 + 1;  
Sql代码   收藏代码
  1. select 1 + 1 from dual;  

前面这两句sql语句执行的结果是一样的。

oracle里该句必须有from dual;否则报错!

ORA-00923: FROM keyword not found where expected

 

select  express  from dual where 0=2;   mysq 和 oracle的行为一致:该句就如同你认为的正常表那样——会先计算where的条件,再行计算express;这里的where条件会决定expres是否会返回!

Sql代码   收藏代码
  1. select 1 + 1 from dual where 0 = 2;  

此时无论是Oracle还是MySQL都不可以省略from dual.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值