SQL语句中过滤条件(filter condition)的关键字是WHERE
,跟在表名后面。
1. WHERE
语句操作符
不同数据库管理系统,其支持的操作符略有不同。
操作符 | 说明 |
---|---|
= | 等于 |
> | 大于 |
< | 小于 |
!= | 不等于 |
<> | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
!< | 不小于 |
!> | 不大于 |
BETWEEN | 在中间 |
IS NULL | 为空 |
2. 单条件过滤 WHERE
SELECT * FROM student WHERE name = 'user1'
-
输出结果:
1 user1 18 大一新生
3. 多条件过滤 AND
和OR
使用 AND
或 OR
子句:
AND
连接表达式表示过滤条件都为真的数据;OR
连接表达式表示匹配过滤条件任意一个
AND
示例:
SELECT * FROM student WHERE age >= 18 AND age <= 23;
-
条件:学生年龄大于等于18 并且 学生年龄小于 23
-
执行结果:
-
1 user1 18 大一新生 2 user2 20 毕业生
OR
示例:
SELECT * FROM student WHERE age >= 18 OR age <= 23;
- 条件:学生年龄大于等于18 或 学生年龄小于 23
AND
和OR
示例:
SELECT * FROM student WHERE age >= 18 AND (age <= '23' OR id >= 2);
-
使用
OR
和AND
时应明确过滤条件,用小括号括起来,因为数据库管理系统按顺序执行,不用括号括起来很容易造成语义错误; -
过滤条件:查询年龄大于18 并且 (年龄大于等于23或id大于等于2) 的数据
-
查询结果:
1 user1 18 大一新生 2 user2 20 毕业生 3 user3 27 社会人士
4. 范围查询 BETWEEN
SELECT * FROM student WHERE age BETWEEN 18 AND 23
-
查询年龄在18到23之间的(包含18和23)
-
查询结果:
1 user1 18 大一新生 2 user2 20 毕业生
5. 空值查询 IS NULL
SELECT * FROM student WHERE age IS NULL
-
数据库表不填充数据默认为空(
NULL
),当然也可给指定类型的列设置默认值 -
过滤条件:查询年龄为空的数据
-
查询结果(因为
insert
的数据age
都有值,所以返回为空):空
6. IN
操作
SELECT * FROM student WHERE age IN (18,20,27);
-
查询条件:年龄在 18 或 20 或 27 的数据
-
IN
是范围查询,匹配小括号中指定的任意值,功能跟OR
类似,一个IN
相当于好多个OR
-
查询结果:
1 user1 18 大一新生 2 user2 20 毕业生 3 user3 27 社会人士
7. NOT
操作符
SELECT * FROM student WHERE NOT age = 20;
-
NOT
操作符表示否定,跟在WHERE
后面,功能类似<>
-
查询结果:
1 user1 18 大一新生 3 user3 27 社会人士 4 user4 17 高三学子 5 user4 17 高三学子
NOT
和IN
的查询:
SELECT * FROM student WHERE NOT age IN (20, 27);
-
查询条件:年龄不在 20 或 27 中的数据
-
执行结果:
1 user1 18 大一新生 4 user4 17 高三学子 5 user4 17 高三学子