SQL Exists运算符

时间:2020-02-23 14:32:27  来源:igfitidea点击:

在本文中,我们将重点关注SQL Exists运算符。

SQL Exists

" SQL Exists"是一个SQL运算符,可与子查询一起使用,使我们能够检查该子查询中特定记录的存在。
此外,它根据条件检查子查询是否从表中返回一些记录。

让我们来看下面的示例给运算符。

考虑一个在线门户,所有者决定为账单高于350美元的每个客户提供20美元的折扣。

同样,后端的开发人员团队将隔离数据库,并使用Exists运算符检查各种表中是否存在这种情况。

因此,SQL Exists在子查询返回的数据存在时执行特定查询。

现在让我们详细了解"存在运算符"的语法。

Exists运算符的语法

Exists运算符与SQL Update,Delete,Select和Insert查询配合使用效果很好。

SQL Update/Insert/Delete/Select query
WHERE EXISTS
(sub-query);

当且仅当子查询被执行并返回指定的记录时,EXISTS的计算结果才为TRUE。

如果列值可比较,则子查询也可用于查询另一个数据库。

了解了Exists运算符的工作和结构之后,现在让我们在接下来的部分中重点介绍相同的实现。

通过示例实现SQL EXISTS

让我们首先在下面的示例中使用SQL创建表。
在此处使用一些随机的地点名称进行演示。

create table Info(id integer, Cost integer, city varchar(20));
insert into Info(id, Cost, city) values(1, 100, Pune);
insert into Info(id, Cost, city) values(2, 50, Satara);
insert into Info(id, Cost, city) values(3, 65, Pune);
insert into Info(id, Cost, city) values(4, 97, Mumbai);
insert into Info(id, Cost, city) values(5, 12, USA);

输出:

idCostcity
1100Pune
250Satara
365Pune
497Mumbai
512USA
create table Supply(id integer, Cost integer);
insert into Supply(id, Cost) values(1, 100);
insert into Supply(id, Cost) values(2, 200);
insert into Supply(id, Cost) values(3, 300);
insert into Supply(id, Cost) values(4, 400);
insert into Supply(id, Cost) values(5, 12);

如上所述,我们已经使用SQL创建表查询创建了表-"信息"和"供应",并使用SQL插入命令向其中添加了数据。

SQL选择查询中的Exists

在下面的示例中,我们将SQL Select查询与Exists运算符一起使用。
仅当"成本"的数据值大于50时,以下查询才会选择并显示" id"和"城市"的行值。

SELECT id,City
FROM Info
 WHERE EXISTS
     (SELECT Cost
        FROM Info
       WHERE Cost>50);

SQL删除查询中Exists

现在,我们使用SQL Exists运算符实现了SQL Delete查询,以执行以下操作

当且仅当以下两个表("信息"和"供应")中的" id"列相同且"供应"中存在"成本"的值为12时,以下查询才会从"信息"表中删除数据行表。

DELETE 
FROM Info
WHERE EXISTS (SELECT *
            FROM Supply
            WHERE Info.id = Supply.id
            AND Supply.Cost = 12);

SQL更新查询中Exists

在此示例中,我们将SQL Update查询与SQL Exists运算符一起使用。
当且仅当两个表的" id"列的值都相等时," Cost"列的所有数据值都将设置为20。

Update Info
set Cost = 20
WHERE EXISTS (SELECT *
            FROM Supply
            WHERE Info.id = Supply.id
            );