第五章 高级数据过滤
时间:2010-12-01 来源:simpleisbest
为了进行更强的过滤控制,SQL语句允许给出多个WHERE子句。可以通过两种方式组合WHERE语句
1、AND子句的方式 2、OR子句的方式
1.AND操作符
AND用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
SELECT prod_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4;--检索由供应商DLL01制造且价格小于等于4元的产品
2.OR操作符
OR用在WHERE子句中的关键字,用来表示检索匹配任一个给定条件的行。
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';--检索由任一指定供应商制造的所有产品。
3.计算次序
WHERE可包含任意数目的AND和OR操作符。允许两者结合以进行复杂和高级的过滤。混合使用AND和OR操作符需要注意一个操作符优先级的问题。
SQL在处理OR操作符前,优先处理AND操作符。因此需要使用圆括号明确分组相应的操作符。
例: SELECT prod_name, prod_price FROM Products WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10;
4.IN操作符 IN WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的又逗号分隔的清单,全部括在圆括号中。
SELECT prod_name, prod_price FROM Products WHERE vend_id IN ('DLL01', 'BRS01') ORDER BY prod_name;
等价于
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' ORDER BY prod_name;
使用IN操作符的好处
NOT WHERE子句中用来否定后跟条件的关键字。NOT可以放在过滤的列前。
SELECT prod_name FROM Products WHERE NOT vend_id = 'DLL01' ORDER BY prod_name;
等效于
SELECT prod_name FROM Products WHERE vend_id <> 'DLL01' ORDER BY prod_name;
1、AND子句的方式 2、OR子句的方式
1.AND操作符
AND用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
SELECT prod_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4;--检索由供应商DLL01制造且价格小于等于4元的产品
2.OR操作符
OR用在WHERE子句中的关键字,用来表示检索匹配任一个给定条件的行。
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';--检索由任一指定供应商制造的所有产品。
3.计算次序
WHERE可包含任意数目的AND和OR操作符。允许两者结合以进行复杂和高级的过滤。混合使用AND和OR操作符需要注意一个操作符优先级的问题。
SQL在处理OR操作符前,优先处理AND操作符。因此需要使用圆括号明确分组相应的操作符。
例: SELECT prod_name, prod_price FROM Products WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10;
4.IN操作符 IN WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的又逗号分隔的清单,全部括在圆括号中。
SELECT prod_name, prod_price FROM Products WHERE vend_id IN ('DLL01', 'BRS01') ORDER BY prod_name;
等价于
SELECT prod_name, prod_price FROM Products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' ORDER BY prod_name;
使用IN操作符的好处
- 在使用长的合法选项清单中,IN操作符的语法更清楚且更直观。
- 在使用IN时,计算的次序更容易管理
- IN操作符一般比OR操作符清单执行更快
- IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。
NOT WHERE子句中用来否定后跟条件的关键字。NOT可以放在过滤的列前。
SELECT prod_name FROM Products WHERE NOT vend_id = 'DLL01' ORDER BY prod_name;
等效于
SELECT prod_name FROM Products WHERE vend_id <> 'DLL01' ORDER BY prod_name;
相关阅读 更多 +