MySQL AND 运算符的用法
本文介绍了 MySQL 中如何在 WHERE 子句中使用 AND 运算符组合多个查询条件过滤查询数据。
当使用 SELECT 查询数据时,如果 WHERE 子句中有多个条件,可以根据需要使用 AND, OR, 或者 NOT 运算符将他们组合起来。本文主要介绍 AND 运算符。
AND 运算规则
AND 运算符是一个双目逻辑运算符,用来组合两个操作数。只有当两个操作数都为真时,结果才返回真,否则返回假或者 NULL。
AND 运算符语法:
a AND b
其中,a 和 b 是 AND 的两个操作数,可以是表达式,也可以是值。
不像一些编程语言,MySQL 中没有布尔类型,AND 的运算结果是 1, 0, 或着 NULL。
AND 运算符的运算规则如下:
-
如果两个操作数都不为
0(FALSE) 并且不为NULL时,则AND运算的结果为1。SELECT 1 AND 1, 1 AND 2;+---------+---------+ | 1 AND 1 | 1 AND 2 | +---------+---------+ | 1 | 1 | +---------+---------+ -
如果有一个操作数为
0(FALSE),则AND运算的结果为0。SELECT 0 AND 0, 0 AND 1, 0 AND 2, 0 AND NULL;+---------+---------+---------+------------+ | 0 AND 0 | 0 AND 1 | 0 AND 2 | 0 AND NULL | +---------+---------+---------+------------+ | 0 | 0 | 0 | 0 | +---------+---------+---------+------------+ -
如果两个操作数中有一个为
NULL,且另一个不为0(FALSE),则返回NULL。SELECT 1 AND NULL, 2 AND NULL, NULL AND NULL;+------------+------------+---------------+ | 1 AND NULL | 2 AND NULL | NULL AND NULL | +------------+------------+---------------+ | NULL | NULL | NULL | +------------+------------+---------------+ -
两个操作数的前后顺序不影响
AND操作符的运算结果。SELECT 1 AND 0, 0 AND 1, 1 AND NULL, NULL AND 1;+---------+---------+------------+------------+ | 1 AND 0 | 0 AND 1 | 1 AND NULL | NULL AND 1 | +---------+---------+------------+------------+ | 0 | 0 | NULL | NULL | +---------+---------+------------+------------+
下表总结了 AND 运算符对不同操作数的运算结果:
1 |
0 |
NULL |
|
|---|---|---|---|
1 |
0 |
0 |
NULL |
0 |
0 |
0 |
0 |
NULL |
NULL |
0 |
NULL |
WHERE 子句中的 AND
在 WHERE 子句中, AND 连接两个比较条件。一般的形式如下:
column_name1 = value1 AND column_name2 = value2
WHERE 子句中的 AND 过滤那些同时满足两个比较条件的记录行。
也就是说,如果数据表中的记录行,必须同时满足字段 column_name1 的值为 value1 和 column_name2 的值为 value2 两个条件,才是符合条件的记录行。
AND 运算符实例
在以下实例中,我们使用 Sakila 示例数据库中的 actor 表作为演示。
以下 SQL 语句在 actor 表中查找姓为 DAVIS 且名为 SUSAN 的所有演员:
SELECT
*
FROM
actor
WHERE
last_name = 'DAVIS' AND first_name = 'SUSAN';
在这个语句中,查询条件 last_name = 'DAVIS' AND first_name = 'SUSAN' 的意思是过滤表中 last_name 字段的值为 DAVIS,并且 first_name 字段的值为 SUSAN 的所有记录行。
last_name = 'DAVIS' 是一个条件,first_name = 'SUSAN' 也是一个条件,AND 将两者组合在一起,意思是查询的记录行要同时满足这两个条件。
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 101 | SUSAN | DAVIS | 2006-02-15 04:34:33 |
| 110 | SUSAN | DAVIS | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+我们还可以查询 actor 表中姓氏为 DAVIS 且 actor_id 小于 100 的演员信息:
SELECT
*
FROM
actor
WHERE
last_name = 'DAVIS' AND actor_id < 100;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 4 | JENNIFER | DAVIS | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+结论
本文通过实例介绍了 MySQL 中 AND 运算符的语法和用法。 AND 运算符的用法要点如下:
AND是双目运算符,需要两个布尔操作数。- 如果两个操作数都不为
0(FALSE) 并且不为NULL时,则AND运算的结果为1。 - 如果有一个操作数为
0(FALSE),则AND运算的结果为0。 - 如果两个操作数中有一个为
NULL,且另一个不为0(FALSE),则返回NULL。 - 两个操作数的前后顺序不影响
AND操作符的运算结果。 WHERE子句中的AND连接两个比较条件,过滤那些同时满足两个比较条件的记录行。