预购商品
书目分类
特别推荐
本書不講具體語法,只是以案例的形式介紹各種查詢語句的用法。靠前~4章是基礎部分,講述了常用的各種基礎語句,以及常見的錯誤和正確語句的寫法,應熟練掌握這部分內容,因為在日常查詢和優化改寫中都要用到;第5~12章是提高部分,講解了規則運算式、分析函數、樹形查詢及匯總函數的用法,這部分內容常用於一些複雜需求的實現及優化改寫;很後兩章介紹日常的優化改寫案例,這部分內容是前面所學知識的擴展應用。如果您是開發人員,經常與Oracle打交道,那麼本書可以幫助您處理複雜的需求,寫出高性能的語句。如果您是運維人員,則本書可以幫助您更快地完成慢語句的改寫優化。
第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
師慶棟,網名有教無類。SWOUG(西南Oracle用戶組)成員,資深Oracle開發DBA,道森培訓高級講師。擁有超過17年的IT從業經驗,擅長Oracle資料庫開發,對於資料庫架構設計、性能優化擁有豐富的實戰經驗!通過大量的報表優化改寫,積累了豐富的優化改寫經驗,擅長對Oracle查詢語句的優化改寫。 羅炳森,網名落落。擅長SQL優化,對Oracle優化器有較深的理解。從2007年至今一直專注於SQL優化、表設計優化、SQL查詢改寫。經常熱心説明網友解決SQL性能問題,累計SQL優化案例上千個。
客服公告
热门活动
订阅电子报