前言 xi
第1章 檢索記錄 1
1.1 檢索所有行和列 1
1.2 篩選行 2
1.3 查找滿足多個查詢條件的行 2
1.4 篩選列 3
1.5 創建有意義的列名 3
1.6 在WHERE 子句中引用彆名列 4
1.7 串聯多列的值 5
1.8 在SELECT 語句裏使用條件邏輯 6
1.9 限定返迴行數 6
1.10 隨機返迴若乾行記錄 8
1.11 查找Null 值 9
1.12 把Null 值轉換為實際值 10
1.13 查找匹配項 10
第2章 查詢結果排序 12
2.1 以指定順序返迴查詢結果 12
2.2 多字段排序 13
2.3 依據子串排序 14
2.4 對含有字母和數字的列排序 15
2.5 排序時對Null 值的處理 17
2.6 依據條件邏輯動態調整排序項 23
第3章 多錶查詢 25
3.1 疊加兩個行集 25
3.2 閤並相關行 27
3.3 查找兩個錶中相同的行 28
3.4 查找隻存在於一個錶中的數據 30
3.5 從一個錶檢索與另一個錶不相關的行 33
3.6 新增連接查詢而不影響其他連接查詢 34
3.7 確定兩個錶是否有相同的數據 36
3.8 識彆並消除笛卡兒積 42
3.9 組閤使用連接查詢與聚閤函數 44
3.10 組閤使用外連接查詢與聚閤函數 48
3.11 從多個錶中返迴缺失值 51
3.12 在運算和比較中使用Null 54
第4章 插入、更新和刪除 56
4.1 插入新記錄 57
4.2 插入默認值 57
4.3 使用Null 覆蓋默認值 58
4.4 復製數據到另一個錶 59
4.5 復製錶定義 59
4.6 多錶插入 60
4.7 禁止插入特定列 62
4.8 更新記錄 63
4.9 當相關行存在時更新記錄 64
4.10 使用另一個錶的數據更新記錄 64
4.11 閤並記錄 67
4.12 刪除全錶記錄 69
4.13 刪除指定記錄 69
4.14 刪除單行記錄 69
4.15 刪除違反參照完整性的記錄 70
4.16 刪除重復記錄 70
4.17 刪除被其他錶參照的記錄 72
第5章 元數據查詢 74
5.1 列舉模式中的錶 74
5.2 列舉字段 75
5.3 列舉索引列 76
5.4 列舉約束 77
5.5 列舉非索引外鍵 78
5.6 用SQL 生成SQL 81
5.7 描述Oracle 數據字典視圖 83
第6章 字符串處理 85
6.1 遍曆字符串 85
6.2 嵌入引號 87
6.3 統計字符齣現的次數 88
6.4 刪除不想要的字符 89
6.5 分離數字和字符數據 91
6.6 判斷含有字母和數字的字符串 94
6.7 提取姓名的首字母 99
6.8 按照子字符串排序 102
6.9 根據字符串裏的數字排序 103
6.10 創建分隔列錶 109
6.11 分隔數據轉換為多值IN 列錶 114
6.12 按字母錶順序排列字符 119
6.13 識彆字符串裏的數字字符 124
6.14 提取第n 個分隔子字符串 130
6.15 解析IP 地址 136
第7章 數值處理 139
7.1 計算平均值 139
7.2 查找最小值和最大值 141
7.3 求和 142
7.4 計算行數 144
7.5 計算非Null 值的個數 146
7.6 纍計求和 146
7.7 計算纍計乘積 149
7.8 計算纍計差 151
7.9 計算眾數 152
7.10 計算中位數 155
7.11 計算百分比 158
7.12 聚閤Null 列 160
7.13 計算平均值時去掉最大值和最小值 161
7.14 將含有字母和數字的字符串轉換為數字 163
7.15 修改纍計值 165
第8章 日期運算 168
8.1 年月日加減法 168
8.2 計算兩個日期之間的天數 170
8.3 計算兩個日期之間的工作日天數 172
8.4 計算兩個日期之間相差的月份和年份 176
8.5 計算兩個日期之間相差的秒數、分鍾數和小時數 178
8.6 統計一年中有多少個星期一 180
8.7 計算當前記錄和下一條記錄之間的日期差 191
第9章 日期處理 196
9.1 判斷閏年 196
9.2 計算一年有多少天 203
9.3 從給定日期值裏提取年月日時分秒 205
9.4 計算一個月的第一天和最後一天 207
9.5 列齣一年中所有的星期五 209
9.6 找齣當前月份的第一個和最後一個星期一 216
9.7 生成日曆 222
9.8 列齣一年中每個季度的開始日期和結束日期 239
9.9 計算一個季度的開始日期和結束日期 243
9.10 填補缺失的日期 249
9.11 依據特定時間單位檢索數據 258
9.12 比較特定的日期要素 259
9.13 識彆重疊的日期區間 262
第10章 區間查詢 268
10.1 定位連續的值區間 268
10.2 計算同一組或分區的行之間的差 273
10.3 定位連續值區間的開始值和結束值 281
10.4 為值區間填充缺失值 285
10.5 生成連續的數值 289
第11章 高級查詢 293
11.1 結果集分頁 293
11.2 跳過n 行記錄 296
11.3 在外連接查詢裏使用OR 邏輯 298
11.4 識彆互逆的記錄 301
11.5 提取最靠前的n 行記錄 302
11.6 找齣最大和最小的記錄 304
11.7 查詢未來的行 305
11.8 行值輪轉 308
11.9 對結果排序 311
11.10 刪除重復項 312
11.11 查找騎士值 314
11.12 生成簡單的預測 321
第12章 報錶和數據倉庫 329
12.1 變換結果集成一行 329
12.2 變換結果集成多行 331
12.3 反嚮變換結果集 339
12.4 反嚮變換結果集成一列 340
12.5 刪除重復數據 343
12.6 變換結果集以實現跨行計算 346
12.7 創建固定大小的數據桶 347
12.8 創建預定數目的桶 351
12.9 創建水平直方圖 355
12.10 創建垂直直方圖 357
12.11 返迴非分組列 360
12.12 計算簡單的小計 365
12.13 計算所有可能的錶達式組閤的小計 368
12.14 識彆非小計行 377
12.15 使用CASE 錶達式標記行數據 379
12.16 創建稀疏矩陣 380
12.17 按照時間單位分組 382
12.18 多維度聚閤運算 385
12.19 動態區間聚閤運算 387
12.20 變換帶有小計的結果集 394
第13章 層次查詢 398
13.1 展現父子關係 399
13.2 展現祖孫關係 402
13.3 創建層次視圖 407
13.4 找齣給定的父節點對應的所有子節點 414
13.5 確認葉子節點、分支節點和根節點 418
第14章 雜項 426
14.1 使用SQL Server 的PIVOT 操作符創建交叉報錶 426
14.2 使用SQL Server 的UNPIVOT 操作符逆嚮轉換交叉報錶 428
14.3 使用Oracle 的MODEL 子句變換結果集 430
14.4 從不固定位置提取字符串的元素 433
14.5 計算一年有多少天 436
14.6 查找含有數字和字母的字符串 437
14.7 在Oracle 中把整數轉換成二進製 439
14.8 變換已排名的結果集 442
14.9 為兩次變換後的結果集增加列標題 445
14.10 在Oracle 中把標量子查詢轉換為復閤子查詢 456
14.11 解析串行化的數據 458
14.12 計算比重 462
14.13 從Oracle 中生成CSV 格式的輸齣 464
14.14 找齣不匹配某個格式的文本 469
14.15 使用內嵌視圖轉換數據 471
14.16 測試一組數據中是否存在某個值 472
附錄A 窗口函數簡介1 476
附錄B 重溫Rozenshtein 500
· · · · · · (
收起)