MySQL WHERE 子句

用 WHERE 过滤行:比较、范围、逻辑、模糊匹配。

Beginner
Key PointsWHERE 决定「哪些行」进入结果集;条件可用 AND/OR 组合、用括号改变优先级。

比较与逻辑

SQL
SELECT * FROM users
WHERE age >= 30 AND age <= 40;

SELECT * FROM users
WHERE age < 18 OR age > 60;
Output
+----+----------+-----+
| id | username | age |
+----+----------+-----+
|  2 | bob      |  32 |
|  4 | dave     |  41 |
+----+----------+-----+

IN 与 BETWEEN

SQL
SELECT * FROM users WHERE age IN (25, 32);
SELECT * FROM users WHERE age BETWEEN 25 AND 40;
Output
+----+----------+-----+
| id | username | age |
+----+----------+-----+
|  2 | bob      |  32 |
|  3 | carol    |  25 |
+----+----------+-----+

模糊匹配 LIKE

SQL
SELECT * FROM users WHERE email LIKE '%@example.com';
SELECT * FROM users WHERE username LIKE 'a%';   -- 以 a 开头

% matches any length, _ matches one char. A leading % (e.g. %example) defeats the index and forces a full scan.

**Never test NULL with =** — use IS NULL / IS NOT NULL. WHERE email = NULL never matches; it is the classic beginner trap.

Friends & Partners