SELECT敍述句語法,將以此語法來介紹後續指令所使用一般語法架構。
SELECT [ALL| DISTINCT] <欄位名稱>
FROM <資料來源名稱>
[WHERE <搜尋條件>]
[GROPY BY <分群欄位名稱> [HAVING <彙總運算條件式>]]
[ORDER BY <排序欄位名稱> [ASC | DESC]]
|
首先說明,在一般資料庫語法定義中括號([])為選擇性語法,包含其中的為非必要的命令,而語法中『|』稱為管線(pipe)符號,代表或者(OR)即擇一。
#
|
子句
|
說明
|
1
|
SELECT [ALL| DISTINCT] <欄位名稱>
|
查詢結果欄位名稱 (決定呈現結果集之屬性)
(但如搭配DISTINCT關鍵字則將排除重覆資料列)
|
2
|
FROM <資料來源名稱>
|
資料來源名稱(通常為資料表)
(ORACLE為必要,MSSQL可忽略)
|
3
|
[WHERE <搜尋條件>]
|
資料篩選(限縮)條件 (決定呈現結果集之數量、筆數)
|
4
|
[GROPY
BY <分群欄位名稱>
[HAVING
<彙總運算條件式>]]
|
GROPY
BY決定資料分群方式
HAVING將分群彙總運算結果進行限縮(類似WHERE子句)
|
5
|
[ORDER BY <排序欄位名稱> [ASC | DESC]]
|
將查詢結果進行排序
|
以下將針對SELECT敍述句語法中各子句分別說明:
SELECT子句-指定查詢結果所使用的資料表的欄位名稱
SELECT子句可指定查詢結果所使用的資料表的欄位名稱,語法中可使用ALL代表取回所有符合SQL敍述句的所有資料為預設值,或可採用DISTINCT關鍵字以排除重覆資料列(Row)。
欄位選擇可區分成星號『*』代表選出所有欄位、指定特定欄位及運算式(Expression)等三種方式。
FROM子句-指定資料來源名稱
是用來指定資料來源名稱。雖FROM子句是置於SELECT子句後,但FROM子句是決定整個資料來源並限定其他子句的可用欄位,對ORACLE而言,FROM子句為必要結構,對MSSQL則為選擇性語法。
WHERE子句-指定搜尋條件
指定搜尋條件的部分,將符合搜尋條件的資料列傳回,當查詢整個資料來源資料時,則無需指定WHERE子句篩選條件,同樣將採用中括號([])表示。
ORDER
BY子句-可指定查詢結果的排序
ORDER
BY子句將依據指定的欄位(組)或運算式將查詢結果進行排序,可選擇是否指定排序方向,可指定ASC(昇幂)或DESC(降幂)兩種排序方向,ORDERY BY子句對SELECT語法為選擇性命令,而排序方向對ORDER BY也為選擇性命令,將以巢狀(nested)語法架構。
GROUP
BY子句可指定資料分群方式,決定傳回資料列所置放群組,並根據各群組進行資料彙總,可選擇性指定HAVING彙總運算條件式。
以下將查詢出部門代碼為I200該部門之員工資料為範例,SQL及結果如下。
SELECT Emp_Id, Emp_Name, Ext
FROM Employees
WHERE Dept_Id= 'I200'
|
Column1
|
Column2
|
Column3
|
欄位名稱(SELECT所指定Ú)
|
||||||||||||||||||
|
|||||||||||||||||||||
Row1
|
|||||||||||||||||||||
Row2
|
|||||||||||||||||||||
Row3
|
|||||||||||||||||||||
Row4
|
|||||||||||||||||||||
Row5
|
|||||||||||||||||||||
資料列(WHERE所限定Ü)
|
可將SELECT及WHERE視為矩陣的二維座標系,由SELECT子句所選取的資料,就是SELECT(欄位)與WHERE(資料列)所涵蓋。
由FROM指定資料來源員工資料表(Employees),
而SELECT指定查詢資料表中員工編號(Emp_Id)、員工姓名(Emp_Name)及分機號碼(Ext)等三個欄位,
由WHERE限定查詢資料列範圍為部門代碼(Dept_Id)為I200的部門員工資料。
透過SELECT簡易指令可以很方便地擷取出所需的資料,且大部分的資料庫均支援或儘可能遵循ANSI
SQL所訂定的語法,大部分的SQL在局部修改後(如函數名稱)亦可應用於其他資料庫系統。
SELECT指令為整個SQL中最重要的指令,若能理解、體會SELECT語法的精要,則對SQL指令及其應用已經具有相當的程度。
沒有留言:
張貼留言