MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL Exists

MySQL中的EXISTS运算符是一种布尔运算符,它返回 true或false 结果。它与子查询结合使用,并检查子查询中数据的存在。这意味着如果子查询返回任何记录,则此运算符将返回true。否则,它将返回false。真值始终表示数字值1,假值始终表示0。我们可以将其与SELECT,UPDATE,DELETE,INSERT语句一起使用。

语法

以下是在 MySQL 中使用EXISTS运算符的语法:
SELECT col_names
FROM tab_name
WHERE [NOT] EXISTS (
  SELECT col_names 
  FROM tab_name 
  WHERE condition
);
NOT运算符用于否定EXISTS运算符。当子查询不返回任何行时,它返回true。否则,它将返回false。
通常,EXISTS查询以SELECT *开头,但可以以SELECT列,SELECT a_constant或子查询中的任何内容开头。由于MySQL会忽略SUBQUERY中的选择列表,因此将提供相同的输出。
此运算符在找到匹配结果后立即终止以进行进一步处理。此功能提高了MySQL查询的性能。

参数说明

以下是EXISTS运算符中使用的参数:
参数名称 说明
col_names 它是指定表中包含的列的名称。
tab_name 这是我们要用来执行EXISTS运算符的表的名称。
condition 它指定从表中搜索特定值。
subquery 通常以SELECT *开头的SELECT语句,但MySQL在子查询中将其忽略。

MySQL EXISTS运算符示例

让我们了解EXISTS运算符如何在MySQL中工作。在这里,我们将首先使用以下语句创建两个名为 " customer"和" orders" 的表:
CREATE TABLE customer(
  cust_id int NOT null,
  name varchar(35),
  occupation varchar(25),
  age int
);

CREATE TABLE orders (
  order_id int NOT null, 
  cust_id int, 
  prod_name varchar(45),
  order_date date
);
接下来,我们需要在两个表中插入值。执行以下语句:
INSERT INTO customer(cust_id, name, occupation, age) 
VALUES (101, 'Peter', 'Engineer', 32),
(102, 'Joseph', 'Developer', 30),
(103, 'John', 'Leader', 28),
(104, 'Stephen', 'Scientist', 45),
(105, 'Suzi', 'Carpenter', 26),
(106, 'Bob', 'Actor', 25),
(107, null, null, null);

INSERT INTO orders (order_id, cust_id, prod_name, order_date) 
VALUES (1, '101', 'Laptop', '2020-01-10'),
(2, '103', 'Desktop', '2020-02-12'),
(3, '106', 'Iphone', '2020-02-15'),
(4, '104', 'Mobile', '2020-03-05'),
(5, '102', 'TV', '2020-03-20');
要验证表,请运行 SELECT命令,如下所示:
msql> SELECT * FROM customer;
AND,
mysql> SELECT * FROM orders;
我们将获得以下输出:
MySQL Exists

MySQL SELECT EXISTS示例

在此示例中,我们将使用EXISTS运算符查找已下达至少一个订单的客户的姓名和职业:
mysql> SELECT name, occupation FROM customer
WHERE EXISTS (SELECT * FROM Orders 
WHERE customer.cust_id = Orders.cust_id);
出现以下输出:
MySQL Exists
同样,如果要获取名称尚未下订单的客户,然后使用NOT EXISTS运算符:
mysql> SELECT name, occupation FROM customer
WHERE NOT EXISTS (SELECT * FROM Orders 
WHERE customer.cust_id = Orders.cust_id);
它将给出以下输出:
MySQL Exists

MySQL EXISTS对于DELETE语句示例

假设我们要从Orders表中删除一条order_id = 3的记录,执行以下查询以从Orders表中永久删除该记录:
mysql> DELETE FROM Orders WHERE EXISTS (
SELECT * FROM customer 
WHERE order_id=3);
要验证输出,请运行以下命令:
mysql> SELECT * FROM Orders;
在输出中,我们可以看到成功删除了order_id = 3的表记录。
MySQL已存在
如果要检查表中是否存在行,请使用以下查询:
mysql> SELECT EXISTS(SELECT * from customer WHERE cust_id=104) AS Result;
我们将获得表示真实的输出1、因此,表中存在cust_id = 104、
MySQL Exists

EXISTS之间的差异和IN运算符

EXISTS和IN运算符之间的主要区别以表格形式给出:
IN EXISTS
它用于最小化MySQL中的多个OR条件。 它用于检查子查询中数据的存在。
SELECT col_names FROM tab_name WHERE col_name IN (subquery); SELECT col_names FROM tab_name WHERE [NOT] EXISTS (subquery);
它比较IN运算符内的所有值。 找到第一个真实事件后,它将停止进一步执行。
它可以用于比较NULL值。 它不能用于比较NULL值。
子查询结果较少时,执行速度更快。 当子查询结果较大时,执行速度更快。
它在父查询和子查询或子查询之间进行比较。 它不执行父查询与子查询或子查询之间的比较。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4