《起 航 之SQL技能全掌握》上


wKiom1mpE-vyZV5-AABK9SPvNKE351.png-wh_50

目        錄


第一部分:SELECT 查詢篇


一. SELECT 基礎查詢

1.1. SELECT 簡介

1.2. SQL99中 SELECT 的基本語法

1.2.1. 語法介紹

1.2.1.1. 完整的 SQL 語句

1.2.1.2. ALL、DISTINCT、UNIQUE 的區別

1.2.1.3. 表和列的別名

1.2.1.4. 雙引號的表名和列名

1.2.1.5. 取 TOP-N 的方法

1.2.1.6. ORDER BY 字句

1.2.1.6.1. ORDER BY 時可以使用列名、列別名、列位置表示 

1.2.1.6.2. 錯誤的 ORDER BY 語句

1.2.1.6.3. 特殊的 ORDER BY 語句(DBMS_RANDOM隨機函數) 

1.2.1.6.4. ORDER BY 時 NULLS FIRST | NULLS LAST 

1.2.1.7. GROUP BY 字句

1.2.1.7.1. SELECT 中出現的非多行函數的所有列,必須出現在 GROUP BY 字句中 

1.2.1.7.2. GROUP BY 字句中出現的所有列,可以出現在 SELECT 字句中  

1.2.1.7.3. GROUP BY 中不能出現列的別名  

1.2.1.7.4. WHERE 和 HAVING 的區別 

1.2.1.8. SQL 的執行順序

1.2.1.9. ORDER BY、GROUP BY 和 DISTINCT 

1.2.1.10. *(星號)通配符

1.2.1.11. FOR UPDATE 字句

1.2.2. ORACLE 中 SELECT 的完整語法

1.2.2.1. WITH 子句  

1.2.2.2. FLASHBACK QUERIES(閃回查詢) 

1.2.2.3. 系統表 DUAL 

1.2.2.4. HINT 提示 

1.2.2.5. CONNECT BY(遞歸查詢) 

1.2.2.6. 分層查詢 

1.2.2.7. PIVOT 與 UNPIVOT  


二. 子查詢

2.1. 查詢與子查詢

2.2. 子查詢分類

2.2.1. Correlated Sub-Query(相關子查詢) 

2.2.2. Uncorrelated Sub-Query(非相關子查詢)

2.2.3. SELECT 子句中的子查詢

2.2.4. FROM 子句中的子查詢(也稱爲內聯視圖)

2.2.5. WHERE 子句中的子查詢(也稱爲嵌套子查詢)

2.2.5.1. 單行子查詢 

2.2.5.2. 多行子查詢 

2.2.5.3. 多列子查詢

2.2.5.4. HAVING 中的子查詢 

2.2.6. 子查詢中使用 >、<、<>、=或組合運算符的注意事項

2.2.7. 子查詢中使用 >、<、<>、= 與 ALL、SOME、ANY 組合時,或子查詢中單獨使用 ALL、SOME、ANY 時不受限制

2.2.8. IN 和 EXISTS 

2.2.8.1. IN 任何一個,相當與 JOIN 的作用 

2.2.8.2. EXISTS 的用法

2.2.8.3. IN 不會對 NULLS 進行處理

2.2.9. DDL 語句使用子查詢

2.2.10. DML 語句使用子查詢

2.2.10.1. INSERT 語句使用子查詢

2.2.10.2. UPDATE 語句使用子查詢

2.2.10.3. DELETE 語句使用子查詢

2.2.11. 主查詢和子查詢相互引用的問題

2.2.11.1. 子查詢可以引用主查詢的字段

2.2.11.2. 主查詢不能引用子查詢的字段

2.2.12. TOP-N 中的子查詢需要排序

2.3. 子查詢的注意事項

2.4. 補充案例

2.4.1. 子查詢那點事

2.4.2. 子查詢引用主查詢字段報錯的案例 


三. SET(集合)語句

3.1. 集合語句簡介

3.2. 集合語句的優先級和返回結果

3.2.1. 復活查詢中SELECT 使用字符數據的返回類型

3.2.2. 復活查詢中SELECT 使用數字數據的返回類型

3.3. 集合運算符的限制

3.4. 集合 SQL 實例

3.4.1. 字符數據的返回類型

3.4.2. 數字數據的返回類型

3.4.3. UNION ALL 返回重複值

3.4.4. UNION 返回不重複值

3.4.5. 集合不能使用在大數據類型上(UNION ALL 除外)

3.4.6. 集合中表達式的排序

3.4.7. NULL 值的集合操作

3.4.8. NULL 與 NOT NULL 的集合

3.5. 補充案例

3.5.1. UNION ALL 優化案例

3.5.2. 優化大法之合併優化法

3.5.3. 使用減法優化的案例


四. JOIN(連接)

4.1. JOIN 簡介

4.2. JOIN 分類

4.2.1. JOIN 圖形說明

4.2.2. INNON JOIN(內連接)

4.2.2.1. INNON JOIN 基本語法

4.2.2.2. INNON JOIN 實例

4.2.3. OUTER JOIN(外連接)

4.2.3.1. LEFT OUTER JOIN 語法

