5 高级数据过滤

5.1 组合WHERE子句

ADD操作符

SELECT prod_id
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;

如果要增加多个过滤条件,每个条件之间都要加AND关键字。

OR操作符

用来表示检索任一给定条件的行

ADD和OR结合

ADD在求值的过程中优先级比OR更高。

WHERE vend_id = 'DLL01' OR vend_id  = 'BRS01' AND prod_price >= 10;

当SQL看到上述WHERE子句时,会优先处理AND操作符。它的理解为:由BRS01制造的价格为10美元以上的产品以及由DLL01制造的所有产品,而不管价格如何。

解决此问题的方法是使用圆括号对操作行为进行明确分配。

WHERE ( vend_id = 'DLL01' OR vend_id  = 'BRS01' ) AND prod_price >= 10;

此时SQL语句变为由DLL01或者BRS01制造的价格为10美元以上的产品。

5.2 IN操作符

用来指定条件范围,范围中的每个条件都可以进行匹配。IN 取一组由逗号分隔,括在圆括号里合法值。

WHERE vend_id IN ( 'DLL01',BRS01" )

此SQL语句检索DLL01和BRS01制造的所有产品。

由此看来,IN操作符完成了与OR相同的工作。

5.3 NOT操作符

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。 

下面的例子说明NOT的使用。为了列出除10021003之外的所有供应商制造的产品,可编写如下的代码: 

SELECT prod_name, prod_price
FROM Products
WHERE vend_id NOT IN ( 1002,1003)
ORDER BY prod_name;

为什么使用NOT?对于简单的WHERE子句,使用NOT确实没有什么优势。但在更复杂的子句中, NOT是非常有用的。例如,在与IN操作符联合使用时, NOT使找出与条件列表不匹配的行非常简单。 

 

 

posted @ 2018-12-20 16:47  小林子奋斗的点滴  阅读(114)  评论(0编辑  收藏  举报