SQL必知必会 第5课 高级数据过滤
5.1 组合 WHERE 子句
为了进行更强的过滤控制,SQL允许给出多个 WHERE
子句。有两个使用方式,以 AND
子句或 OR
子句的方式使用。
AND 操作符
AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
SELECT prod_id, prod_price, prod_name
FROM products
WHERE vend_id = 'DLL01' AND prod_price <= 4;
OR 操作符
OR操作符指示DBMS检索匹配任一条件的行。许多DBMS在OR WHERE子句的第一个条件得到满足的情况下就不再计算第二个条件了,相应的行就被检索出来。
SELECT prod_id, prod_price, prod_name
FROM products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
求值顺序
如果遇到这样的语句:
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price >= 10;
结果如下:
返回的行中,有4行的prod_price其实是小于10的,所以这个求值的顺序是
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;
结果就仅这一行:
IN 操作符
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。
SELECT prod_name, prod_price, vend_id
FROM products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;
IN 操作符完成了 OR 相同的功能。
NOT 操作符
NOT操作符否定其后所跟的任何条件。
SELECT prod_name
FROM products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;
还没有评论,来说两句吧...