第6章 过滤数据
使用WHERE子句
WHERE子句操作符
检查单个值
不匹配检查
范围值检查
空值检查
一、使用WHERE子句
数据库表一般包含大量的数据,很少需要检索表中所有行。通常会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件,搜索条件也称为过滤条件。
在select
语句中,数据根据where
子句中指定的搜索条件进行过滤。
select prod_name, prod_price
from products
where prod_price = 2.50;
这条语句从products
表中检索两个列,但不返回所有行,只返回prod_price
值为2.50
的行。
注意:在同时使用order by
和where
子句时,应该让order by
位于where
之后。
二、WHERE子句操作符
操作符 | 说明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
between | 在指定的两个值之间 |
1、检查单个值
select prod_name, prod_price
from products
where prod_name = 'fuses'; // prod_name为字符串类型
注意:MySQL在执行匹配时默认不区分大小写。
2、不匹配检查
select prod_name, prod_price
from products
where prod_price <> 1003;
select prod_name, prod_price
from products
where prod_price != 1003;
3、范围值检查
select prod_name, prod_price
from products
where prod_price between 5 and 10; // 包括5和10
4、空值检查
在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值NULL
。
NULL
无值,它与字段包含0
、空字符串或仅仅包含空格不同。
select
语句有一个特殊的where
子句,可用来检查具有NULL
值的列。这个where
子句就是is null
子句。
select prod_name
from products
where prod_price is null;
这条语句返回没有价格(空prod_price
字段,不是价格0
)的所有产品。
注意:null
与不匹配在通过过滤选择出不具有特定值的行时,你可能希望返回具有null
值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所有在匹配过滤或不匹配过滤时不返回它们。因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有null
的行。
?