OracleSQL高級編程

OracleSQL高級編程

1.1 1.2 1.3

出版信息

作者:Karen Morton(作者), Kerry Osborne Robyn Sands(作者), Riyaj Shamsudeen(作者), (作者), 朱浩波(譯者)
出版社: 人民郵電出版社; 第1版 (2011年11月1日)
叢書名: 圖靈程式設計叢書·資料庫系列
平裝: 502頁
正文語種: 簡體中文
開本: 16
ISBN: 9787115266149
條形碼: 9787115266149
商品尺寸: 23.2 x 18.4 x 2.8 cm
商品重量: 839 g

內容簡介

作者以精煉、風趣的語言揭開了Oracle SQL高級編程的神秘面紗。書中所涵蓋的內容涉及SQL核心、SQL執行、分析函式、聯結、測試與質量保證等,並提供大量實用性建議,且總結出方方面面的“技巧”幫助讀者在閱讀過程中快速消化所看內容。
《Oracle SQL高級編程》適合軟體研發專業人士閱讀,對軟體項目管理感興趣的社會各界人士也能從中獲益。

目錄

目 錄
第1章 SQL核心 1
1.1 SQL語言 1
1.2 資料庫的接口 2
1.3 SQL*Plus 回顧 3
1.3.1 連線到資料庫 3
1.3.2 配置SQL*Plus環境 4
1.3.3 執行命令 6
1.4 5 個核心的SQL語句 8
1.5 SELECT語句 8
1.5.1 FROM子句 9
1.5.2 WHERE子句 11
1.5.3 GROUP BY子句 11
1.5.4 HAVING子句 12
1.5.5 SELECT列表 12
1.5.6 ORDERBY子句 13
1.6 INSERT語句 14
1.6.1 單表插入 14
1.6.2 多表插入 15
1.7 UPDATE語句 17
1.8 DELETE語句 20
1.9 MERGE語句 22
1.10 小結 24
第2章 SQL執行 25
2.1 Oracle架構基礎 25
2.2 SGA-共享池 27
2.3 庫高速快取 28
2.4 完全相同的語句 29
2.5 SGA-緩衝區快取 32
2.6 查詢轉換 35
2.7 視圖合併 36
2.8 子查詢解嵌套 39
2.9 謂語前推 42
2.10 使用物化視圖進行查詢重寫 44
2.11 確定執行計畫 46
2.12 執行計畫並取得數據行 50
2.13 SQL執行——總覽 52
2.14 小結 53
第3章 訪問和聯結方法 55
3.1 全掃描訪問方法 55
3.1.1 如何選擇全掃描操作 56
3.1.2 全掃描與捨棄 59
3.1.3 全掃描與多塊讀取 60
3.1.4 全掃描與高水位線 60
3.2 索引掃描訪問方法 65
3.2.1 索引結構 66
3.2.2 索引掃描類型 68
3.2.3 索引唯一掃描 71
3.2.4 索引範圍掃描 72
3.2.5 索引全掃描 74
3.2.6 索引跳躍掃描 77
3.2.7 索引快速全掃描 79
3.3 聯結方法 80
3.3.1 嵌套循環聯結 81
3.3.2 排序-合併聯結 83
3.3.3 散列聯結 84
3.3.4 笛卡兒聯結 87
3.3.5 外聯結 88
3.4 小結 94
第4章 SQL是關於集合的 95
4.1 以面向集合的思維方式來思考 95
4.1.1 從面向過程轉變為基於集合的思維方式 96
4.1.2 面向過程vs.基於集合的思維方式:一個例子 100
4.2 集合運算 102
4.2.1 UNION和UNION ALL 103
4.2.2 MINUS 106
4.2.3 INTERSECT 107
4.3 集合與空值 108
4.3.1 空值與非直觀結果 108
4.3.2 集合運算中的空值行為 110
4.3.3 空值與GROUP BY和ORDER BY 112
4.3.4 空值與聚合函式 114
4.4 小結 114
第5章 關於問題 116
5.1 問出好的問題 116
5.2 提問的目的 117
5.3 問題的種類 117
5.4 關於問題的問題 119
5.5 關於數據的問題 121
5.6 建立邏輯表達式 126
5.7 小結 136
第6章 SQL執行計畫 137
6.1 解釋計畫 137
6.1.1 使用解釋計畫 137
6.1.2 理解解釋計畫可能達不到目的的方式 143
6.1.3 閱讀計畫 146
6.2 執行計畫 148
6.2.1 查看最近生成的SQL語句 149
6.2.2 查看相關執行計畫 149
6.2.3 收集執行計畫統計信息 151
6.2.4 標識SQL語句以便以後取回計畫 153
6.2.5 深入理解DBMS_XPLAN的細節 156
6.2.6 使用計畫信息來解決問題 161
6.3 小結 169
第7章 高級分組 170
7.1 基本的GROUP BY用法 171
7.2 HAVING子句 174
7.3 GROUP BY的“新”功能 175
7.4 GROUP BY的CUBE擴展 175
7.5 CUBE的實際套用 179
7.6 通過grouping()函式排除空值 185
7.7 用GROUPING()來擴展報告 186
7.8 使用GROUPING_ID()來擴展報告 187
7.9 GROUPING SETS與ROLLUP() 191
7.10 GROUP BY局限性 193
7.11 小結 196
第8章 分析函式 197
8.1 示例數據 197
8.2 分析函式剖析 198
8.3 函式列表 199
8.4 聚合函式 200
8.4.1 跨越整個分區的聚合函式 201
8.4.2 細粒度視窗聲明 201
8.4.3 默認視窗聲明 202
8.5 Lead和Lag 202
8.5.1 語法和排序 202
8.5.2 例1:從前一行中返回一個值 203
8.5.3 理解數據行的位移 204
8.5.4 例2:從下一行中返回一個值 204
8.6 First_value和Last_value 205
8.6.1 例子:使用First_value來計算最大值 206
8.6.2 例子:使用Last_value來計算最小值 207
8.7 其他分析函式 207
8.7.1 Nth_value(11gR2) 207
8.7.2 Rank 209
8.7.3 Dense_rank 210
8.7.4 Row_number 211
8.7.5 Ratio_to_report 211
8.7.6 Percent_rank 212
8.7.7 Percentile_cont 213
8.7.8 Percentile_disc 215
8.7.9 NTILE 215
8.7.10 stddev 216
8.7.11 Listagg 217
8.8 性能調優 218
8.8.1 執行計畫 218
8.8.2 謂語 219
8.8.3 索引 220
8.9 高級話題 221
8.9.1 動態SQL 221
8.9.2 嵌套分析函式 222
8.9.3 並行 223
8.9.4 PGA大小 224
8.10 組織行為 224
8.11 小結 224
第9章 Model子句 225
9.1 電子表格 225
9.2 通過Model子句進行跨行引用 226
9.2.1 示例數據 226
9.2.2 剖析Model子句 227
9.2.3 規則 228
9.3 位置和符號引用 229
9.3.1 位置標記 229
9.3.2 符號標記 230
9.3.3 FOR循環 231
9.4 返回更新後的行 232
9.5 求解順序 233
9.5.1 行求解順序 233
9.5.2 規則求解順序 235
9.6 聚合 237
9.7 疊代 237
9.7.1 一個例子 238
9.7.2 PRESENTV與空值 239
9.8 查找表 240
9.9 空值 242
9.10 使用Model子句進行性能調優 243
9.10.1 執行計畫 243
9.10.2 謂語前推 246
9.10.3 物化視圖 247
9.10.4 並行 249
9.10.5 Model子句執行中的分區 250
9.10.6 索引 251
9.11 子查詢因子化 252
9.12 小結 253
第10章 子查詢因子化 254
10.1 標準用法 254
10.2 SQL最佳化 257
10.2.1 測試執行計畫 257
10.2.2 跨多個執行的測試 260
10.2.3 測試查詢改變的影響 263
10.2.4 尋找其他最佳化機會 266
10.2.5 將子查詢因子化套用到PL/SQL中 270
10.3 遞歸子查詢 273
10.3.1 一個CONNECT BY的例子 274
10.3.2 使用RSF的例子 275
10.3.3 RSF的限制條件 276
10.3.4 與CONNECT BY的不同點 276
10.4 複製CONNECT BY的功能 277
10.4.1 LEVEL偽列 278
10.4.2 SYS_CONNECT_BY_PATH函式 279
10.4.3 CONNECT_BY_ROOT運算符 281
10.4.4 CONNECT_BY_ISCYCLE偽列和NOCYCLE參數 284
10.4.5 CONNECT_BY_ISLEAF偽列 287
10.5 小結 291
第11章 半聯結和反聯結 292
11.1 半聯結 292
11.2 半聯結執行計畫 300
11.3 控制半聯結執行計畫 305
11.3.1 使用提示控制半聯結執行計畫 305
11.3.2 在實例級控制半聯結執行計畫 308
11.4 半聯結限制條件 310
11.5 半聯結必要條件 312
11.6 反聯結 312
11.7 反聯結執行計畫 317
11.8 控制反聯結執行計畫 326
11.8.1 使用提示控制反聯結執行計畫 326
11.8.2 在實例級控制反聯結執行計畫 327
11.9 反聯結限制條件 330
11.10 反聯結必要條件 333
11.11 小結 333
第12章 索引 334
12.1 理解索引 335
12.1.1 什麼時候使用索引 335
12.1.2 列的選擇 337
12.1.3 空值問題 338
12.2 索引結構類型 339
12.2.1 B-樹索引 339
12.2.2 點陣圖索引 340
12.2.3 索引組織表 341
12.3 分區索引 343
12.3.1 局部索引 343
12.3.2 全局索引 345
12.3.3 散列分區與範圍分區 346
12.4 與套用特點相匹配的解決方案 348
12.4.1 壓縮索引 348
12.4.2 基於函式的索引 350
12.4.3 反轉鍵索引 353
12.4.4 降序索引 354
12.5 管理問題的解決方案 355
12.5.1 不可見索引 355
12.5.2 虛擬索引 356
12.5.3 點陣圖聯結索引 357
12.6 小結 359
第13章 SELECT以外的內容 360
13.1 INSERT 360
13.1.1 直接路徑插入 360
13.1.2 多表插入 363
13.1.3 條件插入 364
13.1.4 DML錯誤日誌 364
13.2 UPDATE 371
13.3 DELETE 376
13.4 MERGE 380
13.4.1 語法和用法 380
13.4.2 性能比較 383
13.5 小結 385
第14章 事務處理 386
14.1 什麼是事務 386
14.2 事務的ACID屬性 387
14.3 事務隔離級別 388
14.4 多版本讀一致性 390
14.5 事務控制語句 391
14.5.1 Commit(提交) 391
14.5.2 Savepoint(保存點) 391
14.5.3 Rollback(回滾) 391
14.5.4 Set Transaction(設定事務) 391
14.5.5 Set Constraints(設定約束) 392
14.6 將運算分組為事務 392
14.7 訂單錄入模式 393
14.8 活動事務 399
14.9 使用保存點 400
14.10 序列化事務 403
14.11 隔離事務 406
14.12 自治事務 409
14.13 小結 413
第15章 測試與質量保證 415
15.1 測試用例 416
15.2 測試方法 417
15.3 單元測試 418
15.4 回歸測試 422
15.5 模式修改 422
15.6 重複單元測試 425
15.7 執行計畫比較 426
15.8 性能測量 432
15.9 在代碼中加入性能測量 432
15.10 性能測試 436
15.11 破壞性測試 437
15.12 通過性能測量進行系統檢修 439
15.13 小結 442
第16章 計畫穩定性與控制 443
16.1 計畫不穩定性:理解這個問題 443
16.1.1 統計信息的變化 444
16.1.2 運行環境的改變 446
16.1.3 SQL語句的改變 447
16.1.4 綁定變數窺視 448
16.2 識別執行計畫的不穩定性 450
16.2.1 抓取當前所運行查詢的數據 451
16.2.2 查看一條語句的性能歷史 452
16.2.3 按照執行計畫聚合統計信息 454
16.2.4 尋找執行計畫的統計方差 454
16.2.5 在一個時間點附近檢查偏差 456
16.3 執行計畫控制:解決問題 458
16.3.1 調整查詢結構 459
16.3.2 適當使用常量 459
16.3.3 給最佳化器一些提示 459
16.4 執行計畫控制:不能直接訪問代碼 466
16.4.1 選項1:改變統計信息 467
16.4.2 選項2:改變資料庫參數 469
16.4.3 選項3:增加或移除訪問路徑 469
16.4.4 選項4:套用基於提示的執行計畫控制機制 470
16.4.5 大綱 470
16.4.6 SQL概要檔案 481
16.4.7 SQL執行計畫基線 496
16.4.8 基於提示的執行計畫控制機制總結 502
16.5 結論 502

相關詞條

相關搜尋

熱門詞條

聯絡我們