MYSQL AND[猿教程]

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 运算符的结果。

TRUEFALSENULL
TRUETRUEFALSENULL
FALSEFALSEFALSEFALSE
NULLNULLFALSENULL

在实践中,您将在 SELECTUPDATEDELETE 语句的 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 子句中形成条件。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值