SQL 入门笔记(五)高级数据过滤
这一节将记录如何用 AND
和 OR
操作符组合成 WHERE
子句,如何明确地管理求值顺序,如何使用 IN
和 NOT
操作符
组合 WHERE
子句
在上一节中介绍的所有 WHERE 子句在过滤时使用的都是单一条件,为了进行更强的过滤控制,可以使用 AND
和 OR
组合多个条件
AND
操作符
使用 AND
操作符附加条件
1 | SELECT prod_id, prod_price ,prod_name |
这个例子只包含一个 AND
子句,可以增加多个
OR
操作符
这个肯定一眼就能看懂吧
1 | SELECT prod_name , prod_price |
求值顺序
对比 AND
和 OR
两个操作符,AND
的优先级更高
但是在实际使用时,墙裂建议使用小括号标记优先级
1 | SELECT prod_name , prod_price |
IN
操作符
IN
操作符用来指定条件范围,范围中的每个条件都可以进行匹配
1 | SELECT prod_name , prod_price |
你大概已经发现了,IN
和OR
在一些情况下有相同的功能,上面的例子也可以这样写
1 | SELECT prod_name , prod_price |
为什么要使用IN
呢?其优点如下:
- 在有很多合法选项时,
IN
操作符的语法更清楚,更直观 - 在与其他
AND
和OR
操作符组合使用IN
时,求值顺序更容易管理 - IN操作符一般比一组OR操作符执行地更快
- IN的最大优点是可以包含其他SELECT语句 (将在学到子查询时详细介绍)
NOT
操作符
NOT
操作符用于否定其后所跟的任何条件
下面的例子列出了除 DLL01
之外的所有供应商制造的产品
1 | SELECT prod_name |
当然,在本例中你也可以使用!=
,对于这里这种简单的 WHERE
子句,使用 NOT
确实没有什么优势
但在更复杂的子句中,NOT
是非常有用的,例如在与 IN
联合使用时, NOT
可以非常简单地找出与条件列表不匹配的行
大多数 DBMS
允许使用 NOT
否定任何条件
评论
GiscusTwikoo