SQL - AND 和 OR 连接运算符


运算符是保留字,主要在 SQL 中用于对数据执行各种操作,例如加法 (+)、减法 (-) 或比较 (==)。

联合运算符专门用于布尔逻辑,在 SQL 语句中组合两个条件。最常见的连接运算符是:AND (&&),如果两个条件都为 true,则返回 true;OR (||),如果至少一个条件为 true,则返回 true。

SQL AND 运算符

如果两个操作数的计算结果均为 true,则SQL AND返回true1 。我们可以使用它来组合 SQL 语句的 WHERE 子句中的两个条件。

句法

带有 WHERE 子句的 SQL AND 运算符的基本语法如下 -

WHERE [condition1] AND [condition2];

其中,condition1、condition2是我们要应用于查询的条件。

您可以使用 AND 运算符组合 N 个条件。对于 SQL 语句要执行的操作,无论是事务还是查询,所有指定的条件(由 AND 运算符分隔)都必须为 TRUE。

例子

假设我们使用 CREATE TABLE 语句在 MySQL 数据库中创建了一个名为 CUSTOMERS 的表,如下所示 -

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),       
   PRIMARY KEY (ID)
);

以下查询使用 INSERT 语句将值插入到该表中 -

INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00),
(2, 'Khilan', 25, 'Delhi', 1500.00),
(3, 'Kaushik', 23, 'Kota', 2000.00),
(4, 'Chaitali', 25, 'Mumbai', 6500.00),
(5, 'Hardik', 27, 'Bhopal', 8500.00),
(6, 'Komal', 22, 'Hyderabad', 4500.00),
(7, 'Muffy', 24, 'Indore', 10000.00);

得到的表格如下所示 -

ID 姓名 年龄 地址 薪水
1 拉梅什 32 艾哈迈达巴德 2000.00
2 基兰 25 德里 1500.00
3 考希克 23 科塔 2000.00
4 柴塔利 25 孟买 6500.00
5 哈迪克 27 博帕尔 8500.00
6 科马尔 22 海得拉巴 4500.00
7 莫菲 24 印多尔 10000.00

以下示例将从 CUSTOMERS 表中获取 ID、NAME 和 SALARY 字段,其中工资大于 2000,年龄小于 25 岁 -

SELECT ID, NAME, SALARY FROM CUSTOMERS 
WHERE SALARY > 2000 AND AGE < 25;

输出

这将产生以下结果 -

ID 姓名 薪水
6 科马尔 4500.00
7 莫菲 10000.00

多个 AND 运算符

您还可以在 SQL 查询中使用多个“AND”运算符将多个条件(或表达式)组合在一起。与“AND”运算符组合的条件从左到右进行计算。如果任何条件评估为 false,则整个复合条件将为 false,并且该记录不会包含在结果集中。

句法

以下是语法 -

WHERE [condition1] AND [condition2]...AND [conditionN];

例子

在下面的查询中,我们从 CUSTOMERS 表中选择客户姓名以“K”开头、客户年龄大于或等于 22 岁且工资小于 3742 的所有记录 -

SELECT * FROM CUSTOMERS 
WHERE NAME LIKE 'k%' AND AGE >= 22 AND SALARY < 3742;

输出

以下是产生的结果 -

ID 姓名 年龄 地址 薪水
2 基兰 25 德里 1500.00
3 考希克 23 科塔 2000.00

AND 与其他逻辑运算符

“AND”运算符可以与其他逻辑运算符结合使用,以过滤数据库表中的记录。

在 SQL 中使用多个逻辑运算符时,运算顺序很重要。括号可用于控制运算顺序并确保以正确的顺序评估条件。

此外,使用太多逻辑运算符或复杂表达式会对查询性能产生负面影响,因此在处理大型数据集时仔细考虑 WHERE 子句的设计非常重要。

例子

在这里,我们将AND运算符与NOT运算符组合起来创建NAND运算。如果至少一个输入条件为假,则“NAND”运算返回真;如果两个输入条件都为真,则“NAND”运算返回假。

在下面的查询中,我们从 CUSTOMERS 表中选择条件(工资大于 4500 且年龄小于 26)为 false 的所有记录。“NOT”运算符否定整个条件,“AND”运算符组合两个条件 -

SELECT * FROM CUSTOMERS 
WHERE NOT (SALARY > 4500 AND AGE < 26);

输出

以下是上述查询的输出 -

ID 姓名 年龄 地址 薪水
1 拉梅什 32 艾哈迈达巴德 2000.00
2 基兰 25 德里 1500.00
3 考希克 23 科塔 2000.00
5 哈迪克 27 博帕尔 8500.00
6 科马尔 22 海得拉巴 4500.00

AND 与 UPDATE 语句

我们可以在 UPDATE 语句的 WHERE 子句中使用 AND 运算符来修改表中满足特定条件的行。

句法

以下是将 AND 运算符与 UPDATE 语句一起使用的语法 -

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition1 AND condition2 AND ...;

其中,table_name是我们要更新的表的名称,column1、column2等是我们要修改的列,value1、value2等是我们要为这些列设置的新值。

例子

