【四】过滤数据 WHERE子句
使用WHERE子句
在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出。
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
注意:WHERE子句的位置 在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将会产生错误
WHERE子句操作符
| 操作符 | 说明 |
| = | 等于 |
| < > | 不等于 |
| != | 不等于 |
| < | 小于 |
| < = | 小于等于 |
| !< | 不小于 |
| > | 大于 |
| > = | 大于等于 |
| !> | 不大于 |
| BETWEE | 在指定的两个值之间 |
| IS NULL | 为NULL值 |
注意:操作符兼容 某些操作符是冗余的(如< >与!=相同,!<相当于>=)。并非所有DBMS都支持这些操作符。想确定你的DBMS支持哪些操作符,请参阅相应的文档。
检查单个值
列出所有价格小于等于10美元的产品:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price <= 10;
不匹配检查
列出所有不是供应商DLL01制造的产品:
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01';
提示:何时使用引号 如果仔细观察上述WHERE子句中的条件,会看到有的值括在单引号内,而有的值未括起来。单引号用来限定字符串。如果将值与字符串类型的列进行比较,就需要限定引号。用来与数值列进行比较的值不用引号。
范围值检查
列出价格在5美元和10美元之间的所有产品:
SELECT prod_name, prod_price
FROM Products
WHERE prod_price
BETWEEN 5 AND 10;
空值检查
NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。
列出所有没有价格(空prod_price字段,不是价格为0)的产品:
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
1. 编写SQL语句,从Products表中检索产品ID(prod_id)和产品名称(prod_name),只返回价格为9.49美元的产品。
SELECT prod_id, prod_name
FROM Products
WHERE prod_price = 9.49;
2. 编写SQL语句,从Products表中检索产品ID(prod_id)和产品名称(prod_name),只返回价格为9美元或更高的产品。
SELECT prod_id, prod_name
FROM Products
WHERE prod_price >= 9;
3. 从OrderItems表中检索出所有不同订单号(order_num),其中包含100个或更多的产品。
SELECT DISTINCT order_num
FROM OrderItems
WHERE quantity >=100;
4. 编写SQL语句,返回Products表中所有价格在3美元到6美元之间的产品的名称(prod_name)和价格(prod_price),然后按价格对结果进行排序。
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 3 AND 6
ORDER BY prod_price;

浙公网安备 33010602011771号