2020年5月20日 星期三

基本SQL語法

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所指定Ú
Emp_Id
Emp_Name
Ext
880017
Alex
220
910069
Brain
223
920075
Carol
226
960192
Simon
225
970255
Jane
221

Row1
Row2
Row3
Row4
Row5
資料列WHERE所限定Ü

可將SELECTWHERE視為矩陣的二維座標系,由SELECT子句所選取的資料,就是SELECT(欄位)與WHERE(資料列)所涵蓋。

FROM指定資料來源員工資料表(Employees),
SELECT指定查詢資料表中員工編號(Emp_Id)、員工姓名(Emp_Name)及分機號碼(Ext)等三個欄位,
WHERE限定查詢資料列範圍為部門代碼(Dept_Id)為I200的部門員工資料。

透過SELECT簡易指令可以很方便地擷取出所需的資料,且大部分的資料庫均支援或儘可能遵循ANSI SQL所訂定的語法,大部分的SQL在局部修改後(如函數名稱)亦可應用於其他資料庫系統。
SELECT指令為整個SQL中最重要的指令,若能理解、體會SELECT語法的精要,則對SQL指令及其應用已經具有相當的程度。

沒有留言:

張貼留言