产品操作MySQL第7篇 – 运算符 - AND

MYSQL

本资料为产品岗位作为日常工作参考,语言口语化

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运算时时如何工作的。

你可能感兴趣的:(产品操作MySQL第7篇 – 运算符 - AND)