如何在mysql中使用where条件_mysql where条件用法解析

来源:这里教程网 时间:2026-02-28 20:31:50 作者:

在 MySQL 中,

WHERE
子句用于筛选满足特定条件的记录,是
SELECT
UPDATE
DELETE
等语句中最常用、最关键的过滤工具。用好
WHERE
,核心在于准确表达逻辑关系和正确处理数据类型。

基础语法与常见写法

WHERE
必须紧跟在
FROM
(或
JOIN
)之后,支持单个条件或多条件组合。基本结构如下:

SELECT * FROM users WHERE age > 18;

UPDATE orders SET status = 'shipped' WHERE order_id = 1001;

注意:字符串值要用单引号(

'admin'
),数字可不加引号(但推荐统一用引号避免隐式转换问题),NULL 要用
IS NULL
判断,不能用
= NULL

多条件组合与逻辑运算符

使用

AND
OR
NOT
连接多个条件,优先级为
NOT
>
AND
>
OR
,复杂逻辑建议用括号明确分组:

SELECT * FROM products WHERE category = 'book' AND price BETWEEN 20 AND 80; SELECT * FROM users WHERE city = 'Beijing' OR city = 'Shanghai';(等价于
city IN ('Beijing','Shanghai')
SELECT * FROM logs WHERE level != 'DEBUG' AND created_at >= '2024-01-01';

常用条件表达式与易错点

除了常规比较(

=
>
),这些操作符高频实用且容易出错:

IN / NOT IN:适用于枚举多个固定值,注意
IN
中含
NULL
会导致整条条件结果为
UNKNOWN
,查不到数据
LIKE:模糊匹配,
%
匹配任意长度字符,
_
匹配单个字符;中文或带特殊字符时注意转义(如
\_
)和索引失效风险
IS NULL / IS NOT NULL:判断空值唯一安全方式,
= NULL
永远返回 false
BETWEEN ... AND ...:闭区间,包含两端值,且要求前后值顺序正确(
BETWEEN 10 AND 5
不生效)

性能与索引注意事项

WHERE
条件是否能走索引,直接影响查询速度:

尽量在
WHERE
中使用索引列做等值或范围查询(如
WHERE status = 'active'
避免在索引列上使用函数或表达式(如
WHERE YEAR(create_time) = 2024
会跳过索引)
对文本字段用
LIKE
时,前导通配符(
LIKE '%abc'
)无法使用 B+Tree 索引,可考虑全文索引或倒序存储优化
EXPLAIN
查看执行计划,确认
type
是否为
ref
range
key
是否显示用了哪个索引

相关推荐