數據庫查詢操作詳解
SELECT…FROM
爲方便講解,我們在數據庫中創建名爲Store_Information的如下數據表。
Store_Information
Store_Name |
Sales |
Date |
Los Angeles |
$1500 |
Jan-10-2000 |
San Diego |
$250 |
Jan-11-2000 |
Los Angeles |
$300 |
Jan-12-2000 |
Boston |
$700 |
Jan-12-2000 |
SQL語言中用於數據庫查詢的最簡單的命令就是SELECT…FROM,語法格式爲:
SELECT "column_name" FROM "table_name"
例如,如果我們希望查詢Store_Information數據表中所有的商店名稱時,可以使用如下命令:
SELECT store_name FROM Store_Information
查詢結果顯示爲:
Store_Name
Los Angeles
San Diego
Los Angeles
Boston
如果用戶希望一次查詢多個字段,可以將所要查詢的字段名稱依次加入SELECT關鍵字之後,中間用“,”隔開即可。
DISTINCT
SELECT關鍵字支持用戶查詢數據表中指定字段的所有數據,但是這樣有時就會不可避免的出現重複信息。如果用戶希望只查詢那些具有不同記錄值的信息的話,可以使用SQL語言的DISTINCT關鍵字。語法格式如下:
SELECT DISTINCT "column_name"
FROM "table_name"
例如,我們可以使用以下命令查詢Store_Information數據表具有不同記錄值的所有記錄。
SELECT DISTINCT Store_Name FROM Store_Information
查詢結果如下:
Store_Name
Los Angeles
San Diego
Boston
WHERE
除了選擇具有不同記錄值的記錄之外,有時我們可能還會需要根據某些條件對數據庫中的數據進行查詢。例如,我們 可能需要查詢Store_Information數據表中銷售額超過1000美圓的商店。爲此,我們可以使用SQL語言的WHERE關鍵字設定查詢條件。 語法格式如下:
SELECT "column_name"
FROM "table_name"
WHERE "condition"
由此,我們可以使用如下命令查詢銷售額超過1000美圓的商店信息:
SELECT store_name FROM Store_Information WHERE Sales > 1000
查詢結果顯示爲:
store_name
Los Angeles
運算函數
現在,我們已經瞭解到在使用SQL語言進行數據庫查詢操作時可以通過對數值的判斷設定靈活的查詢條件。爲了增 強對運算的支持能力,SQL提供了衆多實用的運算函數供廣大用戶使用。例如,我們可以直接在SQL命令中調用SUM或AVG這兩個分別用於計算總數和平均 數的函數。語法格式如下:
SELECT "function type"("column_name")
FROM "table_name"
如果我們希望查詢Store_Information數據表中所有商店的總銷售額的話,可以使用如下命令:
SELECT SUM(Sales) FROM Store_Information
查詢結果顯示爲:
SUM(Sales)
$2750
COUNT
除了SUM和AVG函數之外,COUNT函數是SQL語言中另一個較爲常用的運算函數。COUNT函數可以用來計算數據表中指定字段所包含的記錄數目。語法格式爲:
SELECT COUNT("column_name")
FROM "table_name"
例如,如果我們希望查詢Store_Information數據表中的有關商店的記錄條數時,可以使用如下命令:
SELECT COUNT(store_name)
FROM Store_Information
查詢結果顯示爲:
Count(store_name)
4
COUNT函數可以和DISTINCT關鍵字一起使用從而可以查詢數據表中指定字段中所有具有不同記錄值的記錄數目。例如,如果我們希望查詢Store_Information數據表中不同商店的數目時,可以使用如下命令:
SELECT COUNT(DISTINCT store_name)
FROM Store_Information
查詢結果顯示爲:
Count(DISTINCT store_name)
3
GROUP BY
下面我們來進一步看一下 SQL語言中的集合函數。上文中,我們曾使用SUM函數計算所有商店的銷售總額,如果我們希望計算每一家商店各自的總銷售額時該怎麼辦呢?要實現這一目的 我們需要做兩件事:首先,我們需要查詢商店名稱和銷售額兩個字段;然後,我們使用SQL語言的GROUP BY命令將銷售額按照不同的商店進行分組,從而計算出不同商店的銷售總額。GROUP BY命令的語法格式爲:
SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
我們可以使用如下命令實現上述查詢目的:
SELECT store_name, SUM(Sales)
FROM Store_Information
GROUP BY store_name
查詢結果顯示爲:
store_name SUM(Sales)
Los Angeles $1800
San Diego $250
Boston $700
小注:
GROUP BY關鍵字一般應用於同時查詢多個字段並對字段進行算術運算的SQL命令中。
HAVING
用戶在使用SQL語言的過程中可能希望解決的另一個問題就是對由sum或其它集合函數運算結果的輸出進行限制。例如,我們可能只希望看到Store_Information數據表中銷售總額超過1500美圓的商店的信息,這時我們就需要使用HAVING從句。語法格式爲:
SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
HAVING (arithematic function condition)
(GROUP BY從句可選)
由此,我們可以使用如下命令實現上述查詢目的:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
查詢結果顯示爲:
store_name SUM(Sales)
Los Angeles $1800
小注:
SQL語言中設定集合函數的查詢條件時使用HAVING從句而不是WHERE從句。通常情況下,HAVING從句被放置在SQL命令的結尾處。