SQL必知必会 第五课 笔记——高级数据过滤

这一课讲授如何 组合WHERE子句以建立功能更强、更高级的搜索条件。我们还将学习如何使用 NOT和IN操作符
5.1 组合WHERE子句
SQL允许给出多个WHERE子句。这些子句有两种使用方式:以AND子句或OR子句的方式使用。
AND操作符:可以增加多个过滤条件,每个条件间都要使用AND关键字
OR操作符:事实上,许多DBMS在OR WHERE子句的第一个条件得到满足的情况下,就不再计算第
                   二个条件了;
5.1.3 求值顺序
如果要选择由供应商DLL01或BRS01制造的且价格在10美元及以上的所有产品,不能单纯的:
SELECT prod_name, prod_price
FROM Products WHERE vend_id = 'DLL01' OR vend_id = ‘BRS01’
AND prod_price >= 10;
因为:SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。
所以应作如下处理:
SELECT prod_name, prod_price
FROM Products WHERE ( vend_id = 'DLL01' OR vend_id = ‘BRS01’ )
AND prod_price >= 10;
加括号后,首先过滤圆括号内的OR条件。
结论: 任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。

IN操作符:符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆
                 括号中的合法值。例如:
SELECT prod_name, prod_price
FROM Products WHERE vend_id IN ( 'DLL01', 'BRS01' )
ORDER BY prod_name;
(这里,IN操作符完成了与OR相同的功能:
  WHERE vend_id IN ( 'DLL01', 'BRS01' )==WHERE vend_id = 'DLL01' OR vend_id = 'BRS01')
NOT操作符:有且只有一个功能,那就是否定其后所跟的任何条件。
eg.为了列出除DLL01之外的所有供应商制造的产品,
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;


猜你喜欢

转载自blog.csdn.net/zjhysj/article/details/80502287