4.2.3.1. LEFT OUTER JOIN 實例

4.2.3.3. RIGHT OUTER JOIN 語法

4.2.3.4. RIGHT OUTER JOIN 實例

4.2.3.5. FULL OUTER JOIN 語法

4.2.3.6. FULL OUTER JOIN 實例

4.2.4. OUTER JOIN 中 ON 和 WHERE 的區別

4.2.4.1. LEFT JOIN 中 ON 和 WHERE 的區別

4.2.4.2. RIGHT JOIN 中 ON 和 WHERE 的區別

4.2.5. OUTER JOIN 時 ORACLE 語法的限制

4.2.6. OUTER JOIN 中的左表和右表

4.2.7. OUTER JOIN 中 LEFT 多表的問題

4.2.8. Antjoins(反連接)

4.2.8.1. 關聯謂詞 IS NULL 的問題

4.2.9. Semijoins(半連接) 

4.2.9.1. Semijoins 或 Antjoins 與 OR 運算符

4.2.10. Selfjoins 自連接

4.2.11. Partitioned outer joins(分區外連接) 

4.2.12. Cartesian joins(笛卡爾積連接)

4.2.13. Natural joins(自然連接)

4.2.14. Cross(Outer)apply joins

4.2.14.1. Cross apply joins

4.2.14.2. Outer apply joins

4.2.15. ON、USING、WHERE 的關係

4.3. 補充案例

4.3.1. 使用分區外連接優化的案例

4.3.2. 一個有意思的 SQL 案例


五. 層次化查詢

5.1. 層次化的原理和語法

5.1.1. 層次化簡介

5.1.2. 關於 PRIOR

5.1.3. START WITH

5.1.4. LEVEL 僞列

5.1.5. 節點和分枝的裁剪

5.1.6. SIBLINGS 排序

5.1.7. Connect_by_root 僞列

5.1.8. 分層查詢的處理流程

5.1.9. 層次結構的形成步驟

5.2. 層次結構的實例

5.2.1. Connect by 遞歸子句

5.2.2. Connect by 的複雜語句

5.2.3. Connect by 導致的循環

5.2.4. Level 僞列實例

5.2.5. Start with 子句實例

5.2.6. Connect_by_isleaf 僞列實例

5.2.7. Connect_by_root 僞列實例

5.2.8. Sys_connect_by_path 僞列實例

5.2.9. Siblings 分層排序

5.2.10. Prior 的位置決定層次的關係

5.3. 補充案例

5.3.1. 小話遞歸

5.3.2. TREE 的原理和實例說明

5.3.3. 求旅客的旅行軌跡


六. WITH 子句

6.1. WITH 子句的原理和語法

6.1.1. WITH 子句簡介

6.1.2. WITH 子句語法

6.2. WITH 子句的實例

6.2.1. 定義一個別名的 WITH 子句

6.2.2. 定義多個別名的 WITH 子句

6.2.3. 複雜的 WITH 子句

6.2.3.1. WITH 子句指定列的別名

6.2.3.2. DEPTH FIRST BY 深度優先

6.2.3.3. BREADTH FIRST BY 廣度優先

6.2.3.4. CYCLE SET 循環

6.2.4. 用 WITH 子句實現遞歸查詢

6.2.5. WITH 子句中引用 WITH 的別名

6.2.6. Materialize 強制生成臨時表

6.2.7. WITH 子句的總結

6.3. 補充案例

6.3.1. 一個有意思的 SQL 案例

6.3.2. SQL 優化之陰溝翻船

6.3.3. 用 WITH 簡化 SQL 的案例


七. 分析函數

7.1. 分析函數簡介和語法

7.1.1. 分析函數簡介

7.1.2. 分析函數語法

7.1.3. 分析函數分類

7.2. 分析函數的實例

7.2.1. 等級函數(Ranking),rank、dense_rank、row_number等函數

7.2.1.1. Rank作爲聚合函數

7.2.1.2. Rank作爲分析函數

7.2.1.3. Dense_rank作爲聚合函數

7.2.1.4. Dense_rank作爲分析函數

7.2.1.5. Row_number作爲分析函數

7.2.2. 開窗函數(Windowing),sum、max、min、avg、count等函數

7.2.2.1. Sum函數

7.2.2.2. Max |Min函數

7.2.2.3. Avg |Count函數

7.2.3. 製表函數(Reporting),sum、max、min、avg、count等函數

7.2.3.1. 製表函數語法

7.2.3.2. 製表函數案例

7.2.3.3. 開窗函數與製表函數的區別

7.2.4. TOP-N、BOTTOM-N、FIRST、LAST、NTILE 函數

7.2.4.1. First |Last函數

7.2.4.2. First_value|Last_value函數

7.2.4.3. Top-n |Bottom-n函數

7.2.5. LAG | LEAD 函數

7.2.6. LISTAGG 函數

7.2.6.1. LISTAGG作爲聚合函數

7.2.6.2. LISTAGG作爲分析函數

7.3. 補充案例

7.3.1. 分析函數小案例

7.3.2. 一個例子,掌握分析函數的用法

7.3.3. Interval的分析函數



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章