SQL__SELECT
SELECT
一、主要的子句語法格式
SELECT <列>
FROM <表或檢視>
[WHERE <條件表示式>]
[GROUP BY <分組表示式>]
[HAVING <分組條件表示式>]
[ORDER BY <排序表示式>[ASC|DESC]]
FROM子句,指定表或檢視
WHERE子句,指定查詢條件
GROUP BY子句,指定分組表示式
HAVING子句,指定分組表示式
ORDER子句,指定排序表示式和順序
二、選擇列、行
SELECT [ALL|DISTINCT]<列名列表>
列名列表的主要格式為
1)* /*選擇當前表或檢視的所有列*/
2){<表名>|<檢視>}.* /*選擇指定的表或檢視的所有列*/
3){<列名>|<表示式>} [[AS]<列別名>] /*選擇指定的列*/
4)<列標題>=<列名錶達式> /*選擇指定的列並更改列標題*/
關鍵字DISTINCT的含義是對結果集中的重複行只選擇一個,保證行的唯一性,與DISTINCT相反,當使用關鍵字ALL時,將保留結果集的所有行,預設值為ALL。
SELECT DISTINCT <列名>[,<列名>,..]
三、WHERE子句
WHERE<條件表示式>
條件表示式為查詢條件
1)表示式比較
<表示式1> op <表示式2>
op:=、<、<=、>、>=、<>(不等於)、!=(不等於)
當兩個表示式均不為空值(NULL)時,比較運算返回邏輯值TRUE或FALSE,當兩個表示式值中有一個為空值或都為空值時,比較運算將返回UNKNOWN
2)模式匹配
<字串1>[NOT] LIKE <字串2>[ESCAPE'<轉義字元>']
萬用字元:
"%" 匹配任意多個字元
"_" 匹配單個字元
3)比較範圍
BETWEEN關鍵字
<表示式>[NOT] BETWEEN <表示式1> AND <表示式2>
當不使用NOT時,若表示式的值在表示式1與表示式2之間(包括這兩個值),則返回TRUE,否則返回FALSE;使用NOT時,返回值剛好相反
IN關鍵字
<表示式> IN (<表示式>[,..])
使用IN關鍵字可以指定一個值表,值表中列出所有可能的值,當表示式與值表中的任意一個匹配時返回TRUE,否則返回FALSE
4)空值比較
當需要判定一個表示式的值是否為空值時,使用IS NULL關鍵字
<表示式> IS [NOT] NULL
5)子查詢
IN子查詢:用於進行一個給定值是否在子查詢結果集中的判定。當表示式與子查詢的結果表中的某個值相等時,IN謂詞返回TRUE,否則返回FALSE,若使用了NOT則返回的值剛好相反。
<表示式>[NOT] IN (<子查詢>)
比較子查詢:它是IN子查詢的擴充套件,它使表示式的值與子查詢的結果進行運算
<表示式>{<|<=|=|>|>=|<>|!=} {ALL|SOME|ANY}(<子查詢>)
其中ALL、SOME、ANY關鍵字說明對比較運算的限制,ALL指定表示式要與子查詢結果集中的每個值都要進行比較,當表示式與每個值都滿足比較的關係時,才返回TRUE,否則返回FALSE。SOME或ANY指定表示式只要與子查詢結果集中的某個值滿足比較關係時,就返回TRUE,否則返回FALSE。
EXISTS子查詢:EXISTS謂詞用於測試子查詢的結果是否為空表,若子查詢的結果集不為空,則EXISTS返回TRUE,否則返回FALSE。NOT EXISTS與此相反
[NOT] EXISTS(<子查詢>)
四、GROUP BY子句
GROUP BY子句用於對錶或檢視中的資料按欄位分組
GROUP BY [ALL]<分組表示式>[,...]
分組表示式通常包含欄位名,指定ALL將顯示所有組,使用GROUP BY子句後,SELECT中的列表只能包含在GROUP BY中指出的列或在統計函式中指定列。
五、HAVING子句
使用GROUP BY子句和統計函式後,還可以使用HAVING子句對分組資料做進一步的篩選。
HAVING <條件表示式>
六、ORDER BY子句
ORDER BY {<排序表示式>[ASC|DESC]}[,...]
ASC表示升序排列,DESC表示降序排列,系統預設值為ASC。