第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课 高级数据过滤的主要内容,如果未能解决你的问题,请参考以下文章