本资料为产品岗位作为日常工作参考,语言口语化
At 2019/4/26 By David.Yang
运算逻辑
AND运算符可以相互组合多个,且只有在表达式都为TRUE是才返回最终满足条件的结果集。
WHERE
boolean_expression
AND
boolean_expression
AND运算符通常用在SELECT,UPDATE,DELETE语句的WHERE子句中以形成布尔表达式。
AND运算符也用于INNER JOIN或LEFT JOIN子句的连接条件。
AND特性
当使用AND运算符时,多个逻辑条件会被进行逐个计算,
直到其余运算部分算完会结果确定为止,称之为短路求值。
示例
-- FALSE AND NULL
SELECT 1 = 0 AND 1 / 0;
+-----------------+
| 1 = 0 AND 1 / 0 |
+-----------------+
| 0 |
+-----------------+
1 row in set (0.00 sec)
AND连接两部分运算逻辑,1 = 0 和 1 / 0
第一部分 1 = 0返回FALSE;
所以真个AND逻辑运算结果为NULL;
因为短路求值,MYSQL将不会再对剩余部分进行运算,1 / 0将不会进行求值;
-- TRUE AND NULL
SELECT 1 = 1 AND 1 / 0;
+-----------------+
| 1 = 1 AND 1 / 0 |
+-----------------+
| NULL |
+-----------------+
1 row in set, 1 warning (0.00 sec)
1 = 1返回TRUE;
所以将会继续对1 / 0进行运算,运算结果为NULL,
所以真个AND逻辑运算结果为NULL;
-- TRUE AND TRUE
SELECT 1 = 1 AND 1 / 1;
+-----------------+
| 1 = 1 AND 1 / 1 |
+-----------------+
| 1 |
+-----------------+
1 row in set (0.01 sec)
1 = 1返回TRUE;
1/1返回TRUE;
所以真个AND逻辑运算结果为TRUE;
-- FALSE AND FALSE
SELECT 1 = 0 AND 0;
+-------------+
| 1 = 0 AND 0 |
+-------------+
| 0 |
+-------------+
1 row in set (0.00 sec)
1 = 0返回FALSE;
0返回FALSE;
所以真个AND逻辑运算结果为FALSE;
注:
0被认为是false,非零被视为true。
AND运算符演示
我们通过学生表,查询性别女性,来自南宋的学生
通过WHERE中的AND运算符来操作。
SQL
SELECT
*
FROM
students
WHERE
gender = 1
AND
nationality = "南宋";
条件过滤后的结果集如下
组合两个以上逻辑运算。
过滤出姑娘,来自南宋,而且年纪在14 – 16岁
SQL
SELECT
*
FROM
students
WHERE
gender = 1
AND
nationality = "南宋"
AND
age >= 14
AND
age <= 16;
本篇主要在于对AND运算符的运算机制进行讲解,
帮助你明白AND运算时时如何工作的。