WHERE子句用于筛选满足条件的记录,支持=、、、=、AND、OR、NOT、IN、BETWEEN、LIKE、IS NULL等操作符,常用于SELECT、UPDATE、DELETE语句中限定数据范围,使用时需注意字符串加引号、避免字段使用函数、合理使用括号和通配符以提升性能。
在 MySQL 中,WHERE 子句用于过滤查询结果中满足特定条件的记录。它通常出现在 SELECT、UPDATE 和 DELETE 语句中,用来限定操作的数据范围。
基本语法
SELECT、UPDATE、DELETE 语句中使用 WHERE 的基本结构如下:
SELECT 列名 FROM 表名 WHERE 条件;
UPDATE 表名 SET 列 = 值 WHERE 条件;
DELETE FROM 表名 WHERE 条件;
注意:不加 WHERE 子句会作用于所有行,执行 UPDATE 或 DELETE 时要特别小心。
常见的 WHERE 条件操作符
WHERE 支持多种比较和逻辑操作符来构建条件表达式:
-
=:等于(例:name = '张三')
-
或 !=:不等于
- :小于,>:大于
- 、>=:小于等于、大于等于
-
AND:且,多个条件同时成立
-
OR:或,任一条件成立即可
-
NOT:取反
-
IN:匹配列表中的任意一个值(例:id IN (1,2,3))
-
BETWEEN ... AN
D ...:范围匹配(包含边界)
-
LIKE:模糊匹配,支持 %(任意字符)和 _(单个字符)
-
IS NULL:判断是否为空值
实际使用示例
假设有一张名为 users 的表,包含 id、name、age、city 字段。
- 查询年龄大于 25 的用户:
SELECT * FROM users WHERE age > 25;
- 查询城市是北京或上海的用户:
SELECT * FROM users WHERE city = '北京' OR city = '上海';
- 查询姓名以“李”开头的用户:
SELECT * FROM users WHERE name LIKE '李%';
- 更新 ID 为 1 的用户年龄:
UPDATE users SET age = 30 WHERE id = 1;
- 删除城市为空的记录:
DELETE FROM users WHERE city IS NULL;
注意事项
使用 WHERE 时要注意以下几点:
- 字符串值要用单引号括起来,数字不需要
- 避免在 WHERE 中对字段使用函数,否则可能导致索引失效
- 复杂条件建议用括号明确优先级,例如 (A OR B) AND C
- LIKE 中使用 % 开头(如 '%王')可能影响查询性能
基本上就这些。掌握 WHERE 条件能让你精准操作数据,是日常开发中最常用的功能之一。