SQL__SELECT

Enjoy_process發表於2019-03-16

 

                                                       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。