Mysql 的 where 语法使用(三)
2020-04-10 本文已影响0人
改昵称已被占用
timg.jpeg
在 select 语句中,数据根据 where 子句中指定的搜索条件进行过滤。where 子句在表名( from 子句)之后给出
where 的简单使用
select *
from sc
where score = 80;
此 sql 语句表示查询 sc 表中 score 字段等于 80 的所有信息,输出为:
+------+------+-------+
| SId | CId | score |
+------+------+-------+
| 01 | 01 | 80.0 |
| 02 | 03 | 80.0 |
| 03 | 01 | 80.0 |
| 03 | 02 | 80.0 |
| 03 | 03 | 80.0 |
+------+------+-------+
在同时使用 order by 和 where子句时,应该让 order by 位于 where 之后, 否则将会产生错误
where 子句的操作符
| 操作符 | 说明 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| != | 不等于 |
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
| between | 介于指定值之间 |
检查单个值
select *
from sc
where score < 60;
此 sql 语句表示在 sc 表中查询满足 score 字段小于 60 的数据,输出为:
+------+------+-------+
| SId | CId | score |
+------+------+-------+
| 01 | 02 | 40.0 |
| 04 | 02 | 59.0 |
| 04 | 03 | 59.0 |
| 06 | 01 | 31.0 |
| 06 | 03 | 34.0 |
+------+------+-------+
不匹配检查
select *
from sc
where sid <> 2;
此 sql 语句表示查询 sc 表中 sid 字段不等于 2 的数据,语句中的 <> 操作符等同于 !=,输出为:
+------+------+-------+
| SId | CId | score |
+------+------+-------+
| 01 | 01 | 80.0 |
| 01 | 02 | 40.0 |
| 01 | 03 | 99.0 |
| 03 | 01 | 80.0 |
| 03 | 02 | 80.0 |
| 03 | 03 | 80.0 |
| 04 | 01 | 72.0 |
| 04 | 02 | 59.0 |
| 04 | 03 | 59.0 |
| 05 | 01 | 76.0 |
| 05 | 02 | 87.0 |
| 06 | 01 | 31.0 |
| 06 | 03 | 34.0 |
| 07 | 02 | 89.0 |
| 07 | 03 | 98.0 |
+------+------+-------+
范围值检查
select *
from sc
where score between 60 and 100;
此 sql 语句表示查询 sc 表中 score 字段在 60 ~ 100 之间的数据,输出为:
+------+------+-------+
| SId | CId | score |
+------+------+-------+
| 01 | 01 | 80.0 |
| 01 | 03 | 99.0 |
| 02 | 01 | 70.0 |
| 02 | 02 | 60.0 |
| 02 | 03 | 80.0 |
| 03 | 01 | 80.0 |
| 03 | 02 | 80.0 |
| 03 | 03 | 80.0 |
| 04 | 01 | 72.0 |
| 05 | 01 | 76.0 |
| 05 | 02 | 87.0 |
| 07 | 02 | 89.0 |
| 07 | 03 | 98.0 |
其语法与其他 where 子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值,这两个值必须用 and 关键字分隔
空值检查
select *
from sc
where score is null;
此 sql 表示查询 sc 表中 score 值为空值的数据,输出为(因为此表中 score 字段没有空值的数据,所以查询结果为 Empty set):
Empty set (0.00 sec)