高级数据过滤
组合 WHERE 子句
AND 操作符
SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;
备注:可以增加多个过滤条件,每个条件间都要使用 AND 关键字。
OR 操作符
OR 操作符与 AND 操作符正好相反,它指示 DBMS 检索匹配任一条件的行
许多 DBMS在 OR WHERE 子句的第一个条件得到满足的情况下,就不再计算第二个条件了
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = ‘BRS01’;
求值顺序
WHERE 子句可以包含任意数目的 AND 和 OR 操作符。允许两者结合以进行复杂、高级的过滤。
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
AND prod_price >= 10;
# 优先处理AND 所以这条WHERE语句的意思是:vend_id = 'DLL01' 或者 vend_id = 'BRS01' AND prod_price >= 10 的数据
SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
AND prod_price >= 10;
#括号内的优先处理,所以这段WHERE的意思是 vend_id = 'DLL01' OR vend_id = 'BRS01 并且 prod_price >= 10 的数据
IN 操作符
IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。 IN 取一组由逗号分隔、括在圆括号中的合法值。
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ( 'DLL01', 'BRS01' )
ORDER BY prod_name;
备注: IN 操作符后跟由逗号分隔的合法值,这些值必须括在圆括号中。
上述代码可以用OR关键字代替
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
ORDER BY prod_name;
NOT 操作符
WHERE 子句中的 NOT 操作符有且只有一个功能,否定其后所跟的任何条件。
NOT 关键字可以用在要过滤的列前,而不仅是在其后。
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;