若是遇到魔教妖人,你难道要对所有人施放神剑御雷真诀吗?那岂不是连同门也伤了?
当然不是!我只打穿黑衣服的,或者手里拿着血骷髅的。
这便是 WHERE 子句的作用——条件过滤。只有符合条件的记录,才会被选中。
WHERE 子句用于提取那些满足指定标准的记录。它不仅用于 SELECT,在 UPDATE 和 DELETE 中更是至关重要(防止误伤友军)。
SELECT * FROM table_name
WHERE column_name operator value;
要想精准定位,需熟练掌握以下法印:
| 符号 | 含义 | 诛仙示例 |
|---|---|---|
= | 等于 | Sect = '青云门' (只找青云门人) |
<> 或 != | 不等于 | Sect != '魔教' (正道人士) |
> | 大于 | Power > 5000 (高手) |
< | 小于 | Age < 18 (少年英才) |
>= | 大于等于 | Level >= 10 (已出师) |
<= | 小于等于 | Level <= 3 (刚入门) |
BETWEEN | 在...之间 | Age BETWEEN 20 AND 30 (青年才俊) |
LIKE | 模式匹配 | Name LIKE '张%' (姓张的) |
IN | 在列表内 | Sect IN ('天音寺', '焚香谷') (两派弟子) |
单一条件往往不够用。我们可以用逻辑运算符将多个条件组合起来。
要求: 所有条件必须同时满足。
-- 寻找:门派是鬼王宗 且 性别是女 (如碧瑶)
SELECT * FROM Disciples
WHERE Sect = 'GuiWang' AND Gender = 'Female';
要求: 只要满足其中一个条件即可。
-- 寻找:是张小凡 或 是林惊羽
SELECT * FROM Disciples
WHERE Name = 'Zhang Xiaofan' OR Name = 'Lin Jingyu';
要求: 条件不成立时显示。
-- 寻找:不是青云门的弟子
SELECT * FROM Disciples
WHERE NOT Sect = 'QingYun';
当 AND 和 OR 混用时,必须小心!AND 的优先级通常高于 OR。为了避免歧义,请务必使用括号。
任务: 找出修为高深(>9000)的,且属性是(雷 或 火)的法宝。
❌ 错误写法
SELECT * FROM Treasures
WHERE Power > 9000
AND Element = '雷'
OR Element = '火';
后果:会选出所有火属性法宝(不管修为多少),和修为>9000的雷法宝。
✅ 正确写法
SELECT * FROM Treasures
WHERE Power > 9000
AND (Element = '雷' OR Element = '火');
后果:先选出雷或火的,再从中筛选修为>9000的。