Mysql必知必會Note-第六章&第七章 過濾資料
阿新 • • 發佈:2018-12-18
第六章 過濾資料
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操作符的優點:
- 使用長的合法清單時,IN操作符的語法更加清楚且更直觀;
- 計算次序容易管理;
- IN操作符比OR操作符執行清單更快;
- 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;