本节,我们将来学习 SELECT
语句中 WHERE
子句的基本用法:通过 WHERE
子句来指定搜索条件。
使用 WHERE 子句
当我们需要检索出数据库表中指定的数据子集时,就需要使用 WHERE
子句来指定搜索条件(过滤条件)。WHERE
字句在表名之后给出。比如,下面的 SQL
将只返回 Products
表中价格为 9.49 美元的产品 ID
和产品价格。
SELECT prod_id, prod_name
FROM Products
WHERE prod_price = 9.49;
数据表子集检索结果:
![](https://img.haomeiwen.com/i15629873/0940b2b8a233a760.png)
表中的全部数据如下:
![](https://img.haomeiwen.com/i15629873/f29ca575b2f49cad.png)
WHERE 子句操作符
在上述的 SQL 中小鱼使用了 =
操作符,除了等于操作符之外,大部分 DBMS 支持 !=
<
<=
>
>=
BETWEEN
IS NULL
操作符。下面,我们分别来实践一下吧~
下面的 SQL
返回价格为 9 元或更高的商品 ID 、商品名称和商品价格:
SELECT prod_id, prod_name, prod_price
FROM Products
WHERE prod_price >= 9;
条件检索结果:
![](https://img.haomeiwen.com/i15629873/f9671aa647f6d856.png)
下面,我们检索出所有非 DLL01
供应商供应的产品名称:
SELECT prod_name, vend_id
FROM Products
WHERE vend_id != 'DLL01';
检索结果:
![](https://img.haomeiwen.com/i15629873/671ebb644eacdfe0.png)
如果是检查某个范围的值,可以使用 BETWEEN
操作符。比如下面的 SQL 将检索出价格范围在 3.49
~ 5.99
之间的所有产品。
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 3.49 AND 5.99;
检索结果:
![](https://img.haomeiwen.com/i15629873/affa93c103532603.png)
注:BETWEEN 匹配范围中所有的值,包括指定的开始值和结束值。
在创建表时,开发人员会指定表中的列能否不包含值,在一个列不包含值时,我们称其包含空值(NULL
)。
注:字段包含空值与字段包含 0 、空字符串、空白字符不同。
接下来,我们检索下表中未填写邮箱的客户 ID 和客户名称:
![](https://img.haomeiwen.com/i15629873/354fd08ad868ffd2.png)
SQL 语句如下:
SELECT cust_id, cust_name
FROM Customers
WHERE cust_email is NULL;
检索结果:
![](https://img.haomeiwen.com/i15629873/e79c94682d644c72.png)
综合提高
从如下的订单表中检索出包含 100 个或更多产品的不同订单号:
![](https://img.haomeiwen.com/i15629873/8bfd3adc21c8f0e5.png)
使用 WHERE
子句和 DISTINCT
关键字完成 SQL 如下:
SELECT DISTINCT order_num
FROM OrderItems
WHERE quantity >= 100;
检索结果:
![](https://img.haomeiwen.com/i15629873/0a15180414657b1e.png)
接下来,检索出产品表中,价格在 3 美元到 6 美元之间的产品名称和价格,并按照价格进行降序排列。
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 3 AND 6
ORDER BY prod_price DESC;
注: BETWEEN 位于表名之后,ORDER BY 必须是 SELECT 语句中的最后一个子句。
检索排序结果:
![](https://img.haomeiwen.com/i15629873/7fedc521a5197abf.png)
网友评论