当前位置:   article > 正文

oracle数据库or exists,Oracle Not Exists运算符

or exists

本篇文章帮大家学习Oracle Not Exists运算符,包含了Oracle Not Exists运算符使用方法、操作技巧、实例演示和注意事项,有一定的学习价值,大家可以用来参考。

在本教程中,您将学习如何使用Oracle NOT EXISTS运算符从一个数据中减去另一组数据集。

Oracle NOT EXISTS运算符简介

NOT EXISTS运算符与EXISTS运算符相反。我们经常在子查询中使用NOT EXISTS运算符来从一个数据中减去另一组数据。

看一下使用NOT EXISTS运算符的以下语句:

SELECT

*

FROM

table_name

WHERE

NOT EXISTS (subquery);

如果子查询不返回任何行,则NOT EXISTS运算符返回true。 否则,它返回false。

请注意,如果子查询返回任何具有NULL值的行,则NOT EXISTS运算符将返回false。

Oracle NOT EXISTS例子

请参阅示例数据库中的以下客户(customers)和订单(orders)表:

以下语句查找所有没有订单的客户:

SELECT

name

FROM

customers

WHERE

NOT EXISTS (

SELECT

NULL

FROM

orders

WHERE

orders.customer_id = customers.customer_id

)

ORDER BY

name;

执行上面查询语句,得到以下结果 -

要查询归档没有订单的客户,请使用以下语句:

CREATE TABLE customers_archive AS

SELECT *

FROM

customers

WHERE

NOT EXISTS (

SELECT

NULL

FROM

orders

WHERE

orders.customer_id = customers.customer_id

);

执行上面查询语句后,再查询customers_archive表中的数据,得到以下结果 -

要更新2017年没有订单的客户的信用额度,请使用以下UPDATE语句:

UPDATE

customers

SET

credit_limit = 0

WHERE

NOT EXISTS(

SELECT

NULL

FROM

orders

WHERE

orders.customer_id = customers.customer_id

AND EXTRACT(YEAR FROM order_date)='2017'

);

要从customers表中删除2016年和2017年没有订单的所有客户,请使用以下DELETE语句:

DELETE

FROM

customers

WHERE

NOT EXISTS(

SELECT

NULL

FROM

orders

WHERE

orders.customer_id = customers.customer_id

AND EXTRACT(YEAR FROM order_date

) IN(

2016,

2017

)

);

Oracle NOT EXISTS与NOT IN

以下语句对子查询使用IN运算符:

SELECT

*

FROM

table_name

WHERE

id IN(subquery);

假设子查询返回四个值:1,2,3和NULL。可以重写上面的整个查询,如下所示:

SELECT

*

FROM

table_name

WHERE

id = 1

OR id = 2

OR id = 3

OR id = NULL;

下面的表达式总是返回一个NULL值,因为NULL值不能和任何东西比较。

id = NULL

因此,如果子查询的结果集中的任何行为NULL,则以下表达式将返回NULL值。

id NOT IN (subquery)

相比之下,NULL不会影响NOT EXIST运算符的结果,因为NOT EXISTS运算符仅检查子查询中是否存在行:

SELECT

*

FROM

table_name

WHERE

NOT EXISTS(subquery);

总而言之,当存在NULL值时,NOT EXISTS和NOT IN的行为会有所不同。

在本教程中,您已学习如何使用Oracle NOT EXISTS运算符从一个数据中减去另一组数据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/479971
推荐阅读
相关标签
  

闽ICP备14008679号