我們在使用數據庫提取數據的時候一般都不會整行都需要,往往是提取符合條件的子集數據。因此有必要增加一個搜索條件來精確查找我們需要的數據。WHERE將會幫助我們搜索數據.
#我們先來看一下由產品名稱和價格組成的數據
SELECT prod_name, prod_price
FROM products
如果我現在想要買名爲Fuses的產品,我想快速知道它的價格,我們可以
SELECT prod_name, prod_price
FROM products
WHERE prod_name = 'Fuses';
如果我想購買的價位在10~35之間的,哪些商品符合我的條件呢?
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 10 AND 35;
格式:BETWEEN 開始值 AND 結束值;
開始值和結束值都包含在內,是閉區間!
當然,還有一個特別的要求,比如說我作爲老闆,想看看哪個產品的價格忘了填寫,即NULL值,這是我們可以這樣寫
SELECT prod_name, prod_price
FROM products
WHERE prod_price IS NULL;
由於所給的表中的價格都填好了,因此就不給出圖片了。
可以使用的操作符有:
操作符 | 說明 |
---|---|
= | 等於 |
!= | 不等於 |
> | 大於 |
.>= | 大於等於 |
< | 小於 |
<= | 小於等於 |
BETWEEN | 範圍取值 |
注:上面>=的點要去掉,此處加點是因爲博客MARKDOWN編輯的問題
使用AND,OR,IN,NOT來進行多條件過濾
上面我們用WHERE都是過濾單個條件,如果我們的條件有多個的話就用AND,OR,IN,NOT來過濾
AND
我們先看下由供應商,產品名,產品價格組成的表
現在我只想看供應商爲1003的產品,並且價格不要超過30
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id = 1003 AND prod_price <=30;
OR 和 IN
如果我想要看供應商爲1002和1003的產品
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;
或者
SELECT vend_id, prod_name, prod_price
FROM prodcuts
WHERE vend_id IN (1002, 1003);
NOT
如果我不想看供應商是1002和1003的產品
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003);
注意:vend_id = 1002 OR vend_id = 1003 AND prod_price<=30;
以上語句意爲:想要供應商爲1003的且價格不超過30的產品,或者供應商爲1002的所有產品。
操作符之間也是有次序的,AND 比 OR高。不過不用記,只要加括號就可以了,要養成加括號的習慣。