更一般性地解釋查詢語法,可以理解做以下句型
select 輸出欄位 from 表格 where 子句;前一節中,我們已經看到兩種 where 子句:
首先,要提醒讀者,當欄位的型態是字元類或數值類的時候, 都可以用 = 和 !=。但是數值類的「值」不需要用引號括起來。例如
select * from ZIP where zip = 100;
對於數值類的欄位,除了 = 和 != 之外,還可以用 > < >= <= 作為欄位篩選的條件。例如
select * from ZIP where zip <= 100;或者
select * from ZIP where zip > 980;
對於字元類的欄位,可以做部分比對。其語法是 like 或 not like, 而在比對字串中,用百分號 % 代表類似 UNIX 中 * 號的 萬用字串 角色: 一個 % 代表零個、一個或任意多個任意字元。例如
select * from ZIP where zone like '嘉義%';則列出「嘉義市」或「嘉義縣」的資料。而
select * from ZIP where area like '中%';得到
萬用字串可以放在字串前面,例如+-----+------+--------+--------+ | id | zip | zone | area | +-----+------+--------+--------+ | 1 | 100 | 臺北市 | 中正區 | | 3 | 104 | 臺北市 | 中山區 | | 15 | 202 | 基隆市 | 中正區 | | 16 | 203 | 基隆市 | 中山區 | | 34 | 235 | 臺北縣 | 中和 | | 75 | 320 | 桃園縣 | 中壢 | | 106 | 400 | 臺中市 | 中區 | | 174 | 606 | 嘉義縣 | 中埔 | | 208 | 700 | 臺南市 | 中區 | +-----+------+--------+--------+
select * from ZIP where area like '%和';得到
萬用字串其實可以放在字串前面和後面,例如+----+------+--------+------+ | id | zip | zone | area | +----+------+--------+------+ | 33 | 234 | 臺北縣 | 永和 | | 34 | 235 | 臺北縣 | 中和 | +----+------+--------+------+
select * from ZIP where area like '%和%';得到
但是萬用字串不能放在兩個字串的中間,例如+-----+------+--------+------+ | id | zip | zone | area | +-----+------+--------+------+ | 33 | 234 | 臺北縣 | 永和 | | 34 | 235 | 臺北縣 | 中和 | | 122 | 424 | 臺中縣 | 和平 | | 142 | 508 | 彰化縣 | 和美 | +-----+------+--------+------+
select * from ZIP where area like '臺%市';查不到結果。
反之,not like 配合萬用字串就可以做排除性的查詢,例如
select * from ZIP where area not like '臺北%';就是查詢除了臺北縣和臺北市以外的資料。
前述的 = != > < >= <= like 和 not like 都是基本比對語句, 這些語句可以用 and 或 or 來組成更複雜的 where 子句。例如
select zip,zone,area from ZIP where zone like '臺中%' and area = '東勢';就特定查到臺中縣的東勢地區。而
select zip,zone,area from ZIP where zip >= 350 and zip <= 359;就查到郵遞區號介於 350 和 359 之間的資料。還有
select * from ZIP where zone like '%海%' or area like '%海%';則把行政區域或者地名中含有「海」字的資料都印出來了,也就是
+-----+------+----------+------+ | id | zip | zone | area | +-----+------+----------+------+ | 330 | 957 | 台東縣 | 海端 | | 362 | 817 | 南海諸島 | 東沙 | | 363 | 819 | 南海諸島 | 南沙 | +-----+------+----------+------+
這一節所說的 where 子句,完全可以應用在 刪除/修改資料 裡面所提的 DELETE 和 UPDATE 兩個指令。
習題