MySQL中的逻辑运算符

MySQL中的逻辑运算符用于连接多个条件,通常用于 WHEREHAVING 子句,返回布尔值(TRUEFALSENULL)。常见的逻辑运算符如下:


1. AND(逻辑与)

  • 格式condition1 AND condition2
  • 作用:当 所有 条件都为 TRUE 时,返回 TRUE,否则返回 FALSE
示例
SELECT * FROM users WHERE age > 18 AND city = 'Beijing';

查找年龄大于 18 且所在城市为 “Beijing” 的用户。

逻辑表
condition1condition2condition1 AND condition2
TRUETRUETRUE
TRUEFALSEFALSE
FALSETRUEFALSE
FALSEFALSEFALSE
NULLTRUENULL
TRUENULLNULL
NULLNULLNULL

2. OR(逻辑或)

  • 格式condition1 OR condition2
  • 作用:当 至少一个 条件为 TRUE 时,返回 TRUE,否则返回 FALSE
示例
SELECT * FROM users WHERE age < 18 OR city = 'Beijing';

查找年龄小于 18 或者所在城市为 “Beijing” 的用户。

逻辑表
condition1condition2condition1 OR condition2
TRUETRUETRUE
TRUEFALSETRUE
FALSETRUETRUE
FALSEFALSEFALSE
NULLTRUETRUE
TRUENULLTRUE
NULLNULLNULL

3. NOT(逻辑非)

  • 格式NOT condition
  • 作用:对条件取反,TRUEFALSEFALSETRUE
示例
SELECT * FROM users WHERE NOT age >= 18;

查找年龄小于 18 的用户(等价于 age < 18)。

逻辑表
conditionNOT condition
TRUEFALSE
FALSETRUE
NULLNULL

4. XOR(逻辑异或)

  • 格式condition1 XOR condition2
  • 作用:当 两个条件不相同 时返回 TRUE,否则返回 FALSE
示例
SELECT * FROM users WHERE age > 18 XOR city = 'Beijing';

查找年龄大于 18 所在城市为 “Beijing”,但不能同时满足两个条件的用户。

逻辑表
condition1condition2condition1 XOR condition2
TRUETRUEFALSE
TRUEFALSETRUE
FALSETRUETRUE
FALSEFALSEFALSE
NULLTRUENULL
TRUENULLNULL
NULLNULLNULL

5. IS TRUE / IS FALSE / IS NULL

  • IS TRUE:条件值为 TRUE 时返回 TRUE,否则返回 FALSE
  • IS FALSE:条件值为 FALSE 时返回 TRUE,否则返回 FALSE
  • IS NULL:条件值为 NULL 时返回 TRUE,否则返回 FALSE
示例
SELECT * FROM users WHERE active IS TRUE;

查找 active 字段为 TRUE 的用户。

SELECT * FROM users WHERE active IS FALSE;

查找 active 字段为 FALSE 的用户。

SELECT * FROM users WHERE email IS NULL;

查找 email 为空的用户。


6. 组合使用

可以使用括号 () 组合多个逻辑运算符来控制优先级。

示例
SELECT * FROM users WHERE (age > 18 AND city = 'Beijing') OR (age < 18 AND city = 'Shanghai');

查找年龄大于 18 且所在城市为 “Beijing”, 年龄小于 18 且所在城市为 “Shanghai” 的用户。


运算符优先级

MySQL 逻辑运算符的优先级如下(从高到低):

  1. NOT
  2. AND
  3. XOR
  4. OR
示例
SELECT * FROM users WHERE NOT age > 18 AND city = 'Beijing';

等价于:

SELECT * FROM users WHERE (NOT age > 18) AND city = 'Beijing';

如果不使用括号,NOT 优先级高于 AND,因此 NOT age > 18 先计算。


总结

运算符说明示例
AND逻辑与,所有条件为 TRUE 才返回 TRUEage > 18 AND city = 'Beijing'
OR逻辑或,至少一个条件为 TRUE 就返回 TRUEage < 18 OR city = 'Beijing'
NOT逻辑非,取反NOT age > 18
XOR逻辑异或,两个条件不同返回 TRUEage > 18 XOR city = 'Beijing'
IS TRUE判断值是否 TRUEactive IS TRUE
IS FALSE判断值是否 FALSEactive IS FALSE
IS NULL判断值是否 NULLemail IS NULL

这些逻辑运算符可以用于 SQL 查询、数据筛选、权限控制等各种场景,提高查询的灵活性和准确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BirdMan98

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值