第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
本文轉自baoqiangwang51CTO部落格,原文連結:http://blog.51cto.com/baoqiangwang/419814,如需轉載請自行聯系原作者