第5课 高级数据过滤

Posted zhangsonghui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第5课 高级数据过滤相关的知识,希望对你有一定的参考价值。

第5课 高级数据过滤

5.1 组合WHERE子句

5.1.1 AND操作符

要通过不止一个列进行过滤,可以使用AND操作符给WHERE子句附加条件。

SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = ‘DLL01‘ AND prod_price <= 4;

此SQL语句检索由供应商DLL01制造且价格小于等于4美元的所有产品的名称和价格。

AND
用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。

这个例子只包含一个AND子句,因此最多有两个过滤条件。可以增加多个过滤条件,每个条件间都要使用AND关键字。

5.1.2 OR操作符

OR操作符与AND操作符正好相反,它指示DBMS检索匹配任一条件的行。事实上,许多DBMS在OR WHERE子句的第一个条件得到满足的情况下,就不再计算第二个条件了(在第一个条件满足时,不管第二个条件是否满足,相应的行都将被检索出来)。

SELECT prod_name, prod_price
FROM Products
WHERE vend_id = ‘DLL01‘ OR vend_id = ‘BRS01’;

OR
WHERE子句中使用的关键字,用来表示检索匹配任一给定条件的行。

5.1.3 求值顺序

WHERE子句可以包含任意数目的AND和OR操作符。允许两者结合以进行复杂、高级的过滤。

SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。

SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = ‘DLL01‘ OR vend_id = ‘BRS01’)
AND prod_price >= 10;

提示:在WHERE子句中使用圆括号
任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认求值顺序,即使它确实如你希望的那样。使用圆括号没有什么坏处,它能消除歧义。

5.2 IN操作符

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

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ( ‘DLL01‘, ‘BRS01‘ )
ORDER BY prod_name;

你可能会猜测IN操作符完成了与OR相同的功能,恭喜你猜对了!下面的SQL语句完成与上面的例子相同的工作:

SELECT prod_name, prod_price
FROM Products
WHERE vend_id = ‘DLL01‘ OR vend_id = ‘BRS01‘
ORDER BY prod_name;

IN
WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。

5.3 NOT操作符

NOT
WHERE子句中用来否定其后条件的关键字。

为了列出除DLL01之外的所有供应商制造的产品,可编写如下的代码:

SELECT prod_name
FROM Products
WHERE NOT vend_id = ‘DLL01‘
ORDER BY prod_name;

5.4 小结

这一课讲授如何用AND和OR操作符组合成WHERE子句,还讲授了如何明确地管理求值顺序,如何使用IN和NOT操作符。

以上是关于第5课 高级数据过滤的主要内容,如果未能解决你的问题,请参考以下文章

第0课 - Makefile引言

Java学习系列第3课--Java 高级教程

JavaScript笔试题(js高级代码片段)

第7课 - 变量的高级主题(下)

Python和R数据挖掘分析技术高级公开课在上海举行

高级数据过滤(like)