SELECT-FROM-WHERE語句、單表查詢、多表查詢、 ...
資料庫複習⑥
2016年6月18日
18:16
Main SQL 增刪改查
1.SQL 核心內容
DDL(Data Definition Language)數據定義語言
Query Language 數據查詢語句
DML(Data Manipulation language)數據操縱語言
DCL(DataControl language)數據控制語言
2.Queries 查詢
Single-relation queries 單表查詢
Multi-relation queries 多表查詢
Subqueries 子查詢
Grouping and Aggregation 分組和聚集
3.Select-From-Where Statements
語句格式:
SELECT [ ALL | DISTINCT ] <目標列表達式> [ ,<目標列表達式> ]…
FROM <表名或視圖名> [ ,<表名或視圖名> ]…
[ WHERE <條件表達式> ]
[ GROUP BY <列名1> [ HAVING <條件表達式> ] ]
[ ORDER BY <列名2> [ASC|DESC]]
解釋:(1)上面中括弧中的內容為選擇內容,可以有也可以沒有,註意前面有一個逗號"," ;
(2)WHERE語句裡面不能有集函數,同時WHERE語句可以省略;
(3)GROUP BY 語句用來進行分組,後面的HAVING 語句可以包括集函數,用來進行判斷;
(4)ORDER BY語句用來進行排序,排序操作實際上是在查詢結束之後進行的,預設為ASC 遞增排序,也可以選擇DESC為遞減排序;
(5)SQL查詢語句對字母大小寫不敏感,因此Select 和SELECT均可以被識別,不過建議使用大寫;
(6)GROUP BY語句應該在WHERE語句之後,其實GROUP BY語句應該在查詢語句的最後面,由於ORDER BY語句不屬於查詢語句了,因此可以放在ORDER BY 之前;
(7)儘管SELECT語句放在查詢語句的最前面但是其執行為最後的,也就是在GROUP BY語句之後,因此在GROUP BY語句內不能使用SELECT 語句裡面的別名;
(8)SELECT 語句中的ALL 與DISTINCT對應的是:查詢結果保留重覆、查詢結果不包括重覆;
(9)SELECT 語句是用來選擇屬性列,不過可以使用* 操作符可以選擇出表中的所有屬性列。
3.Single-Relation Queries 單表查詢
單表查詢相對於多表查詢屬於最基本的查詢操作。
可以在SELECT語句中選擇結果表的屬性列以及使用別名甚至使用集函數、由於表只有一個因此在FROM語句中只要寫上表名即可、在WHERE語句中可以使用AND關鍵字來進行多項判斷和篩選、在GROUP BY語句中可以選擇某一個屬性列進行分組、在ORDER BY語句進行排序選擇。
舉例說明:
Range comparison:between
使用謂詞: BETWEEN…AND…大於等於並且小於等於
NOT BETWEEN …AND…
Set operator: in
使用謂詞 IN <值表>, NOT IN <值表>
Patterns 字元串匹配問題
使用關鍵字Like
% = “any string”; _ = “any character.”
4.三種邏輯值 TRUE = 1 , FALSE = 0 , UNKNOWN = 1/2
AND = MIN ; OR = MAX ; NOT(x) = 1-x
NULL 空值比較特殊,需要特別對待
5.Aggregation 集函數
SUM求和函數、AVG求平均值函數、COUNT計數函數、MIN最小值函數、MAX最大值函數、COUNT(*)元組個數
6.Grouping 分組
舉例:
7.HAVING 字句
8.Multi-Relation Queries 多表查詢
9.Subqueries 子查詢
子查詢返回一個結果表Subqueries that return one Tuple
通常該返回表只有一個屬性列Usually, the tuple has one component
如果不止一個屬性列則會產生運行時錯誤A run-time error occurs if there is no tuple or more than one tuple
子查詢中不可以使用ORDER BY
帶有IN的子查詢:迴圈元組,當該元組的值在返回表中時輸出到結果表中
帶有EXISTS謂詞的子查詢
舉例:
10.ANY and ALL Operator