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