在数据库查询中,我们通常不会需要查看整张表的所有数据,而是只想找出符合条件的部分记录。例如:
- 查找某个用户的所有订单;
- 查询价格大于100的商品;
- 筛选出2025年注册的用户。
这时候,我们就需要用到一个非常重要的 SQL 关键字 —— WHERE!
一、 什么是 WHERE?
WHERE 是 SQL 中用于过滤查询结果的关键字。它允许我们根据某些条件来选择性地获取数据。
你可以把它理解为:“只返回满足我条件的数据”。
二、基本语法
SELECT column1, column2, ...
FROM table_name
WHERE condition;
condition是一个布尔表达式,用来判断哪些行应该被选中。
三、 示例讲解
假设我们有一个 users 表,结构如下:
| id | name | age | gender | created_at |
|---|---|---|---|---|
| 1 | 张三 | 20 | 男 | 2025-01-01 |
| 2 | 李四 | 22 | 女 | 2025-02-01 |
| 3 | 王五 | 21 | 男 | 2025-03-01 |
示例1:查找特定用户的记录
SELECT * FROM users WHERE name = '李四';
返回的是 name 等于“李四”的那条记录。
示例2:查找年龄大于等于21岁的用户
SELECT * FROM users WHERE age >= 21;
返回的是 age 大于或等于21的所有记录(即李四和王五)。
示例3:组合多个条件(AND / OR)
-- 查找性别为女且年龄大于20的用户
SELECT * FROM users WHERE gender = '女' AND age > 20;
-- 查找名字是张三或者王五的用户
SELECT * FROM users WHERE name = '张三' OR name = '王五';
示例4:使用 NOT 取反条件
-- 查找不是男性用户的记录
SELECT * FROM users WHERE NOT gender = '男';
示例5:模糊匹配 LIKE
-- 查找名字以“张”开头的用户
SELECT * FROM users WHERE name LIKE '张%';
-- 查找名字包含“三”的用户
SELECT * FROM users WHERE name LIKE '%三%';
注意:
| 操作符 | 含义 | 示例 |
|---|---|---|
= | 等于 | WHERE age = 20 |
>、< | 大于、小于 | WHERE age > 20 |
>=、<= | 大于等于、小于等于 | WHERE price <= 100 |
<> 或 != | 不等于 | WHERE gender != '男' |
IN | 在某一集合中 | WHERE name IN ('张三','李四') |
BETWEEN | 在某两个值之间 | WHERE age BETWEEN 20 AND 30 |
LIKE | 模糊匹配 | WHERE name LIKE '张%' |
IS NULL | 判断是否为空 | WHERE email IS NULL |
四、 总结
| 功能 | 使用方式 |
|---|---|
| 精确筛选 | WHERE name = '张三' |
| 数值比较 | WHERE age > 20 |
| 多条件筛选 | WHERE gender = '女' AND age > 20 |
| 模糊匹配 | WHERE name LIKE '张%' |
| 判断空值 | WHERE email IS NULL |