1. 程式人生 > >Mysql必知必會Note-第六章&第七章 過濾資料

Mysql必知必會Note-第六章&第七章 過濾資料

第六章 過濾資料

WHERE子句

WHERE子句用於指定檢索條件(搜尋條件),WHERE子句在FROM子句之後給出。

【例項】

SELECT prod_name, prod_price
FROM products
WHERE prod_price = 2.5;

該語句從products表中檢索兩個列,但不返回所有行,只返回prod_price=2.5的行。 資料也可以在應用層過濾,但是客戶機處理資料的工作會極大的影響應用的效能,並且需要伺服器通過網路傳送多餘資料,浪費了網路頻寬。 ps:ORDER BY子句位置在WHERE子句之後

WHERE子句操作符

操作符 說明
= 等於
<> 不等於
!= 不等於
< 小於
<= 小於等於
> 大於
>= 大於等於
BETWEEN AND 在指定兩個值之間

WHERE子句可以檢查空值,如下:

// 這條語句返回沒有價格的所有產品,即價格欄位為空
SELECT prod_name
FROM products
WHERE prod_price IS NULL;

第七章 資料過濾

利用AND,OR操作符組合WHERE子句

通過邏輯操作符AND和OR可以進行組合條件過濾,AND操作符表示檢索滿足所有給定條件的行,OR操作符檢索匹配任一條件的行。

【例項】

// 檢索由供應商1003製造且價格小於等於10美元的所有產品的id和價格
SELECT prod_id, prod_price FROM products WHERE vend_id = 1003 AND prod_price <= 10; // 檢索任一指定供應商製造的產品的名字和價格 SELECT prod_name, prod_price FROM poductd WHERE vend_id = 1002 OR vend_id = 1003;

計算次序

在使用AND和OR操作符進行組合過濾的過程中,要注意操作符的優先順序問題。AND在計算次序中優先順序更高,因此,我們推薦使用圓括號來進行分組,明確計算次序。

IN操作符

IN操作符用來指定條件的範圍,範圍內的每個條件都可以匹配,相當於OR操作符。IN的合法取值都包含在圓括號中,並通過逗號分隔。

【例項】

// 檢索供應商1002和1003製造的所有產品,並根據商品名排序
SELECT prod_name, prod_price
FROM products
WHERE vend_id IN (1002, 1003)
ORDER BY prod_name;

IN操作符的優點:

  1. 使用長的合法清單時,IN操作符的語法更加清楚且更直觀;
  2. 計算次序容易管理;
  3. IN操作符比OR操作符執行清單更快;
  4. IN最大的優點是可以包含其他SELECT語句,使得能夠動態的建立WHERE子句,例如:
    // 檢索table_a表中包含table_b表中id的所有資料
    SELECT * 
    FROM table_a
    WHERE id IN (SELECT id FROM table_b);
    

NOT操作符

NOT操作符用於否定它之後的條件。 NOT可對IN,BETWEEN和EXISTS子句取反。 【例項】

// 檢索1002,1003之外供應商製造的產品的名字和價格
SELECT prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003)
ORDER BY vend_id;