破冰山—Oracle開發藝術 目錄

bq_wang發表於2010-11-10

目錄

第1章 大話資料庫程式設計規範 1
1.1 程式設計規範概述 1
1.2 書寫規範 2
1.2.1 大小寫風格 2
1.2.2 縮排風格 2
1.2.3 空格及換行 3
1.2.4 其他 4
1.3 命名規範 4
1.3.1 表和欄位命名規範 4
1.3.2 其他物件命名 5
1.4 變數命名 7
1.5 註釋規範 8
1.6 語法規範 9
1.7 指令碼規範 12
規則1.7.1 13
規則1.7.2 13
規則1.7.3 13
第2章 oracle開發常用工具及使用 14
2.1 awr工具與效能最佳化 14
2.1.1 awr介紹 14
.2.1.2 awr的安裝與配置 15
2.1.3 awr報表使用 15
2.1.4 分析awr報表基本思路 17
2.1.5 案例 17
2.2 sql_trace/10046事件 24
2.2.1 sql_trace/10046事件是什麼 24
2.2.2 總體流程介紹 24
2.2.3 sql_trace/10046事件具體使用方法 24
2.2.4 案例分析 28
2.2.5 小結 32
2.3 計時和剖析工具 32
2.3.1 plsql_profiler概述 34
2.3.2 剖析舉例 37
2.3.3 安全性 45
第3章 探索merge方法 46
3.1 merge是什麼 46
3.2 oracle 10g中merge的完善 48
3.2.1 update和insert動作可只出現其一 48
3.2.2 可對merge語句加條件 48
3.2.3 可用delete子句清除行 49
3.2.4 可採用無條件方式insert 49
3.3 merge誤區探索 49
3.3.1 無法在源表中獲得一組穩定的行 49
3.3.2 delete子句的where順序必須在最後 51
3.3.3 delete 子句只可以刪除目標表,而無法刪除源表 52
3.3.4 更新同一張表的資料,需擔心using的空值 53
3.4 merge的巧妙運用 54
第4章 神秘的null和令人討厭的char 58
4.1 神秘的null 59
4.1.1 null概述 59
4.1.2 null與函式 64
4.1.3 null與索引 79
4.1.4 null與sql 87
4.1.5 null與pl/sql 97
4.1.6 再談null和空字串區別 101
4.1.7 null總結 101
4.2 令人討厭的char 102
4.2.1 char與varchar2基礎 102
4.2.2 char與sql 105
4.2.3 char與繫結變數 109
4.2.4 char與pl/sql 111
4.2.5 char總結 112
第5章 報表開發之擴充套件group by 113
5.1 擴充套件group by概述 113
5.2 rollup 114
5.2.1 union all實現rollup功能 114
5.2.2 rollup分組 116
5.2.3 部分rollup分組 120
5.2.4 rollup總結 121
5.3 cube 121
5.3.1 cube分組 121
5.3.2 部分cube分組 123
5.3.3 cube總結 124
5.4 grouping sets實現小計 124
5.4.1 grouping sets分組 124
5.4.2 部分grouping sets分組 126
5.4.3 cube、rollup作為grouping sets的引數 126
5.4.4 grouping sets總結 128
5.5 組合列分組、連線分組、重複列分組 128
5.5.1 組合列分組 130
5.5.2 連線分組 132
5.5.3 重複列分組 134
5.5.4 組合列分組、連線分組、重複列分組總結 134
5.6 3個擴充套件分組函式:grouping、grouping_id、group_id 135
5.6.1 grouping函式 135
5.6.2 grouping_id函式 138
5.6.3 group_id函式 142
5.6.4 擴充套件group by函式總結 144
5.7 擴充套件分組綜合例項 144
第6章 探索oracle自動型別轉換 149
6.1 為什麼不建議使用自動型別轉換 150
6.2 自動型別轉換規則 156
6.3 自動型別轉換常見錯誤 166
第7章 where in list問題解析 169
7.1 問題引入:動態sql構造 170
7.2 使用正規表示式解決 172
7.3 使用常規字串函式及動態檢視 173
7.4 使用集合構造偽表 176
7.5 where in list效能問題 178
7.6 where in list問題總結 188
第8章 例說資料庫表設計和大量資料處理方法 189
8.1 根據業務需求規劃表結構 189
8.2 主鍵的確定 195
8.3 表的拆分、合併及資料的規範和反規範化 199
8.4 資料型別的選擇 199
8.5 表的分割槽 203
8.6 表的壓縮 203
8.7 抽取資料 205
8.7.1 利用sql*plus的spool功能 205
8.7.2 利用utl_file 207
8.7.3 利用第三方工具 207
8.8 轉換資料 207
8.8.1 資料的增刪改 208
8.8.2 資料彙總 211
8.9 載入資料 227
8.9.1 利用sqlldr載入 227
8.9.2 利用外部表載入 229
8.9.3 利用資料庫連結載入 233
8.9.4 利用分割槽交換技術載入 234
8.10 邏輯匯入/匯出資料 240
第9章 資料稽核 242
9.1 稽核的分類 242
9.2 列稽核設計 243
9.2.1 直接使用sql語句 245
9.2.2 提高稽核效率 248
9.2.3 管理稽核關係 254
9.2.4 單個列的複雜稽核 257
9.3 行稽核設計 258
9.3.1 重碼的稽核 259
9.3.2 直接使用sql語句 260
9.3.3 管理稽核關係 261
9.3.4 行間包含四則運算的稽核思路 266
9.3.5 更復雜的行間稽核思路 267
9.4 小結 267
第10章 趣談oracle分析函式 269
10.1 概述 269
10.2 函式語法 270
10.3 函式列表 276
10.4 函式用法 277
10.4.1 最常見的分析函式應用場景 279
10.4.2 rows的具體用法 280
10.4.3 range的具體用法 281
10.4.4 keep的用法 283
10.5 函式功能詳解 284
10.5.1 統計函式 284
10.5.2 排序函式 285
10.5.3 資料分佈函式 287
10.5.4 統計分析函式 289
10.6 分析函式在bi及統計上的應用 290
10.6.1 現狀分析 290
10.6.2 發展分析 297
10.7 自定義聚集函式 298
10.7.1 自定義聚集函式介面簡介 298
10.7.2 應用場景一:字串聚集 299
10.7.3 應用場景二:指數移動平均線 301
第11章 oracle層次查詢 305
11.1 概述 305
11.2 樣例資料 306
11.3 connect by和start with查詢 306
11.3.1 概述 306
11.3.2 基本語法 306
11.3.3 樣例 308
11.4 sys_connect_by_path函式 313
11.5 wmsys.wm_concat非公開函式 314
第12章 號段選取應用 316
12.1 問題的提出 316
12.2 相關基礎知識 317
12.2.1 偽列rownum和level 317
12.2.2 利用層次查詢構造連續的數 317
12.2.3 用lead和lag獲得相鄰行的欄位值 318
12.3 解決問題 320
12.3.1 已知號碼求號段 320
12.3.2 根據號段求出包含的數 324
12.3.3 求缺失的號 326
12.3.4 求尚未使用的號段 330
12.4 小結 334
第13章 分析sql執行計劃的關注點 335
13.1 返回行與邏輯讀的比率 335
13.2 聚合查詢 338
13.3 返回行的數量 341
13.4 oracle預測行準確與否 342
13.5 predicate information 346
13.6 動態取樣 348
13.7 誰是主要矛盾 349
第14章 oracle開發誤區探索 352
14.1 避免對列運算 352
14.2 消除隱式轉換 354
14.3 關注空格 354
14.4 儲存過程與許可權 355
14.5 提防ddl提交事務 357
14.6 insert into 錯誤 359
14.7 關於or 360
14.8 sequence中的cache 361
14.9 樹形查詢易錯處 364
14.10 小心保留字 367
14.11 函式索引陷阱 371
14.12 外連線陷阱 374
14.13 標量子查詢 375
第15章 提升pl/sql開發效能漫談 378
15.1 重視解析 378
15.1.1 觸發器儘量考慮內部程式碼過程封裝 378
15.1.2 避免動態sql 380
15.1.3 oltp系統中儘量使用繫結變數 382
15.2 關注呼叫 384
15.2.1 減少對sysdate的呼叫 384
15.2.2 避免對mod函式的呼叫 385
15.2.3 設法減少表掃描次數 386
15.2.4 避免sql中的函式呼叫 391
15.3 簡潔為王 395
15.3.1 儘量用簡單sql替代pl/sql邏輯 395
15.3.2 避免不必要的排序 397
15.3.3 利用oracle現有功能 399
15.4 細緻入微 400
15.4.1 使用pls_integer型別 400
15.4.2 避免資料型別轉換 400
15.4.3 if的順序有講究 402
15.4.4 設計開發對列是否為空慎重決定 404
15.4.5 分散式應用開發不可不知的hint(driving_site) 407
第16章 管道函式的學習與實戰應用 410
16.1 管道函式編寫要點 410
16.2 功能描述及案例 411
16.2.1 可直接用table()運算子方式輸出結果集 411
16.2.2 結果集可作為表來使用,直接和其他表相關聯 411
16.2.3 實現實時跟蹤 412
16.3 管道函式注意點 414
16.3.1 清楚管道函式只是表函式的一種 414
16.3.2 管道函式與dml 415
16.3.3 管道函式集合的限制 416
16.3.4 與管道函式相關的異常no_data_needed 417
第17章 巧用鎖特性避免重複啟動同一程式 420
17.1 基本技巧介紹 420
17.2 原理介紹 422
17.3 程式程式碼 423
17.4 測試 426
17.5 需要注意的點 427
第18章 11g r2 新特性之遞迴with程式設計精粹 428
18.1 上下級關係 429
18.2 構造數列 435
18.3 排列組合問題 441
18.4 沿路徑計算 457
18.5 國際sql挑戰賽 473
第19章 不可能的任務?超越oracle 479
19.1 為何選擇cube 480
19.1.1 cube簡介 480
19.1.2 cube優勢 480
19.1.3 測試環境 481
19.2 newkid的設計思路和最佳化步驟 482
19.2.1 一次掃描求出16種分組 482
19.2.2 一次掃描求出1種分組,並基於此再一次掃描求出其餘分組 484
19.2.3 一次掃描求出1種分組,並基於此再多次分層累計求出其餘分組 485
19.2.4 變數長度和型別的最佳化 487
19.3 為何選擇oci 488
19.3.1 彙總演算法的翻譯和改進 488
19.3.2 輸入和輸出的實現和改進 489
19.3.3 不要忽視物理儲存對資料庫操作的影響 490
19.3.4 不成功的最佳化教訓 490
19.4 總結 493
第20章 動態sql擴充套件 494
20.1 動態sql用途和應用場景 494
20.2 execute immediate語法 495
20.2.1 執行ddl、dcl語句 495
20.2.2 構造通用sql處理 496
20.2.3 執行復雜業務邏輯查詢 498
20.2.4 繫結變數 502
20.2.5 bulk collect動態sql 505
20.3 使用dbms_sql包 507
20.3.1 dbms_sql函式和過程說明 507
20.3.2 dbms_sql執行步驟 508
20.3.3 dbms_sql應用場景 509
20.3.4 dbms_sql與execute immediate比較 509
後記 511

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-677862/,如需轉載,請註明出處,否則將追究法律責任。

相關文章