MySQL AND运算符简介
AND运算符是组合两个或多个布尔表达式的逻辑运算符,并且只有在两个表达式都为true时才返回true。如果两个表达式中的任何一个值为false,AND运算符将返回false。
WHERE boolean_expression_1 AND boolean_expression_2
下面表格介绍AND运算符的结果。
| TRUE | FALSE | NULL |
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
AND运算符通常用于SELECT,UPDATE,DELETE语句的WHERE子句中,以形成过滤结果集的条件。AND运算符也用于inner join或left join子句的连接条件。
MySQL AND运算符示例
我们使用示例数据库中的customers
表进行测试。
以下语句查询位于USA和CA的客户。我们在WHERE子句中使用AND运算符。
SELECT customername,
country,
state
FROM customers
WHERE country = 'USA'
AND state = 'CA';
使用AND运算符可以组合多个布尔表达式。例如,以下查询获取位于美国CA州且信用额度(creditlimit)大于100K的客户。
SELECT customername,
country,
state,
creditlimit
FROM customers
WHERE country = 'USA'
AND state = 'CA'
AND creditlimit > 100000;
MySQL OR运算符简介
MySQL OR运算符连接两个或多个布尔表达式。当其中任何一个表达式为true时,它将返回true。
下面是OR运算符的语法:
boolean_expression_1 OR boolean_expression_2
boolean_expression_1 or
boolean_expression_2
这个表达式有可能返回true或false。
下表显示了OR运算符的结果。
| TRUE | FALSE | NULL |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
运算符优先级
当您在语句中使用多个逻辑运算符时,如and 和or运算符,MySQL是先计算 AND 运算符,再计算OR运算符。这就是所谓的运算符优先级。
运算符优先级确定运算符的求值顺序。MySQL首先计算具有较高优先级的运算符。
请参阅以下示例。
SELECT true OR false AND false;
结果如下:
true OR false AND false
-----------------------
1
执行顺序如下:
- 首先,MySQL计算AND运算符,这是,
false AND false
返回false。 - 第二,MySQL计算OR运算符,这是,
true OR false
返回true。
要更改计算的顺序,请使用括号,例如:
SELECT (true OR false) AND false;
结果如下:
(true OR false) AND false
-------------------------
0
执行顺序如下:
- 首先,MySQL计算圆括号中的表达式
(true OR false)
返回true。 - 第二,MySQL计算剩余语句部分,
true AND false
返回false。
MySQL OR运算符示例
我们使用示例数据库中的customers表进行测试。
例如,要获取位于美国和法国的客户,请在WHERE子句中使用OR运算符,如下所示:
SELECT
customername, country
FROM
customers
WHERE
country = 'USA' OR country = 'France';
结果如图所示:
以下语句获取位于美国或法国并且信用额度(creditlimit)大于10000的客户。
SELECT
customername, country, creditLimit
FROM
customers
WHERE
(country = 'USA' OR country = 'France')
AND creditlimit > 100000;
结果如图所示:
请注意,如果不使用括号,查询将返回美国的客户或信用额度(creditlimit)大于10000的法国的客户。
SELECT
customername, country, creditLimit
FROM
customers
WHERE
country = 'USA' OR country = 'France' AND creditlimit > 100000;
结果如图所示: