有時候,我們只想拿取符合某個條件的記錄。要達到這個目的,我們可以在 SELECT 語句中使用 WHERE 短句。
在 SELECT 語句中使用 WHERE 短句的語法如下︰
SELECT <字段列表> FROM <表的名稱> WHERE <檢索條件>
只有符合 <檢索條件> 的記錄才會被拿取。
SQL 提供了一系列運算符和關鍵字去表達 <檢索條件>。在這�塈畯怜Q論以下各項︰
SQL 提供的比較運算符和 Pascal 的一樣︰
| 運算符 | = | > | < | >= | <= | <> |
| 意義 | 相等 | 大於 | 小於 | 大於或相等 | 小於或相等 | 不等於 |
WHERE 短句使用比較運算符的方法如下︰
WHERE <算式> <比較運算符> <算式>
一個 <算式> 可以是一個常數、一個字段名稱或由算術運算符(例如 +、-、*、 /)及括號連接成以上各樣的任何組合。
例如︰
| 列出所有在中國語文及文化科及格(>= 50)的同學的班號、姓名及中國語文及文化科的分數。 | |||||||||||||||||||||||||||||||||||||||
| SELECT class_num, name, clc FROM s6a WHERE clc >= 50 | |||||||||||||||||||||||||||||||||||||||
輸出︰
|
| 列出所有平均分不及格(< 50)的同學的班號及姓名。 | ||||||
| SELECT class_num, name FROM s6a WHERE (clc + ue + pm + phy + cs) / 5 < 50 | ||||||
輸出︰
|
如 Pascal 一樣,我們可以使用比較運算符去比較字符算式。字符是跟據英文字母順序排列;不過,大小楷有沒有分別和使用的系統有關。對於 Microsoft Visual FoxPro 及 Microsoft Access 來說,大小楷是沒有分別的。
例如︰
| 列出所有學生編號是「93」或以上開頭的記錄︰ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SELECT * FROM s6a WHERE stud_id >= '93' | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
輸出︰
|
運算符 AND 及 OR 的使用方法和其他的程序語言所見的一樣︰
| 列出所有中國語言及文化和英語運用兩科都及格的同學的班號、姓名及中國語文及文化科及運用英語的分數︰ | ||||||||||||||||||||||||||||||||||||||||||||||||
| SELECT class_num, name, clc, ue FROM s6a WHERE clc >= 50 AND ue >= 50 | ||||||||||||||||||||||||||||||||||||||||||||||||
輸出︰
|
| 列出所有在中國語文及文化科或英語運用不及格(其中一科或兩科都不及格均可)的同學的班號、姓名及中國語文及文化科及英語運用科的分數︰ | ||||||||||||||||||||
| SELECT class_num, name, clc, ue FROM s6a WHERE clc < 50 OR ue < 50 | ||||||||||||||||||||
輸出︰
|
WHERE 短句中可以這樣使用 BETWEEN … AND︰
WHERE <算式> BETWEEN <值1> AND <值2>
這 WHERE 短句表示檢索條件是 <算式> 在 <值1> 和 <值2> 之間(包括首尾二項)。因此,這 WHERE 短句和以下的相同︰
WHERE <算式> >= <值1> AND <算式> <= <值2>
例如︰
| 列出所有在電腦科獲得 50 至 59 分(包括首尾二值)的同學的班號、姓名及電腦科的分數。 | |||||||||||||||||||||
| SELECT class_num, name, cs FROM s6a WHERE cs BETWEEN 50 AND 59 | |||||||||||||||||||||
輸出︰
|
注意︰如果檢索條件要求的範圍不包括首尾二項,我們一定要使用運算符 > 及 <。
關鍵字 IN 讓使用者選擇一個列表的值中任何一個。例如︰
| 列出所有在電腦科獲得 50、60、70、80 或 90 分的同學的班號、姓名及電腦科的分數。 | |||||||||||||||||||||
| SELECT class_num, name, cs FROM s6a WHERE cs IN (50, 60, 70, 80, 90) | |||||||||||||||||||||
輸出︰
以上的 SQL 語句和以下等同︰
|