8.3 數(shù)據(jù)操作語言
8.3.1 數(shù)據(jù)查詢
1、查詢語句的基本結(jié)構(gòu):
SELECT <目標列名序列> FROM <數(shù)據(jù)源> {WHERE , GROUP BY , HAVING , ORGER BY}
(1) 比較:SELECT A,B,C FROM TABLE_A WHERE A>30;
(2) 確定范圍:WHERE A (NOT)BETWEEN 初始值 AND 結(jié)束值;
(3) 確定集合:WHERE A (NOT)IN (‘A1','A2’…‘A3’);
(4) 字符串匹配:WHERE A LIKE <匹配符>;
(5) 四種<匹配符>;
(A)_(下劃線):匹配任意一個字符;
(B)%(百分號):匹配0個或多個字符;
(C)[ ]:匹配[ ]中的任意一個字符;
(D)[^]:不匹配[ ]中的任意一個字符。
(6) 涉及空值的查詢:WHERE A IS (NOT)NULL;
(7) 多重條件查詢:AND(條件必須全部為TRUE,結(jié)果才為TRUE),OR(任一條件為TRUE,結(jié)果即為TRUE);
(8) 對查詢結(jié)果進行排序:ORDER BY A [ASC(順序) | DESC(逆序)];
(9) 列別名:列名 AS 新列名;
(10) 消除取值相同的行:SELECT DISTINCT A FROM TABLE_A;
(11) 使用聚合函數(shù)統(tǒng)計數(shù)據(jù):SQL的聚合函數(shù):
(A) COUNT(*):統(tǒng)計表中元組的個數(shù);
(B) COUNT([ALL (全部)| DISTINCT(無重復(fù))] <列名>):統(tǒng)計本列非空列值的個數(shù);
(C) SUM(列名):計算列值的總和(必須是數(shù)值型列);
(D) AVG(列名):計算列值平均值(必須是數(shù)值型列);
(E) MAX(列名):求列最大值;
(F) MIN(列名):求列最小值。
(12) 對查詢結(jié)果進行分組計算。
(A) 使用GROUP BY;
(B) 使用HAVING子句;
3、 連接查詢
(1) 內(nèi)連接:FROM 表1 JOIN 表2 ON (連接條件);
(2) 自連接:一種特殊的內(nèi)連接,相互連接的表在物理上是同一張表,但通過為表取別名的方法,在邏輯上分為兩張表;
(3) 外連接:輸出不滿足連接條件的元組,格式:
FROM 表1 LEFT|RIGHT OUTER JOIN 表2 ON (連接條件)。
4、 查詢語句的擴展
(1) 合并多個結(jié)果集:SELECT 語句1 UNION SELECT 語句2……,使用UNION的兩個基本規(guī)則:
(A) 所有查詢語句中列的個數(shù)和列的順序必須相同;
(B) 所有查詢語句中對應(yīng)的數(shù)據(jù)類型必須兼容。
(2) 將查詢結(jié)果保存到新表中:SELECT 查詢列表序列 INTO 新表名 FROM 數(shù)據(jù)源;
(3) 使用TOP限制結(jié)果集行數(shù):TOP n [percent] [WITH TIES];
(A) TOP n :表示取查詢結(jié)果的前n行;
(B) TOP n percent:表示取查詢結(jié)果的前n%行;
(C) WITH TIES:表示包括并列的結(jié)果。
(4) 使用CASE表達式:
(A) 簡單CASE表達式:
(B) 搜索CASE表達式。
5、子查詢:如果一個SELECT語句是嵌套在一個SELECT、INSERT、UPDATE或DELETE語句中,則稱為子查詢或內(nèi)層查詢,包含子查詢的語句稱為主查詢或外層查詢。
(1) 使用子查詢進行基于集合的測試,形式:WHERE 表達式 [NOT] IN (子查詢);
(2) 使用子查詢進行比較測試,形式:WHERE 表達式 比較運算符 (子查詢);
(3) 使用子查詢進行存在性測試,形式:WHERE [NOT] EXISTS (子查詢)。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |