WHERE 查詢子句 (SQL WHERE Clause)
我們可以進一步在 SELECT 查詢語句使用 WHERE 關鍵字搭配運算子來取出 "符合條件" 的紀錄值。
WHERE 語法 (SQL WHERE Syntax)
SELECT table_column1, table_column2...
FROM table_name
WHERE column_name operator value;
WHERE 子句用法 (Example)
假設我們想從下面的 customers 資料表中查詢 "王二" 的資料:
C_Id | Name | City | Address | Phone |
---|---|---|---|---|
1 | 張一 | 台北市 | XX路100號 | 02-12345678 |
2 | 王二 | 新竹縣 | YY路200號 | 03-12345678 |
3 | 李三 | 高雄縣 | ZZ路300號 | 07-12345678 |
4 | 陳四 | 台北市 | AA路400號 | 02-87654321 |
我們可以下 "取出表中姓名欄位值是王二" 如此條件的 SELECT 敘述句:
SELECT * FROM customers WHERE Name = '王二';
查詢的結果如下:
C_Id | Name | City | Address | Phone |
---|---|---|---|---|
2 | 王二 | 新竹縣 | YY路200號 | 03-12345678 |
查詢條件中的 "字串值" 需要用單引號 ''
包住,否則會出現錯誤;另一方面,對於數值型別則不可以加上引號,否則也會出現錯誤。被單引號圍住的字元即表示其資料型別為字串,但有些資料庫也接受用雙引號。
多個查詢條件式
你可以使用 AND
或 OR
運算子同時下達多個條件:
- AND 運算子表示其左右兩條件皆需符合
- OR 運算子表示其左右兩條件至少需符合一個
SELECT table_column1, table_column2...
FROM table_name
WHERE column_name1 operator value1
AND column_name2 operator value2
[AND|OR]...;
舉個例子,我們想在下面這個 customers 資料表中查詢住在台北市而且薪水大於 5 萬的顧客姓名及連絡電話:
C_Id | Name | City | Address | Phone | Salary |
---|---|---|---|---|---|
1 | 張一 | 台北市 | XX路100號 | 02-12345678 | 25000 |
2 | 王二 | 新竹縣 | YY路200號 | 03-12345678 | 30000 |
3 | 李三 | 高雄縣 | ZZ路300號 | 07-12345678 | 30000 |
4 | 陳四 | 台北市 | AA路400號 | 02-87654321 | 50000 |
可以這樣查詢:
SELECT Name, Phone FROM customers
WHERE City = '台北市' AND Salary >= 50000;
查詢的結果如下:
Name | Phone |
---|---|
陳四 | 02-87654321 |
利用圓括號 ()
可以來執行更複雜的查詢條件,圓括號內圍住的的條件式會優先判斷。例如:
WHERE 條件一 AND (條件二 OR 條件三)
此 SQL 陳述式會優先對條件二與條件三做 OR 邏輯運算,所得結果再接著和條件一做 AND 邏輯運算。