【四】过滤数据 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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?