Mysql 简明教程

MySQL - AND Operator

MySQL AND Operator

在 MySQL 中,没有内置布尔类型。相反,布尔值使用数值数据类型表示,其中零被视为 false ,任何非零值被视为 true

MySQL AND 运算符是一个逻辑运算符,可组合两个或多个布尔表达式并返回 1、0 或 NULL:

A AND B

此处, AB 是运算数。

  1. 仅当 A 和 B 均为非零且不为 Null 时,AND 运算符才会返回 true ( 1 )。

  2. 如果 A 或 B 为假,则 AND 运算符将返回假 ( 0 )。

  3. 如果 A 或 B 任何一个为 NULL,则 AND 运算符将返回 NULL

下表演示了使用 AND 运算符组合真、假和空值的可能结果:

Example

如果 A 和 B 均为非零且 NOT NULL,逻辑 AND 运算符返回 1 −

SELECT 1 AND 1;

Output

以上程序的输出如下所示:

Example

逻辑 AND 运算符在 A 或 B 为零,或 A 和 B 均为零时返回 0。

SELECT 1 AND 0, 0 AND 1, 0 AND 0, 0 AND NULL;

Output

当我们执行上述查询时,输出将获得如下:

Example

逻辑 AND 运算符在至少一个操作数不为零或两个操作数均为 NULL − 时返回 NULL

SELECT 1 AND NULL, NULL AND NULL;

Output

执行给定的查询后,输出如下:

AND Operator with WHERE

MySQL AND 运算符可与 WHERE 子句配合使用,仅检索满足所有指定条件的行。当使用 AND 运算符时,必须满足两个条件,才能将行包含在结果集中。否则,它将返回一个空集。

Syntax

以下是 MySQL 中 AND 运算符与 WHERE 子句的语法 −

SELECT column1, column2, ..., columnN
FROM table_name
[WHERE condition1 AND condition2 AND condition3 ...;]

Example

首先,让我们使用以下查询创建名为 CUSTOMERS 的 MySQL 表 −

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)
);

以下查询将 7 行插入到上述创建的表中 −

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 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 );

执行以下查询以从 CUSTOMERS 表中获取所有记录 −

SELECT * FROM CUSTOMERS;

以下为 CUSTOMERS 表 −

现在,让我们从 ADDRESS 是“Hyderabad”且 AGE 是 22 的 CUSTOMERS 表中选择所有列。

SELECT * FROM CUSTOMERS
WHERE ADDRESS = "Hyderabad" AND AGE = 22;

Output

执行给定的查询后,输出如下:

Example

逻辑 AND 运算符仅在由 AND 分开的条件都为 true 时返回记录。

在以下查询中,我们为 AND 操作数之一提供了错误值。

SELECT * FROM CUSTOMERS
WHERE ADDRESS = "Kerala" AND AGE = 27;

Output

由于 CUSTOMERS 表中的 ADDRESS 列不包含值“Kerala”,因此输出返回一个空集合。

Empty set (0.00 sec)

Multiple AND Operators

在 MySQL 中,我们可以在一个查询中使用多个 AND 运算符,以将多个条件或表达式组合在一起。与这些多个“AND”运算符组合的条件从左到右进行求值。如果任何条件求值为 false,则整个条件将为 false,并且不会将记录包含在结果集中。

Example

在以下查询中,我们从 CUSTOMERS 表中选择所有 NAME 以“k”开头, AGE 大于或等于 22,而 SALARY 小于 3742 的记录。

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

Output

执行上面程序时,将获得如下所示的输出:

AND with UPDATE statement

在 MySQL 中,我们可以在 UPDATE 语句中使用 AND 运算符,以基于提供的多个条件从表中更新记录。

Syntax

以下是 MySQL 中 AND 运算符与 UPDATE 语句的语法 −

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

Example

在以下查询中,我们正在更新 ID 为 5 且 ADDRESS 为“Hyderabad”的客户的 SALARY −

UPDATE CUSTOMERS
SET SALARY = 15000
WHERE ID = 6 AND ADDRESS = "Hyderabad";

Output

以上查询的输出如下所示:

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

Verification

使用以下查询,我们可以验证 CUSTOMERS 的 SALARY 是否已更新:

SELECT * FROM CUSTOMERS;

正如我们可以在下面的 CUSTOMERS 表中看到的那样,ID 为 5 的客户的薪水已更新 −

AND with DELETE Statement

在 MySQL 中,我们可以在 DELETE 语句中使用 AND 运算符,以基于多个条件从表中删除记录。

Syntax

以下是 MySQL 中 AND 运算符与 DELETE 语句的语法 −

DELETE FROM table_name
WHERE condition1 AND condition2 AND condition3 ...

Example

在这个查询中,我们从 CUSTOMERS 表中删除其中 NAME 等于“Khilan”,ADDRESS 等于“Delhi”的记录 −

DELETE FROM CUSTOMERS
WHERE NAME = "Khilan" AND ADDRESS = "Delhi";

Output

Query OK, 1 row affected (0.01 sec)

Verification

使用以下查询,我们可以验证上述操作是否成功:

SELECT * FROM CUSTOMERS;

Output

正如我们在下面的输出中可以看到,名称为“khilan”,地址为“delhi”的客户已被成功删除 −

AND Operator Using a Client Program

除了使用 MySQL 查询执行 AND 运算符之外,我们还可以使用 Node.js、PHP、Java 和 Python 等客户端程序来实现相同的结果。

Syntax

以下是此操作在各种编程语言中的语法 −

Example

以下是这些程序 −