MYSQL AND |猿教程|
MYSQL AND |猿教程|
在本教程中,您将学习如何使用 MySQL AND 运算符组合多个布尔表达式来过滤数据。
MySQL AND 运算符简介
MySQL 没有内置的布尔类型。相反,它将数字零用作 FALSE,将非零值用作 TRUE。
AND 运算符是组合两个或多个布尔表达式并返回 1、0 或 NULL 的逻辑运算符:
A AND B
在此表达式中,A 和 B 称为操作数。它们可以是文字值或表达式。
如果 A 和 B 都非零且非 NULL,则逻辑 AND 运算符返回 1。如果任一操作数为零,则返回 0;否则,它返回 NULL。
如果 A 和 B 都非零且 NOT NULL,则逻辑 AND 运算符返回 1。例如:
SELECt 1 AND 1;
+---------+ | 1 AND 1 | +---------+ | 1 | +---------+ 1 row in set (0.00 sec)
如果 A 或 B 为零或 A 和 B 都为零,则逻辑 AND 运算符返回 0:
SELECT 1 AND 0, 0 AND 1, 0 AND 0, 0 AND NULL;
+---------+---------+---------+------------+ | 1 AND 0 | 0 AND 1 | 0 AND 0 | 0 AND NULL | +---------+---------+---------+------------+ | 0 | 0 | 0 | 0 | +---------+---------+---------+------------+ 1 row in set (0.00 sec)
如果任一操作数非零或两个操作数均为 NULL,则逻辑 AND 运算符返回 NULL。
SELECT 1 AND NULL, NULL AND NULL;
+------------+---------------+ | 1 AND NULL | NULL AND NULL | +------------+---------------+ | NULL | NULL | +------------+---------------+ 1 row in set (0.00 sec)
下表说明了组合 true、false 和 null 时 AND 运算符的结果。
| TRUE | FALSE | NULL | |
|---|---|---|---|
| TRUE | TRUE | FALSE | NULL |
| FALSE | FALSE | FALSE | FALSE |
| NULL | NULL | FALSE | NULL |
在实践中,您将在 SELECT、UPDATE、DELETE 语句的 WHERe 子句中使用 AND 运算符来形成条件。此外,您可以在 INNER JOIN 和 LEFT JOIN 子句的条件中使用 AND 运算符。
在评估包含 AND 运算符的表达式时,MySQL 会在确定结果后立即停止评估表达式的其余部分。
这称为短路评估。换句话说,AND 运算符是短路的。例如:
SELECT 1 = 0 AND 1 / 0 ;
+-----------------+ | 1 = 0 AND 1 / 0 | +-----------------+ | 0 | +-----------------+ 1 row in set (0.01 sec)
在这个例子中,MySQL 只计算表达式 1 = 0 AND 1 / 0 的第一部分 1 = 0。
由于表达式 1 = 0 返回 0,因此 MySQL 可以确定整个表达式的结果,即 0。
因此,MySQL 不需要计算表达式的剩余部分,即 1/0;它将发出除以零错误。
MySQL AND 运算符示例
让我们使用示例数据库中的customers表进行演示。
以下语句使用 AND 运算符查找位于 California (CA), USA 的客户:
SELECT
customername,
country,
state
FROM
customers
WHERe
country = 'USA' AND
state = 'CA';
+------------------------------+---------+-------+ | customername | country | state | +------------------------------+---------+-------+ | Mini Gifts Distributors Ltd. | USA | CA | | Mini Wheels Co. | USA | CA | | Technics Stores Inc. | USA | CA | | Toys4GrownUps.com | USA | CA | | Boards & Toys Co. | USA | CA | | Collectable Mini Designs Co. | USA | CA | | Corporate Gift Ideas Co. | USA | CA | | Men 'R' US Retailers, Ltd. | USA | CA | | The Sharp Gifts Warehouse | USA | CA | | West Coast Collectables Co. | USA | CA | | Signal Collectibles Ltd. | USA | CA | +------------------------------+---------+-------+ 11 rows in set (0.00 sec)
通过使用 AND 运算符,您可以组合两个以上的布尔表达式。例如,以下查询返回位于美国加利福尼亚州且信用额度大于 100K 的客户。
SELECt
customername,
country,
state,
creditlimit
FROM
customers
WHERe
country = 'USA' AND
state = 'CA' AND
creditlimit > 100000;
+------------------------------+---------+-------+-------------+ | customername | country | state | creditlimit | +------------------------------+---------+-------+-------------+ | Mini Gifts Distributors Ltd. | USA | CA | 210500.00 | | Collectable Mini Designs Co. | USA | CA | 105000.00 | | Corporate Gift Ideas Co. | USA | CA | 105000.00 | +------------------------------+---------+-------+-------------+ 3 rows in set (0.00 sec)
总结
- 使用 AND 运算符组合两个布尔表达式。当两个表达式都为真时,AND 运算符返回真;否则,它返回 false。
- 使用 AND 运算符在 SELECT 语句的 WHERe 子句中形成条件。


![MYSQL AND[猿教程] MYSQL AND[猿教程]](http://www.mshxw.com/aiimages/31/996854.png)
