第4课 过滤数据
4.1 使用 WHERE 子句:过滤
只检索所需数据需要指定搜索条件(即过滤条件)。
WHERE 子句在表名(FROM 子句)后给出,根据 WHERE 子句中指定的条件过滤。
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
-- 分析:从 Products 表中检索两个列,只返回 prod_price 值为 3.49 的行
【提示】SQL 过滤与应用过滤:
数据也可以在应用层过滤。但是在优化数据库后可以更快速地对数据进行过滤,如果让客户端应用(或开发语言)处理数据库的工作将会极大地影响应用的性能,并且使所创建的应用完全不具备可伸缩性。此外,也可能会导致网络带宽的浪费。
【注意】WHERE 子句的位置:
在同时使用 ORDER BY 和 WHERE 子句时,ORDER BY 要位于 WHERE 之后。
4.2 WHERE 子句操作符
-- =====表4-1 WHERE子句操作符=====
-- 操作符 说明 操作符 说明
-- = 等于 > 大于
-- <> 不等于 >= 大于等于
-- != 不等于 !> 不大于
-- < 小于 BETWEEN 在指定的两个值之间
-- <= 小于等于 IS NULL 为NULL值
-- !< 不小于
4.2.1 检查单个值
列出所有价格小于 10 美元的商品:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 10;
检索所有价格小于等于 10 美元的产品:(结果同上图)
SELECT prod_name, prod_price
FROM Products
WHERE prod_price <= 10;
4.2.2 不匹配检查
列出所有不是供应商 DLL01 制造的产品:
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01';
-- 第二种写法
SELECT vend_id, prod_name
FROM Products
WHERE vend_id != 'DLL01';
4.2.3 范围值检查(BETWEEN)
检索价格在 5 美元和 10 美元之间的所有产品:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10
4.2.4 空值检查(NULL)
在一个列不包含值时,称其包含空值 NULL
NULL:无值,与字段包含0、空字符串或仅仅包含空格不同
【注意】确定值是否为 NULL,不能简单地检查是否 =NULL,应该使用 IS NULL
检索没有电子邮件的顾客:
SELECT cust_name, cust_email
FROM Customers
WHERE cust_email IS NULL
4.3 小结
- 使用 WHERE 过滤数据
- 学习检验相等、不等、大于、小于、值的范围及 NULL 值等
续集: