1. 程式人生 > 其它 >SQL學習:三

SQL學習:三

高階資料過濾 AND OR

SQL 允許給出多個WHERE子句。這些子句有兩種使用方式,即以AND子句或OR子句的方式使用。

1、AND操作符

用來指示檢索滿足所有給定條件的行。

SELECT prod_id,prod_price,prod_name FROM Products WHERE vend_id='DLL01' AND prod_price<=4;

2、OR操作符

用來指示檢索匹配任意條件的行。

SELECT prod_id,prod_price,prod_name,vend_id FROM Products WHERE vend_id='DLL01' OR vend_id='BRS01';

求值順序

由於AND在求值過程中優先順序高,操作符被錯誤地組合了。此問題的解決辦法是 使用圓括號對操作符進行明確的分組。圓括號具有比AND或OR操作符更高的優先順序。請看下面示例區別:

SELECT prod_name,prod_price,vend_id FROM Products WHERE vend_id='DLL01' OR vend_id='BRS01' AND prod_price>=10;
SELECT prod_name,prod_price,vend_id FROM Products WHERE (vend_id='DLL01' OR vend_id='BRS01') AND prod_price>=10;

3、IN操作符

IN 操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配。IN取一組由逗號分隔、括在圓括號中的合法值。可以理解為OR。

SELECT prod_name,prod_price,vend_id FROM Products WHERE vend_id IN('DLL01','BRS01') ORDER BY prod_name;

IN操作符的優點:
比一組OR操作符執行得更快。
可以包含其他SELECT 語句,能夠更動態地建立WHERE子句。

4、NOT操作符

NOT操作符有且只有一個功能,那就是否定其後所跟的任何條件。因為NOT從不單獨使用(它總是與其他操作符一起使用),所以它的語法與其他操作符有所不同。NOT關鍵字可以用在過濾的列前而不僅是在其後。

SELECT prod_name FROM Products WHERE NOT vend_id='DLL01' ORDER BY prod_name;