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 |
SQL 查詢...
SELECT Name, Phone FROM table_name WHERE City = '台北市' AND Salary >= 50000;
查詢的結果如下:
| Name | Phone |
|---|---|
| 陳四 | 02-87654321 |
利用圓括號「()」可以來執行更複雜的查詢條件,圓括號內圍住的的條件式會優先判斷。例如: WHERE 條件一 AND (條件二 OR 條件三) 此SQL陳述式會優先對條件二與條件三作OR邏輯運算,所得結果再接著和條件一作AND邏輯運算。