一些基礎常見的 SQL 語法。
查詢#
要在資料表內查詢資料筆,則需要用到「SELECT」語法:
1SELECT `查詢欄位1`,`查詢欄位2...` FROM `資料表名稱` WHERE 查詢條件;
而查詢的欄位也可以填入「*」來表示查詢「全部欄位」:
1SELECT * FROM `資料表名稱 WHERE `查詢條件`;
至於條件… 各種寫法,常見的寫法為 比對資料值相符與否。
範例 - 比對數字#
利用上一篇文章「」中所說的語法,陸續寫入幾筆資料後,目前的資料表內容為:
| id | phone | name | age |
|---|---|---|---|
| 1 | 0123456789 | 新之助 | 5 |
| 2 | NULL | Anonymous | 19 |
| 3 | NULL | 向日葵 | 0 |
| 4 | 0111222333 | 美冴 | 29 |
| 5 | 0444555666 | 廣志 | 35 |
輸入查詢語法:
1SELECT `id`, `name`, `age` FROM `資料表名稱` WHERE `age` > 10;
Database Server 返回以下結果:
| name | age |
|---|---|
| Anonymous | 19 |
| 美冴 | 29 |
| 廣志 | 35 |
因為 WHERE 後方所寫的查詢條件為「age」的值須大於「10」,
因此 age 小於等於 10 的資料筆將不顯示。
大於使用「>」;小於使用「<」;等於使用「=」;不等於使用「!=」或「<>」;大於等於使用「>=」;小於等於使用「<=」;
ps. 若不指定查詢條件,則表示查詢全部:
1SELECT `id`, `name`, `age` FROM `資料表名稱`;
Database Server 返回以下結果:
| id | name | age |
|---|---|---|
| 1 | 新之助 | 5 |
| 2 | Anonymous | 19 |
| 3 | 向日葵 | 0 |
| 4 | 美冴 | 29 |
| 5 | 廣志 | 35 |
範例 - 比對字串#
輸入查詢語法:
1SELECT `id`, `name` FROM `資料表名稱` WHERE `name` = "新之助";
Database Server 返回以下結果:
| id | name |
|---|---|
| 1 | 新之助 |
不等於的字串查詢:
1SELECT `id`, `name` FROM `資料表名稱` WHERE `name` != "Anonymous";
Database Server 返回以下結果:
| id | name |
|---|---|
| 1 | 新之助 |
| 3 | 向日葵 |
| 4 | 美冴 |
| 5 | 廣志 |
範例 - 模糊比對#
當有時候我們不確定目標欄位的值時,我們可以用部份特徵來比對。
要模糊查詢則是使用「LIKE」語法:
1SELECT * FROM `資料表名稱` WHERE `phone` LIKE "01%";
Database Server 返回以下結果:
| id | phone | name | age |
|---|---|---|---|
| 1 | 0123456789 | 新之助 | 5 |
| 4 | 0111222333 | 美冴 | 29 |
百分號「%」表示任意字元比對 0 次或 0 次以上。
該語法的意思是,查詢 phone 的值為 01 開頭 的資料筆。
所以假設「蘋果%」可以配對「蘋果」、「蘋果汁」、「蘋果派不好吃」,但不能配對「青蘋果」,因為「青蘋果」開頭並非是「蘋果」,若要配對它,則可以寫成「%蘋果%」。
如果輸入以下語法:
1SELECT * FROM `資料表名稱` WHERE `age` LIKE "_9";
Database Server 返回以下結果:
| id | phone | name | age |
|---|---|---|---|
| 2 | NULL | Anonymous | 19 |
| 4 | 0111222333 | 美冴 | 29 |
底線「_」表示任意字元比對 1 次。
該語法表示,查詢 age 欄位「第二字為 9」的結果。
所以「_9」可以配對「39」、「59」但不能配對「22」、「9」,當然也不能配對「193」,如果要配對「193」則須寫做「_9_」或者「_9%」。