除非最終檢索它們並利用它們來做點事情,否則將記錄放入數據庫沒什麼好處。這就是 SELECT 語句的用途,即幫助取出數據。SELECT 大概是 SQL 語言中最常用的語句,而且怎樣使用它也最為講究;用它來選擇記錄可能相當復雜,可能會涉及許多表中列之間的比較。本節介紹Select語句關於查詢的最基本功能。
SELECT 語句的語法如下:
SELECT selection_list 選擇哪些列
FROM table_list 從何處選擇行
WHERE primary_constraint 行必須滿足什麼條件
GROUP BY grouping_columns 怎樣對結果分組
HAVING secondary_constraint 行必須滿足的第二條件
ORDER BY sorting_columns 怎樣對結果排序
LIMIT count 結果限定
注意:所有使用的關鍵詞必須精確地以上面的順序給出。例如,一個HAVING子句必須跟在GROUP BY子句之後和ORDER BY子句之前。
除了詞“SELECT”和說明希望檢索什麼的 column_list 部分外,語法中的每樣東西都是可選的。有的數據庫還需要 FROM 子句。MySQL 有所不同,它允許對表達式求值而不引用任何表。
普通查詢
SELECT最簡單的形式是從一張表中檢索每樣東西:
mysql> SELECT * FROM pet;
其結果為:
+----------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+--------+---------+------+------------+------------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1990-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
+----------+--------+---------+------+------------+------------+
查詢特定行:
你能從你的表中只選擇特定的行。例如,如果你想要驗證你對Bowser的出生日期所做的改變,像這樣精選Bowser的記錄:
mysql> SELECT * FROM pet WHERE name = "Bowser";
其結果為:
+--------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+-------+---------+------+------------+------------+
| Bowser | Diane | dog | m | 1990-08-31 | 1995-07-29 |
+--------+-------+---------+------+------------+------------+
你可以對照前一個例子來驗證。
查詢特定列
如果你不想要看到你的表的整個行,就命名你感興趣的列,用逗號分開。例如,如果你想要知道你的動物什麼時候出生的,精選name和birth列:
mysql> SELECT name, birth FROM pet where owner="Gwen";
其結果為:
+----------+------------+
| name | birth |
+----------+------------+
| Claws | 1994-03-17 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
+----------+------------+
進行表達式計算
前面的多數查詢通過從表中檢索值已經產生了輸出結果。MySQL 還允許作為一個公式的結果來計算輸出列的值。表達式可以簡單也可以復雜。下面的查詢求一個簡單表達式的值常量)以及一個涉及幾個算術運算符和兩個函數調用的較復雜的表達式的值。例如,計算Browser生活的天數:
mysql> SELECT death-birth FROM pet WHERE name="Bowser";
其結果是:
+-------------+
| death-birth |
+-------------+
| 49898 |
+-------------+
由於MySQL允許對表達式求值而不引用任何表。所以也可以這樣使用:
mysql>select (2+3*4.5)/2.5;
其結果為:
+---------------+
| (2+3*4.5)/2.5 |
+---------------+
| 6.200 |
+---------------+