T-SQL:毕业生出门需知系列(五)
第5课 高级数据过滤
5.1 组合 WHERE 子句
第4课介绍的 WHERE 子句在过滤数据时都是用单一的条件。
5.1.1 AND 操作符
检索由供应商 DLL01 制造且价格小于等于 4 美元的所有产品的名称和价格:
SELECT prod_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4;
5.1.2 OR 操作符
检索任一个指定供应商制造的所有产品的名称和价格:
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
5.1.3 求值顺序(( ))
需要列出价格为 10 美元以上,且由 DLL01 或 BRS01 制造的所有产品:
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price >= 10;
观察结果,发现有 4 行价格小于 10 美元的。
【原因】SQL 在处理 OR 操作符前,优先处理 AND 操作符
SELECT prod_name, prod_price FROM Products WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10;
【提示】在 WHERE 子句中使用圆括号:
改变优先级;
明确操作顺序,增强可读性。
5.2 IN 操作符
IN 操作符:用来指定条件范围,范围中的每个条件都可以进行匹配。
检索由供应商 DLL01 和 BRS01 制造的所有产品:
SELECT prod_name, prod_price FROM Products WHERE vend_id IN ('DLL01', 'BRS01') ORDER BY prod_name;
-- 用 IN 完成和 OR 同样的操作 SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' ORDER BY prod_name
使用 IN 操作符的原因:
--在有很多合法选项时,IN 的语法更直观;
--在与其它 AND 和 OR 组合使用 IN 时,求值顺序容易管理;
--IN 一般比一组 OR 执行得快;
--最大优点--可以包含其它 SELECT 语句,能动态地建立 WHERE 子句。
5.3 NOT 操作符
用来否定其后所跟的任何条件
NOT 从不单独使用
NOT 可以用在要过滤的列前或后
列出除 DLL01 之外的所有供应商制造的产品:
SELECT prod_name FROM Products WHERE NOT vend_id = 'DLL01' ORDER BY prod_name;
--也可以使用<>,结果一样 SELECT prod_name FROM Products WHERE vend_id <> 'DLL01' ORDER BY prod_name;
5.4 小结
- AND 和 OR 组合的 WHERE 子句
- 求值顺序
- IN 和 NOT
续集:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?