買這商品的人也買了...
-
$580$452 -
$940$700 -
$480$379 -
$480$374 -
$352SQL 優化最佳實踐:構建高效率 Oracle 數據庫的方法與技巧
-
$607Oracle 性能診斷藝術, 2/e
-
$556Angular 權威教程
-
$347Oracle 數據庫升級、遷移和轉換實踐
-
$250Tableau 數據可視化從入門到精通
-
$450$351 -
$650$507 -
$505Oracle數據庫問題解決方案和故障排除手冊
-
$580$452 -
$580$493 -
$580$458 -
$620$484 -
$620$484 -
$450$356 -
$450$351 -
$534$507 -
$534$507 -
$880$695 -
$540$427 -
$654$621 -
$780$616
相關主題
商品描述
本書不講具體語法,只是以案例的形式介紹各種查詢語句的用法。第1~4章是基礎部分,講述了常用的各種基礎語句,以及常見的錯誤和正確語句的寫法,應熟練掌握這部分內容,因為在日常查詢和優化改寫中都要用到;第5~12章是提高部分,講解了正則表達式、分析函數、樹形查詢及匯總函數的用法,這部分內容常用於一些復雜需求的實現及優化改寫;最後兩章介紹日常的優化改寫案例,這部分內容是前面所學知識的擴展應用。如果您是開發人員,經常與Oracle打交道,那麽本書可以幫助您處理復雜的需求,寫出高性能的語句。如果您是運維人員,則本書可以幫助您更快地完成慢語句的改寫優化。
作者簡介
師慶棟,網名有教無類。SWOUG(西南Oracle用戶組)成員,資深Oracle開發DBA,道森培訓高級講師。擁有超過17年的IT從業經驗,擅長Oracle數據庫開發,對於數據庫架構設計、性能優化擁有豐富的實戰經驗!通過大量的報表優化改寫,積累了豐富的優化改寫經驗,擅長對Oracle查詢語句的優化改寫。
羅炳森,網名落落。擅長SQL優化,對Oracle優化器有較深的理解。從2007年至今一直專注於SQL優化、表設計優化、SQL查詢改寫。經常熱心幫助網友解決SQL性能問題,累計SQL優化案例上千個。
目錄大綱
第1章單表查詢1
1.1查詢表中所有的行與列1
1.2從表中檢索部分行2
1.3查找空值3
1.4空值與運算3
1.5處理空值4
1.6空值與函數5
1.7查找滿足多個條件的行6
1.8從表中檢索部分列7
1.9為列取有意義的名稱7
1.10在WHERE子句中引用取別名的列8
1.11拼接列8
1.12在SELECT語句中使用條件邏輯9
1.13限制返回的行數11
第2章給查詢結果排序12
2.1以指定的次序返回查詢結果12
2.2按多個字段排序14
2.3按子串排序15
2.4從表中隨機返回n條記錄16
2.5 TRANSLATE 18
2.6按數字和字母混合字符串中的字母排序19
2.7處理排序空值20
2.8根據條件取不同列中的值來排序21
第3章操作多個表23
3.1 UNION ALL與空字符串23
3.2 UNION與OR 24
3.3 UNION與去重26
3.4組合相關的行30
3.5 IN、EXISTS和INNER JOIN 30
3.6 INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN解析32
3.7外連接與過濾條件36
3.8自關聯39
3.9 NOT IN、NOT EXISTS和LEFT JOIN 40
3.10檢測兩個表中的數據及對應數據的條數是否相同43
3.11聚集與內連接44
第4章插入、更新與刪除49
4.1插入新記錄49
4.2阻止對某幾列插入50
4.3複製表的定義及數據51
4.4用WITH CHECK OPTION限制數據錄入51
4.5多表插入語句52
4.6用其他表中的值更新56
4.7合併記錄62
4.8刪除違反參照完整性的記錄64
4.9刪除名稱重複的記錄64
第5章使用字符串67
5.1生成連續數值67
5.2遍歷字符串68
5.3計算字符在字符串中出現的次數69
5.4從字符串中刪除不需要的字符71
5.5將字符和數字數據分離72
5.6查詢只包含字母或數字型的數據73
5.7提取姓名的大寫首字母縮寫78
5.8根據表中的行創建一個分隔列表79
5.9提取第n個分隔的子串80
5.10分解IP地址82
5.11將分隔數據轉換為多值IN列表82
5.12組合去重83
第6章使用數字86
6.1常用聚集函數86
6.2列轉行88
6.3行轉列89
6.4生成累計和91
6.5累計與重複值95
6.6生成排名97
6.7返回最值對應信息98
6.8求總和的百分比99
第7章日期運算103
7.1日期類型103
7.2日期計算105
7.3時間間隔類型105
7.4日期計算函數106
7.5間隔月份108
7.6獲取記錄間的間隔時間108
第8章日期操作112
8.1提取日期中的信息112
8.2提取間隔類型中的信息115
8.3週的計算117
8.4計算一年中周內各日期的次數119
8.5確定一年是否為閏年123
8.6創建本月日曆123
8.7全年日曆126
8.8補充範圍內丟失的值129
8.9識別重疊的日期範圍131
第9章範圍處理134
9.1定位連續值的範圍134
9.2合併連續區間136
9.3合併重疊區間140
9.4用WITH進行範圍分組143
第10章高級查找147
10.1給結果集分頁147
10.2使用管道函數把全表查詢改為增量查詢149
10.3內聯視圖與錯誤數據153
10.4正確使用分析函數155
10.5找到包含最大值和最小值的記錄157
10.6提取維度信息159
第11章報表和數據倉庫運算162
11.1行轉列子句162
11.2列轉行子句165
11.3將結果集反向轉置為一列168
11.4打印小票與行列轉換169
11.5數據分組172
11.6計算簡單的小計173
11.7判別非小計的行175
11.8對不同組/分區同時實現聚集177
11.9移動範圍取值分析179
11.10計算本期、新增、累加182
11.11 listagg與小九九186
第12章分層查詢188
12.1簡單的樹形查詢188
12.2根節點、分支節點、葉子節點190
12.3 sys_connect_by_path 191
12.4樹形查詢中的排序192
12.5樹形查詢中的WHERE 193
12.6查詢樹形的一個分支195
12.7剪去一個分支196
12.8多行字符串的拆分196
第13章應用案例實現199
13.1解析簡單公式199
13.2匹配漢字200
13.3多表全外連接的問題202
13.4根據傳入條件返回不同列中的數據203
13.5拆分字符串進行連接205
13.6用“行轉列”來得到隱含信息206
13.7用隱藏數據進行行轉列208
13.8用正則表達式提取clob裡的文本格式記錄集210
第14章改寫調優案例分享212
14.1為什麼不建議使用標量子查詢212
14.2用LEFT JOIN優化標量子查詢215
14.3用LEFT JOIN優化標量子查詢之聚合改寫216
14.4用LEFT JOIN及行轉列優化標量子查詢217
14.5標量中有ROWNUM=1 218
14.6 ROWNUM=1引起的邏輯問題219
14.7標量中有不等關聯時改寫的問題222
14.8標量中有聚合函數時改寫的問題226
14.9用分析函數優化標量子查詢(一) 229
14.10用分析函數優化標量子查詢(二) 231
14.11用分析函數優化標量子查詢(三) 233
14.12標量中的樹形查詢235
14.13使用標量子查詢優化取最值語句238
14.14用MERGE改寫優化UPDATE 240
14.15 UPDATE中有ROWNUM=1 243
14.16用MERGE使用左聯245
14.17用MERGE改寫UPDATE之多個子查詢249
14.18將UPDATE改寫為MERGE時遇到的問題251
14.19通過分頁方式優化最值語句254
14.20讓分頁語句走正確的PLAN 256
14.21去掉分頁查詢中的DISTINCT 257
14.22優化有GROUP BY的分頁語句261
14.23用WITH語句優化查詢264
14.24用WITH輔助把OR改為UNION 265
14.25錯誤的WITH改寫269
14.26錯誤的分析函數用法272
14.27用LEFT JOIN優化多個子查詢(一) 274
14.28用LEFT JOIN優化多個子查詢(二) 278
14.29用LEFT JOIN優化多個子查詢(三) 280
14.30去掉由EXISTS引起的FILTER 283
14.31巧改驅動表提升效率284
14.32用分析函數更改反連接286
14.33集合判斷288
14.34相等集合判斷289
14.35用分析函數改寫最值過濾條件291
14.36用樹形查詢找指定級別的數據292
14.37行轉列與列轉行293
14.38 UPDATE、ROW_NUMBER與MERGE 295
14.39一個UPDATE語句的優化298
14.40自定義函數對速度的影響302
14.41糾結的MERGE語句305
14.42用CASE WHEN去掉UNION ALL 308
14.43不恰當的WITH及標量子查詢320
14.44用分析函數加“行轉列”來優化標量子查詢323
14.45用分析函數處理問題326
14.46用列轉行改寫A表多列關聯B表同列329
14.47用分析函數改寫最值語句332
14.48多列關聯的半連接與索引334
14.49巧用分析函數優化自關聯335
14.50糾結的UPDATE語句340
14.51巧用JOIN條件合併UNION ALL語句342
14.52用分析函數去掉NOT IN 345
14.53讀懂查詢中的需求之裁剪語句349
14.54去掉FILTER裡的EXISTS之活學活用350