SQL語法全面接觸第三節
Select fieldlist
FROM table
Where selectcriteria
GROUP BY groupfieldlist
HAVING groupcriteria
fieldlist
顯示被查詢的欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結合)
table
欲查詢資料的表格名稱。
selectcriteria
選取標準。
groupfieldlist
分組記錄的欄位名稱,到多10個欄位。而這些欄位的順序決定最高到最低的分組階層。
groupcriteria
決定什麼樣的分組記錄要被顯示。
HAVING跟Where 的用法相當類似,不同之處在於HAVING必須用於GROUP之後的分組資料上。
例如:
Select 分類編,Sum(庫存數量)
FROM 產品表格
GROUP BY 分類編號
HAVING Sum(庫存數量)>100 AND 產品名稱 LIKE "*紙";
GROUP BY 條件子句
依據指定的欄位,將具有相同數值的記錄合併成一條。
Select fieldlist
FROM table
Where criteria
GROUP BY groupfieldlist
fieldlist
欲讀取的欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP合併使用)
table
被查詢的表格名稱。
groupfieldlist
分組記錄的欄位名稱,到多10個欄位,而這些欄位的順序決定最高到最低的分組層次。
例如:
Select 姓名,Count(姓名)AS 職員姓名
FROM 職員表格
Where 部門名稱="業務部"
GROUP BY 姓名
FROM 條件子句
指定表格名稱或是查詢,其中包含列在Select語句的欄位資料。
Select fieldlist
FROM tableexpression[IN externaldatabase]
fieldlist
表格中的欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結合)
tableexpression
表格名稱,或多個表格的算式。
externaldatabase
若該表格參考到外部的資料庫時,將其完整的路徑名稱記下。
例如:
從職員表格下,查詢出所有姓名欄位的資料(只有姓名欄位被查詢,其他則不顯示)。
Select 姓名 FROM 職員表格;
Where 條件子句
<指定查詢的條件與限制。
Select fieldlist
FROM tableexpression
Where criteria
fieldlist
欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結合)
tableexpression
表格名稱,或多個表格的算式。
criteria
查詢的結果,必須依照這一限制標準。
例如:
要查詢出職員表格中,所有姓氏是李的資料,可以用下面的語句。
Select 姓名
FROM 職員表格
Where 姓氏="李";
BETWEEN...AND 運算子
決定某一人數值是否介於特定的範圍之內,此運算子只可以用在SQL的語句中。
expr[Not]BETWEEN value1 AND value2
expr
指定要加以計算的欄位與表示式的組合。
value1,value2
所指明的數值範圍。
例如:
若是要從職員表格查詢出所有年齡介於25-30歲的員工,可以利用下面的程式來做。
Select 姓名,年齡 BETWEEN 25 AND 30
FROM 職員表格;
LIKE 運算元
用來將一字串與另一特定字串樣式(pattern)比較,並將符合該字串樣式的記錄過濾出來。
expression LIKE "pattern"
expression
使用在Where條件子句,SQL表示式。
pattern
用以比較的字串樣式。
例如:
若是你要查詢出所有以“李”為首的姓氏,可以利用下面的式子。
Like "李*"
LIKE運算元的多種範例:
1、多個字元:
(1)"a*a"
可篩選:"aa","aBa","aBBBa",不能篩選:"aBC"
(2)"*ab*"
可篩選:"abc","AABB","Xab",不能篩選:"aZb","bac"
2、特殊字元:
"a“*”a"
可篩選:"a*a",不能篩選:"aaa"
3、單一字元:
"a?a"
可篩選:"aaa","a3a","aBa",不能篩選:"aBBBa"
4、單一數字:
"a#a"
可篩選:"a0a","a1a","a2a",不能篩選:"aaa","a10a"
5、字元範圍:
"“a-z”"
可篩選:"f","p","j",不能篩選:"2","&"
6、指定字元以外部範圍:
"“!a-z”"
7、指定非數字:
"“!0-9”"
可篩選:"A","a","&","~",不能篩選:"0","1","9"
8、組合式結構:
"a“!b-m”#"
可篩選:"An9","az0","a99",不能篩選:"abc","aj0"
SQL數字函式
1、AVG:算數平均數
AVG(expr)
expr
欄位名稱或表示式。
例如:
若要計算職員身高超過165釐米的職員平均身高,可以利用下面的SQL語句來完成。
Select Avg(身高)
AS 平均身高
FROM 職員表格 Where 身高>165;
2、COUNT:計算記錄條數
COUNT(expr)
expr
欄位名稱或表示式。
例如:
若是要統計出業務部門的職員人數,並查詢出職員的姓名,可以利用下面的程式。
Select Count(姓名) AS 職員姓名
FROM 職員表格
Where 部門名稱="業務部";
3、FIRST與LAST:返回某欄位的第一條資料與最後一條資料。
FIRST(expr)
LAST(expr)
expr
欄位名稱或表示式。
例如:
若是要找出貨品數量欄位的第一條資料與貨品價格欄位的最後一條資料時,可以利用下面的查詢方式
Select FIRST(貨品數量),LAST(貨品價格)
FROM 訂單表格
4、MAX,與MIN:返回某欄位的最大值與最小值。
用法同FIRST與LAST。
5、SUM:返回某特定欄位或是運算的總和數值。
SUM(expr)
expr
欄位名稱或表示式。
例如:
要計算出貨品總價,可使用下面的程式。
Select
Sum(單位價格*貨品數量)
AS 貨品總價 FROM 訂單表格
多層SQL查詢
顧名思義,多層的SQL查詢的便在於:“在一個SQL語句中可以包含另一個SQL查詢語句,形成內部巢狀的查詢型別。”
comparison[ANY|ALL|SOME](sqlstatement)
expression[NOT]IN (sqlstatement)
[NOT]EXISTS(sqlstatement)
comparison
將表示式與內層查詢的結果比較的操作。
expression
對內層查詢的結果作搜尋的表示式。
sqlstatement
為Select語句構成的SQL查詢,必須用()將該語句括起來。
例如:
我們先從訂單表格當中,查詢出所有的單位,再將產品表格中的單位與的一一對比,查詢出所有高於訂單表格的單位價格的記錄。
ELECT * FROM 產品表格
Where 單位價格>ANY (Select 單位價格 FROM 訂單表格 Where 折扣>=.25);