📄 一句话概括
WHERE 的符号全家桶第一箱:!= 不等、> < >= <= 比较、BETWEEN 范围——重点记 BETWEEN 是【含两头】的闭区间。
📝 本节和前面几节的关系
3-8 的 WHERE 槽里装上了 = 和 AND/OR;本节把比较符号补齐——从此【大于等于 80 且不等于 100】这种条件张口就来。(文件名里的比较符号用全角写,半角 > < 不允许出现在 Windows 文件名里;正文 SQL 里一律半角。)
一、比较符号全家福
| 符号 | 意思 | 示例 |
|---|---|---|
= |
等于 | class = 1 |
!= |
不等于(也可写 <>) |
class != 1 |
> >= |
大于 / 大于等于 | score > 80 |
< <= |
小于 / 小于等于 | score <= 64 |
-- 准备块(没建表先跑 3-6 的准备块)
SELECT * FROM students WHERE score != 78; -- 排除王五
SELECT * FROM students WHERE score >= 78; -- 78、85、92(钱七 NULL 不算,3-10 说)
SELECT * FROM students WHERE score < 78; -- 64
注意:比较 NULL 的行直接落空——NULL 和任何数比较都不是真,钱七在 score >= 78 里查不到;这不是 bug,是 NULL 的脾气(3-10 处理)。
二、BETWEEN:含两头的闭区间
-- 70 到 85 之间(含 70 和 85 本身)
SELECT * FROM students WHERE score BETWEEN 70 AND 85;
输出:张三 85、王五 78。
BETWEEN a AND b = score >= a AND score <= b——两个端点都算数。
- 想排除端点:自己写
score > 70 AND score < 85 - 反向用法:
NOT BETWEEN——留范围外的
最大坑:以为 BETWEEN 不含端点。 85 算不算【70 到 85 之间】?SQL 说不含糊——算。
三、动手 Demo:每个符号踩一遍
-- ① 不等于
SELECT * FROM students WHERE class != 1;
-- ② 范围:60~85 之间(含端点)
SELECT * FROM students WHERE score BETWEEN 60 AND 85;
-- ③ 等价改写对照(结果与②完全一样)
SELECT * FROM students WHERE score >= 60 AND score <= 85;
-- ④ 排除端点的开区间(78 和 85 都不要)
SELECT * FROM students WHERE score > 70 AND score < 85;
-- ⑤ NOT BETWEEN:范围外的
SELECT * FROM students WHERE score NOT BETWEEN 70 AND 85;
看到什么算成功:②和③输出一致(85、78 两行);④只剩王五 78(70 < 78 < 85,端点 85 被排掉);⑤是 92 和 64 两行。三组结果亲手对上,闭区间刻进脑子。
四、30 秒实验
试试字符串也能比:SELECT * FROM students WHERE name > '李四';——能跑(文字按字典序比),输出按拼音序在【李四】后面的行。比较符号对 TEXT 也有效,但字典序与直觉常有出入(汉字排序依编码),正式业务比大小尽量用数字列。
五、常见误区
- "BETWEEN 不含右端点" —— 含。
BETWEEN 70 AND 85两头都抓;要开区间自己用><拼。 - "不等于只有 != 一种写法" —— 还能写
<>,效果一样;有的老系统只认<>。 - "NULL 也会被 >= 这类条件查出来" —— 不会。NULL 与任何值比较都【不真】,要抓 NULL 得用专门的 IS NULL(3-10)。
自测三问(点开对答案)
1. 不等于有几种写法? **两种:`!=` 和 `<>`**。 2. `BETWEEN 70 AND 85` 等价于什么?含端点吗? **`score >= 70 AND score <= 85`;含两端**。 3. 钱七(score 为 NULL)会被 `score > 60` 查出来吗? **不会**——NULL 与任何数比较都不真;抓 NULL 用 IS NULL。- ☐ 下一节(3-10 IN、LIKE、IS NULL-用于查询的符号2-包含值的数据、查询空数据)
相关笔记
- WHERE、=、AND、OR-缩小范围查找符合条件的记录 —— 上一节:本节的符号全装在 WHERE 槽里
- 🗄️ 数据库基础 · 索引 —— 全课路线图