MySQL必知必会第六章-过滤数据
过滤数据
使用WHERE子句
搜索条件也称为过滤条件(filter condition)。在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤:
SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;
注意:
- SQL过滤与应用过滤:数据也可以在应用层过滤,但是数据库进行了优化,以便快速有效地对数据进行过滤。让客户机应用(或开发语言)处理数据库的工作将会极大地影响应用的性能。
- WHERE子句的位置:在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。
WHERE子句操作符
MySQL支持的条件操作符:
操作符 | 说明 |
---|---|
= | 说明 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN | 在指定的两值之间(包含边界) |
检查单个值
SELECT prod_name, prod_price FROM products WHERE prod_name = 'fuses';
SELECT prod_name, prod_price FROM products WHERE prod_price < 10;
SELECT prod_name, prod_price FROM products WHERE prod_price <= 10;
不匹配检查
SELECT vend_id, prod_name FROM products WHERE vend_id <> 1003;
SELECT vend_id, prod_name FROM products WHERE vend_id != 1003;
注意:
如果将值与串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号。
范围值检查
为了检查某个范围的值,可使用BETWEEN操作符:
SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
空值检查
IS NULL子句可用来检查具有NULL值的列:
SELECT prod_name FROM products WHERE prod_price IS NULL;
注意:
- NULL 无值(no value):它与字段包含0、空字符串或仅仅包含空格不同。
- NULL与不匹配: 在通过过滤选择出不具有特定值的行时,不能返回具有NULL值的行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。