6.MySQL必知必會之數據過濾-WHERE組合子句

數據過濾-WHERE組合子句

本章講授如何組合WHERE子句以創建功能更強的更高級的搜索條件。 咱們還將學習如何使用NOT和IN操做符。學習

1.組合WHERE子句

上一章介紹的WHERE子句在過濾數據時使用的都是單一條件過濾。事實上爲了數據的準確性咱們還可使用多個條件進行過濾,可使用AND子句或者OR子句的方式來完成。ui

📖 操做符(operator)spa

用來聯結或改變WHERE子句中的子句的關鍵字。也稱爲邏輯運算符。3d

1.1 AND操做符

下面的這個例子是使用AND操做符來給WHERE子句附加條件。code

輸入 :blog

SELECT  uid, week, minute 
FROM    products
WHERE  week = 1  AND  minute = 22

輸出: image產品

分析:此SQL語句檢索week爲1而且minute爲22數據。搜索

📖 AND 用在WHERE子句中的關鍵字,用來指示檢索知足全部給定的條件的行。語法

上述例子中使用了只包含一個關鍵字AND的語句,把兩個過濾條件組合在一塊兒。==還能夠添加多個過濾條件,每添加一條就要使用一個AND.==方法

1.2 OR操做符

OR操做符和AND操做符不一樣,他指示MSQL檢索匹配任一條件的行。 輸入:

SELECT  uid, week, minute 
FROM    products
WHERE  week = 1  OR  minute = 22

分析:檢索week爲1或者minute爲22的數據。知足一個條件便可。

1.3 計算次序

SQL在處理OR操做前優先處理AND操做符。 解決方法就是使用()

輸入:

SELECR prod_name,pro_price
FROM producets
WHERE wend_id = 1002 OR vand_id = 1003 AND prod_price >= 10;

改爲:

SELECR prod_name,pro_price
FROM producets
WHERE (wend_id = 1002 OR vand_id = 1003) AND prod_price >= 10;

分析:

這條SELECT 語句 與前條的惟一差異是,這條語句中,前兩個條件用圓括號括起來。由於圓括號具備較AND或OR操做符高的計算次序,DBMS首先過濾圓括號內的OR條件。

在WHERE子句中使用圓括號

任什麼時候候使用具備AND和OR操做符的WHERE語句,都應該使用過圓括號明確的分組操做操做符。不要過度依賴默認計算次序,即便它確實是你想要的東西也是如此

1.4 IN操做符

IN操做符用來指定條件範圍,範圍中的每一個條件均可以進行匹配。IN取合法值的由逗號分隔的清單,所有在圓括號中。

輸入:

SELECT prod_name , prod_price
 FROM products
 WHERE vend_id IN (1002,1003)
 ORDER BY prod_name

輸出:

image

分析:

此SELECT語句檢索供應商1002和1003製造的全部產品。IN操做符後跟又逗號分隔的合法值清單,整個清單必須擴在圓括號內。

⭐️ IN操做符和OR功能相同,但IN操做符比OR操做符執行更快

OR寫法:

SELECT prod_name , prod_price
 FROM products
 WHERE vend_id = 1002  OR vend_id =1003
 ORDER BY prod_name
IN操做符優勢:
  1. 在使用長的合法選項清單的時,IN操做符的語法更清楚且更直觀。

  2. 在使用 IN時,計算的次序更容易管理(由於使用的操做符更少)。

  3. IN 操做符通常比OR操做符清單執行更快。

  4. IN 的最大的優勢是能夠包含其餘SEKECT語句,使的可以更動態的創建 WHERE 語句。

1.5 NOT操做符

NOT操做符有且只有一個功能,那就是否認它以後所跟的任何條件。

📖 NOT WHERE子句中用來否認後跟條件的關鍵字。

使用:

列出除1002和1003以外的全部供應商製造的產品。

輸入:

SELECT prod_name , prod_price
FROM products
WHERE vend_id  NOT  IN  (1002,1003)
ORDER BY prod_name;

分析: 這裏的NOT 否認跟在它以後的條件,所以,MySQL不是匹配1002和1003 的vendi_id,而是匹配 1002和1003 以外供應商的vend_id.

✏️ MySQL 中的NOT

MySQL支持使用 NOT 對 IN 、 BETWEEN 和 EXISTS 子句取反,這與多數其餘DBMS容許使用NOT對各類條件取反有很大的差異。

小結

本章講授如何用AND和OR操做符組合成WHERE子句,並且還講授瞭如 何明確地管理計算的次序,如何使用IN和NOT操做符。

相關文章
相關標籤/搜索