过滤数据 WHERE
- 简介
- WHERE 子句操作符
- 检测单个值案例
- 范围值检查 BETWEEN AND
- 空值检查 NULL
简介
数据库表一般包含大量的数据,很少需要检索表中的所有行。我们只检索所需数据需要指定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition);
在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。规定 WHERE 子句在 FROM 子句后给出。
SELECT *
FROM Products
WHERE prod_name='RR';
【1】在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后;
WHERE 子句操作符
WHERE 子句操作符表如下:
【1】如上表所示,存在冗余的操作符,比如不等于;对于此,不同的 DBMS 支持的操作符不同;
检测单个值案例
案例1:列出所有价格小于10元的产品
SELECT *
FROM Products
WHERE prod_price < 10;
案例2:列出所有价格小于等于10元的产品
SELECT *
FROM Products
WHERE prod_price <= 10;
案例3:列出所有不是供应商 DLL01 制造的产品
SELECT *
FROM Products
WHERE vend_id <> 'DLL01';
SELECT *
FROM Products
WHERE vend_id != 'DLL01';
【1】对于 <> 与 != 的选择需要参照不同的 DBMS 来选择;
范围值检查 BETWEEN AND
检索价格在 5 美元和 10 美元之间的所有产品:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
空值检查 NULL
其实在创建表时,表设计人员可以指定其中的列能否不包含值;而确定值是否为 NULL,不能简单地检查是否等于 NULL。SELECT 语句有一个特殊的 WHERE 子句,可用来检查具有 NULL 值的列。这个 WHERE 子句就是 IS NULL 子句。具体如下:
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
上述语句返回所有没有价格(空 prod_price 字段,不是价格为 0)的产品。