第1章 SQL核心
1.1 SQL語言
1.2 資料庫的介面
1.3 SQL*Plus回顧
1.3.1 串連到資料庫
1.3.2 配置SQL*Plus環境
1.3.3 執行命令
1.4 5個核心的SQL語句
1.5 SELECT語句
1.5.1 FROM子句
1.5.2 WHERE子句
1.5.3 GROUP BY子句
1.5.4 HAVING子句
1.5.5 SELECT列表
1.5.6 ORDER BY子句
1.6 INSERT語句
1.6.1 單表插入
1.6.2 多表插入
1.7 UPDATE語句
1.8 DELETE語句
1.9 MERGE語句
1.10 小結
第2章 SQL執行
2.1 Oracle架構基礎
2.2 SGA共用池
2.3 庫快取
2.4 完全相同的語句
2.5 SGA緩衝區快取
2.6 查詢轉換
2.6.1 查詢塊
2.6.2 視圖合并
2.6.3 子查詢解嵌套
2.6.4 連接消除
2.6.5 排序消除
2.6.6 謂詞推進
2.6.7 使用物化視圖進行查詢重寫
2.7 確定執行計畫
2.8 執行計畫並取得資料行
2.9 SQL執行——總覽
2.10 小結
第3章 訪問和連接方法
3.1 全掃描存取方法
3.1.1 如何選擇全掃描操作
3.1.2 全掃描與捨棄
3.1.3 全掃描與多塊讀取
3.1.4 全掃描與高水位線
3.2 索引掃描存取方法
3.2.1 索引結構
3.2.2 索引掃描類型
3.2.3 索引唯一掃描
3.2.4 索引範圍掃描
3.2.5 索引全掃描
3.2.6 索引跳躍掃描
3.2.7 索引快速全掃描
3.3 連接方法
3.3.1 嵌套迴圈連接
3.3.2 排序—合并連接
3.3.3 散列連接
3.3.4 笛卡兒連接
3.3.5 外連接
3.4 小結
第4章 SQL是關於集合的
4.1 以面向集合的思維方式來思考
4.1.1 從面向過程轉變為基於集合的思維方式
4.1.2 面向過程與基於集合的思維方式:例子
4.2 集合運算
4.2.1 UNION和UNION ALL
4.2.2 MINUS
4.2.3 INTERSECT
4.3 集合與空值
4.3.1 空值與非直觀結果
4.3.2 空值與集合運算
4.3.3 空值與GROUP BY和ORDER BY
4.3.4 空值與彙總函式
4.4 小結
第5章 提出問題
5.1 問出好的問題
5.2 提問的目的
5.3 問題的種類
5.4 問題的問題
5.5 資料的問題
5.6 建立邏輯運算式
5.7 小結
第6章 SQL執行計畫
6.1 解釋計劃
6.1.1 使用解釋計劃
6.1.2 PLAN_TABLE
6.1.3 分解計劃
6.1.4 導致解釋計劃未達目的的原因
6.1.5 閱讀計劃
6.1.6 訪問和篩選謂語
6.1.7 使計劃便於閱讀
6.2 執行計畫
6.2.1 查看最近產生的SQL語句
6.2.2 查看相關執行計畫
6.2.3 收集執行計畫統計資訊
6.2.4 標識SQL語句以便以後取回計劃
6.2.5 深入理解DBMS_XPLAN
6.2.6 使用SQL監控報告
6.2.7 使用計劃資訊解決問題
6.3 小結
第7章 進階分組
7.1 基本的GROUP BY用法
7.2 HAVING子句
7.3 GROUP BY的“新”功能
7.4 GROUP BY的CUBE擴充
7.5 CUBE的實際應用
7.6 用GROUPING()函數排除空值
7.7 用GROUPING()擴充報告
7.8 用GROUPING_ID()擴充報告
7.9 GROUPING SETS與ROLLUP()
7.10 GROUP BY局限性
7.11 小結
第8章 分析函數
8.1 概覽
8.2 樣本資料
8.3 分析函數剖析
8.4 函數列表
8.5 彙總函式
8.5.1 跨越整個分區的彙總函式
8.5.2 細粒度視窗聲明
8.5.3 預設視窗聲明
8.6 lead和lag
8.6.1 文法和排序
8.6.2 例1:從前一行中返回一個值
8.6.3 理解資料行的位移
8.6.4 例2:從下一行中返回一個值
8.7 first_value和last_value
8.7.1 例子:使用first_value計算最大值
8.7.2 例子:使用last_value計算最小值
8.8 其他分析函數
8.8.1 nth_value
8.8.2 rank
8.8.3 dense_rank
8.8.4 row_number
8.8.5 ratio_to_report
8.8.6 percent_rank
8.8.7 percentile_cont
8.8.8 percentile_disc
8.8.9 NTILE
8.8.10 stddev
8.8.11 listagg
8.9 效能調優
8.9.1 執行計畫
8.9.2 謂詞
8.9.3 索引
8.10 進階話題
8.10.1 動態SQL
8.10.2 嵌套分析函數
8.10.3 並行
8.10.4 PGA大小
8.11 組織行為
8.12 小結
第9章 MODEL子句
9.1 試算表
9.2 使用MODEL子句實現跨行引用
9.2.1 樣本資料
9.2.2 剖析MODEL子句
9.2.3 規則
9.3 位置和符號引用
9.3.1 位置標記
9.3.2 符號標記
9.3.3 FOR迴圈
9.4 返回更新後的行
9.5 求解順序
9.5.1 行求解順序
9.5.2 規則求解順序
9.6 彙總
9.7 迭代
9.7.1 樣本
9.7.2 PRESENTV與空值
9.8 尋找表
9.9 空值
9.10 使用MODEL子句進行效能調優
9.10.1 執行計畫
9.10.2 謂詞推進
9.10.3 物化視圖
9.10.4 並行
9.10.5 MODEL子句執行中的分區
9.10.6 索引
9.11 子查詢因子化
9.12 小結
第10章 子查詢因子化
10.1 標準用法
10.2 用WITH定義PL/SQL函數
10.3 SQL最佳化
10.3.1 測試執行計畫
10.3.2 測試查詢改變的影響
10.3.3 尋找其他最佳化機會
10.3.4 將子查詢因子化應用到PL/SQL中
10.4 遞迴子查詢
10.4.1 CONNECT BY樣本
10.4.2 RSF樣本
10.4.3 RSF的限制條件
10.4.4 與CONNECT BY的不同點
10.5 複製CONNECT BY的功能
10.5.1 LEVEL偽列
10.5.2 SYS_CONNECT_BY_PATH函數
10.5.3 CONNECT_BY_ROOT運算子
10.5.4 CONNECT_BY_ISCYCLE偽列和NOCYCLE參數
10.5.5 CONNECT_BY_ISLEAF偽列
10.6 小結
第11章 半連接和反連接
11.1 半連接
11.2 半連接執行計畫
11.3 控制半連接執行計畫
11.3.1 使用提示控制半連接執行計畫
11.3.2 在執行個體級控制半連接執行計畫
11.4 半連接限制條件
11.5 半連接必要條件
11.6 反連接
11.7 反連接執行計畫
11.8 控制反連接執行計畫
11.8.1 使用提示控制反連接執行計畫
11.8.2 在執行個體級控制反連接執行計畫
11.9 反連接限制條件
11.10 反連接必要條件
11.11 小結
第12章 索引
12.1 理解索引
12.1.1 什麼時候使用索引
12.1.2 列的選擇
12.1.3 空值問題
12.2 索引結構類型
12.2.1 B-樹索引
12.2.2 位元影像索引
12.2.3 索引組織表
12.3 分區索引
12.3.1 局部索引
12.3.2 全域索引
12.3.3 散列分區與定界分割
12.4 與應用特點相匹配的解決方案
12.4.1 壓縮索引
12.4.2 基於函數的索引
12.4.3 反轉鍵索引
12.4.4 降序索引
12.5 管理問題的解決方案
12.5.1 不可見索引
12.5.2 虛擬索引
12.5.3 位元影像連接索引
12.6 小結
第13章 SELECT以外的內容
13.1 INSERT
13.1.1 直接路徑插入
13.1.2 多表插入
13.1.3 條件插入
13.1.4 DML錯誤記錄檔
13.2 UPDATE
13.2.1 CTAS與UPDATE的差別
13.2.2 INSERT APPEND與UPDATE的差別
13.3 DELETE
13.4 MERGE
13.4.1 文法和用法
13.4.2 效能比較
13.5 小結
第14章 交易處理
14.1 什麼是事務
14.2 事務的ACID屬性
14.3 交易隔離等級
14.4 多版本讀一致性
14.5 事務控制語句
14.5.1 Commit(提交)
14.5.2 Savepoint(儲存點)
14.5.3 Rollback(復原)
14.5.4 Set Transaction(設定事務)
14.5.5 Set Constraints(設定約束)
14.6 將運算分組為事務
14.7 訂單錄入模式
14.8 活動事務
14.9 使用儲存點
14.10 序列化事務
14.11 隔離事務
14.12 自治事務
14.13 小結
第15章 測試與品質保證
15.1 測試案例
15.2 測試方法
15.2.1 單元測試
15.2.2 迴歸測試
15.2.3 模式修改
15.2.4 重複單元測試
15.3 執行計畫比較
15.4 效能測量
15.4.1 在代碼中加入效能測量
15.4.2 效能測試
15.5 破壞性測試
15.6 使用效能測量進行系統檢修
15.7 小結
第16章 計劃穩定性
16.1 計劃不穩定性:理解這個問題
16.1.1 統計資訊的變化
16.1.2 運行環境的改變
16.1.3 SQL語句的改變
16.1.4 綁定變數窺視
16.1.5 自適應遊標共用
16.2 統計資訊反饋
16.3 識別執行計畫的不穩定性
16.3.1 抓取當前執行查詢的資料
16.3.2 查看語句的效能曆史
16.3.3 按照執行計畫彙總統計資訊
16.3.4 尋找執行計畫的統計方差
16.3.5 在一個時間點附近檢查偏差
16.4 小結
第17章 計劃控制
17.1 執行計畫控制:解決問題
17.1.1 調整查詢結構
17.1.2 適當使用常量
17.1.3 給最佳化器一些提示
17.2 執行計畫控制:不能直接存取代碼
17.2.1 選項1:改變統計資訊
17.2.2 選項2:改變資料庫參數
17.2.3 選項3:增加或移除訪問路徑
17.2.4 選項4:應用基於提示的執行計畫控制機制
17.2.5 大綱
17.2.6 SQL概要檔案
17.2.7 SQL執行計畫基準
17.2.8 SQL補丁
17.2.9 基於提示的計劃控制機理小結
17.3 小結
第18章 其他SQL結構
18.1 條件邏輯結構
18.1.1 DECODE
18.1.2 CASE
18.1.3 NVL、NVL2和COALESCE
18.1.4 NULLIF
18.2 PIVOT/UNPIVOT查詢
18.2.1 PIVOT
18.2.2 UNPIVOT
18.3 產生測試資料的SQL
18.3.1 想要得到什麼樣的資料
18.3.2 CONNECT BY
18.3.3 MODEL子句
18.3.4 遞迴WITH子句
18.3.5 資料產生小結
18.4 小結