SQL WHERE 条件筛选
SQL WHERE 条件筛选 · 难度:入门 · +10XP
SQL WHERE 条件筛选
WHERE子句用于过滤记录,只返回满足指定条件的行。如果没有WHERE,SELECT会返回表中所有数据;有了WHERE,就能精确提取你想要的数据。
比较运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
= | 等于 | city = '南宁' |
<> 或 != | 不等于 | city != '南宁' |
> | 大于 | score > 80 |
< | 小于 | age < 20 |
>= | 大于等于 | score >= 60 |
<= | 小于等于 | age <= 22 |
逻辑运算符
-- AND:所有条件都满足
SELECT * FROM students WHERE city = '南宁' AND score > 80;
-- OR:任一条件满足
SELECT * FROM students WHERE city = '南宁' OR city = '桂林';
-- NOT:条件取反
SELECT * FROM students WHERE NOT city = '南宁';
-- 组合使用(括号明确优先级)
SELECT * FROM students
WHERE (city = '南宁' OR city = '桂林')
AND score >= 60
AND age BETWEEN 18 AND 25;
特殊运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
BETWEEN a AND b | 在范围内(含边界) | age BETWEEN 18 AND 22 |
IN (v1, v2, ...) | 在列表中 | city IN ('南宁','桂林') |
LIKE | 模糊匹配 | name LIKE '张%' |
IS NULL | 为空值 | email IS NULL |
IS NOT NULL | 不为空值 | email IS NOT NULL |
LIKE 通配符
-- % 匹配任意多个字符
SELECT * FROM students WHERE name LIKE '张%'; -- 姓张的
SELECT * FROM students WHERE name LIKE '%明%'; -- 名字含"明"
-- _ 匹配单个字符
SELECT * FROM students WHERE name LIKE '张_'; -- 张某(两字名)
SELECT * FROM students WHERE name LIKE '张__'; -- 张某某(三字名)
实战练习
- 查询成绩在70到90之间(含边界)的学生
- 查询来自南宁或桂林且年龄小于22岁的学生
- 查询名字以"王"开头且邮箱不为空的学生
- 查询不在南宁、桂林、柳州三个城市的学生