TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
Oracle SQL高級編程(簡體書)
滿額折

Oracle SQL高級編程(簡體書)

人民幣定價:89 元
定  價:NT$ 534 元
優惠價:87465
絕版無法訂購
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次
書摘/試閱

商品簡介

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

作者簡介

作者:莫頓(Karen Morton) (美國)Kerry Osborne (美國)Robyn Sands 等 譯者:朱浩波

莫頓,Karen Morton,研究人員、教育家及顧問,Fidelity信息服務公司的資深數據庫管理員和性能調優專家。她從20世紀90年代初就開始使用Oracle,從事 Oracle的教學工作也已經超過10年的時間。她是Oracle ACE,也是OakTable(Oracle社區中著名的“Oracle科學家”的非正式組織)的成員,經常在技術會議上演講。她的著作還包括 Expert Oracle Practices和Beginning Oracle SQL。
Kerry Osborne,專注于Oracle咨詢的Enkitec公司的創始人之一。從1982年開始使用Oracle(第2版)。他當過開發人員,也做過DBA,目前是 Oracle ACE總監和OakTable成員。最近幾年,他專注于研究Oracle內部原理以及解決性能問題。
Robyn Sands,思科公司的軟件工程師,為思科的客戶設計開發嵌入式Oracle數據庫產品。從1996年開始使用Oracle,在應用開發、大型系統實現以及性能評估方面具有豐富的經驗。她是OakTable的成員,同時是Expert Oracle Practices (2010年 Apress出版)一書的合著者。
RIYAJ SHAMSUDEEN 專注于性能/數據恢復/電子商務的咨詢公司OraInternals的首席數據庫管理員和董事長。有近20年使用Oracle技術產品以及Oracle數據庫管理員/Oracle數據庫應用管理員的經驗,是真正應用集群、性能調優以及數據庫內部屬性方面的專家。同時是一位演講家及Oracle ACE。
JARED STILL,從1994年就開始使用Oracle。他認為對于SQL的學習是永無止境的,相信每一個查詢Oracle數據庫的人都需要精通SQL語言,才能寫出高效的查詢。他參與本書的編寫就是為了幫助別人實現這一目標。

名人/編輯推薦

《Oracle SQL高級編程》:資深Oracle專家力作,OakTable團隊推薦,全面、獨到、翔實,題材豐富,Oracle開發人員和DBA必備。

目次

第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

書摘/試閱

SQL的目的就是簡單地提供一個到數據庫的接口,在本書指的是Oracle數據庫。每一條SQL語句對于數據庫來說就是一條命令或指令。SQL與其他編程語言(如C或Java)的區別就在于它是要處理數據集合而不是一行一行的數據。語言本身也不需要你提供如何導航到數據的指令——這是在後臺透明地進行的。但你將在後面的章節中看到,如果想在Oracle中寫出高效的SQL語句,了解數據及其在數據庫中的存儲方式與存儲位置是很重要的。
由于不同的供應商(例如甲骨文、IBM和微軟)實現SQL核心功能的機制相差無幾,所以基于某一種數據庫所學的技巧同樣可以應用到其他類型的數據庫上。你基本上可以利用同樣的SQL語句來進行數據的查詢、插入、更新和刪除,以及創建、修改和刪除對象,而不必管數據庫的供應商是哪家。
盡管SQL是各種關系型數據庫管理系統的標準語言,但實際上它并不一定是關系型的。在本書後面我將就這一點稍作擴展。如果想要了解更多的細節,我推薦大家閱讀C.J.Date的SQL and Relational Theory一書。需要銘記于心的一點是SQL語言并不總是嚴格遵守關系模型的——它根本就沒有實現關系模型的某些要素,同時還不恰當地實現了一些要素。事實上,既然SQL是基于關系模型的,那么要想寫出盡可能正確高效的SQL語句,你不僅必須要理解SQL語言,還要理解關系模型。

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區