在以下查询中,我们将更新年龄大于 27 岁的所有客户的工资,并使用 UPDATE 语句将其更新为“55000” -

UPDATE CUSTOMERS SET SALARY = 55000 WHERE AGE > 27;

输出

我们得到以下结果。我们可以观察到 1 名客户的工资已被修改 -

Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

确认

为了验证更改是否反映在表中,我们可以使用 SELECT 语句来打印表。以下是显示 CUSTOMERS 表中记录的查询 -

SELECT * FROM CUSTOMERS;

该表显示如下 -

ID 姓名 年龄 地址 薪水
1 拉梅什 32 艾哈迈达巴德 55000.00
2 基兰 25 德里 1500.00
3 考希克 23 科塔 2000.00
4 柴塔利 25 孟买 6500.00
5 哈迪克 27 博帕尔 8500.00
6 科马尔 22 海得拉巴 4500.00
7 莫菲 24 印多尔 10000.00

正如我们在上表中看到的,“Ramesh”的工资已更新为“55000”,因为他的年龄为 32 岁,即大于 27 岁。

SQL OR 运算符

如果OR运算符的至少一个操作数计算结果为 true,则该 OR 运算符返回 true,否则返回 false 我们可以使用 OR 运算符在 SQL 语句的 WHERE 子句中组合两个条件。

句法

带 WHERE 子句的 OR 运算符的基本语法如下 -

WHERE [condition1] OR [condition2];

其中,condition1、condition2是我们要应用于查询的条件。每个条件由 OR 运算符分隔。

您可以使用 OR 运算符组合 N 个条件。对于 SQL 语句要执行的操作,无论是事务还是查询,至少由 OR 运算符分隔的条件必须为 TRUE。

例子

以下查询从 CUSTOMERS 表中获取 ID、NAME 和 SALARY 字段,其中工资大于 2000 或年龄小于 25 岁 -

SELECT ID, NAME, SALARY FROM CUSTOMERS 
WHERE SALARY > 2000 OR AGE < 25;

输出

这将产生以下结果 -

ID 姓名 薪水
3 考希克 2000.00
4 柴塔利 6500.00
5 哈迪克 8500.00
6 科马尔 4500.00
7 莫菲 10000.00

多个 OR 运算符

在 SQL 中,通常使用多个 OR 运算符将多个条件或表达式组合在一起。使用多个 OR 运算符时,任何满足至少一个条件的行都将包含在结果集中。

例子

在下面的查询中,我们从 CUSTOMERS 表中选择所有记录,其中客户姓名以“l”结尾,或者客户的工资大于 10560,或者他们的年龄小于 25 岁 -

SELECT * FROM CUSTOMERS 
WHERE NAME LIKE '%l' OR SALARY > 10560 OR AGE < 25;

输出

以下是获得的结果 -

ID 姓名 年龄 地址 薪水
3 考希克 23 科塔 2000.00
6 科马尔 22 海得拉巴 4500.00
7 莫菲 24 印多尔 10000.00

OR 与 AND 运算符

我们还可以在 SQL 中同时使用 AND 和 OR 运算符,将多个条件组合在 WHERE 子句中,以过滤符合指定条件的行。

句法

以下是一起使用 AND 和 OR 运算符的语法 -

WHERE (condition1 OR condition2) AND condition3;

其中,condition1、condition2和condition3代表我们要与AND和OR运算符组合的条件。括号将前两个条件分组并用 OR 运算符将它们组合起来。该运算的结果使用 AND 运算符与第三个条件组合。

例子

在下面的查询中,我们将从“CUSTOMERS”表中检索客户年龄等于 25 岁或工资低于 4500 且姓名为 Komal 或 Kaushik 的所有行。括号控制计算顺序,以便首先应用 OR 运算符,然后应用 AND 运算符 -

SELECT * FROM CUSTOMERS 
WHERE (AGE = 25 OR SALARY < 4500) 
AND (NAME = 'Komal' OR NAME = 'Kaushik');

输出

这将产生以下结果 -

ID 姓名 年龄 地址 薪水
3 考希克 23 科塔 2000.00

OR 与 DELETE 语句

我们还可以将 OR 运算符与 DELETE 语句一起使用来删除满足任意一个(多个)条件的行。

句法

以下是将 OR 运算符与 DELETE 语句一起使用的语法 -

DELETE FROM table_name
WHERE column1 = 'value1' OR column2 = 'value2';

例子

在以下查询中,我们从 CUSTOMERS 表中删除客户年龄等于 25 岁或工资低于 2000 的记录 -

DELETE FROM CUSTOMERS WHERE AGE = 25 OR SALARY < 2000;

输出

我们得到以下结果 -

Query OK, 2 rows affected (0.01 sec)

确认

为了验证更改是否反映在表中,我们可以使用 SELECT 语句来打印表。以下是显示 CUSTOMERS 表中记录的查询 -

SELECT * FROM CUSTOMERS;

该表显示如下 -

ID 姓名 年龄 地址 薪水
1 拉梅什 32 艾哈迈达巴德 2000.00
3 考希克 23 科塔 2000.00
5 哈迪克 27 博帕尔 8500.00
6 科马尔 22 海得拉巴 4500.00
7 莫菲 24 印多尔 10000.00