《Microsoft SQL Server 2008技術內幕:T-SQL查詢》是2010年9月由電子工業出版社出版的圖書,作者是本·甘(ItzikBen-Gan)。
基本介紹
- 作者:本·甘(ItzikBen-Gan)
- 譯者:成保棟 李保強
- ISBN:9787121117350
- 頁數:608頁
- 定價:99.00元
- 出版社:電子工業出版社
- 出版時間:2010年9月
- 副標題:T-SQL查詢
內容介紹
作者介紹
作品目錄
Table of Contents
序言 I
致謝 III
前言 V
第1章 邏輯查詢處理 1
1.1 邏輯查詢處理的各個階段 2
1.1.1 邏輯查詢處理階段簡介 2
1.2 客戶/訂單場景下的查詢示例 4
1.3 邏輯查詢處理階段詳解 5
1.3.1 步驟1:FROM階段 5
1.3.2 步驟2:WHERE階段 9
1.3.3 步驟3:GROUP BY階段 10
1.3.4 步驟4:HAVING階段 11
1.3.5 步驟5:SELECT階段 12
1.3.6 步驟6:排序用的ORDER BY階段 13
1.4 邏輯查詢處理的深入內容 16
1.4.1 表運算符 16
1.4.2 OVER子句 23
1.4.3 集合運算符 25
1.5 總結 26
第2章 集合論和謂詞邏輯 27
2.1 自然語言表述到數學表示的轉換 27
2.1.1 嚴格定義(well-Definedness) 28
2.1.2 相等、恆等和同一性 30
2.1.3 數學命名約定 30
2.1.4 數字 31
2.1.5 上下文 32
2.1.6 函式、參數和變數 33
2.1.7 指令和算法 34
2.2 集合論 34
2.2.1 集合的標記方法 35
2.2.2 集合的嚴格定義 36
2.2.3 論域 36
2.2.4 真實性 38
2.2.5 羅素悖論(Russell’s Paradox) 40
2.2.6 有序對、元組和笛卡爾積 41
2.2.7 空集 42
2.2.8 集合的特徵函式 43
2.2.9 集合的基數(Cardinality) 43
2.2.10 順序 44
2.2.11 集合運算符 47
2.2.12 集合的劃分(Partition) 49
2.2.13 集合論的推廣 50
2.3 謂詞邏輯 50
2.3.1 程式語言中的邏輯功能 50
2.3.2 命題和謂詞 51
2.3.3 排中律 53
2.3.4 與、或、非運算 53
2.3.5 邏輯等價 55
2.3.6 邏輯蘊含 55
2.3.7 量化(Quantification) 56
2.3.8 替代和推廣 58
2.4 關係 59
2.4.1 自反性、對稱性和傳遞性 59
2.5 一個實際的套用 60
2.6 總結 63
第3章 關係模型 65
3.1 關係模型簡介 65
3.1.1 關係、元組和類型 65
3.1.2 關係模型:快速摘要 70
3.2 關係代數和關係計算 70
3.2.1 基本運算符 71
3.2.2 關係代數 71
3.2.3 關係演算 79
3.2.4 T-SQL支持 80
3.3 數據完整性 81
3.3.1 聲明式約束 82
3.3.2 實施完整性的其他方法 84
3.4 資料庫正規化和其他設計主題 86
3.4.1 解決函式依賴的範式 87
3.4.2 更高級的範式 92
3.4.3 反規範化(Denormalization) 95
3.4.4 一般化和特殊化 96
3.5 總結 98
第4章 查詢最佳化 99
4.1 本章用到的樣本數據 99
4.2 最佳化方法論 102
4.2.1 分析實例級別的等待 104
4.2.2 關聯等待和佇列 111
4.2.3 確定行動方案 112
4.2.4 細化到資料庫/檔案級別 113
4.2.5 細化到進程級別 115
4.2.6 最佳化索引和查詢 132
4.3 查詢最佳化的工具 133
4.3.1 查詢執行計畫的快取 133
4.3.2 清空快取 134
4.3.3 動態管理對象 134
4.3.4 STATISTICS IO 135
4.3.5 測量查詢的運行時間 135
4.3.6 分析執行計畫 136
4.3.7 提示(Hint) 144
4.3.8 跟蹤/Profiler 145
4.3.9 資料庫引擎最佳化顧問 145
4.3.10 數據收集和管理數據倉庫 146
4.3.11 使用SMO來複製統計信息 146
4.4 索引最佳化 146
4.4.1 表和索引的結構 146
4.4.2 索引訪問方法 153
4.4.3 索引策略的分析 191
4.4.4 碎片 200
4.4.5 分區 201
4.5 準備樣本數據 202
4.5.1 數據準備 202
4.5.2 TABLESAMPLE 206
4.6 基於集合的方法和疊代/過程方法的比較,以及一個最佳化練習 208
4.7 總結 214
第5章 算法和複雜性 215
5.0.1 你有一個1夸特的硬幣嗎? 215
5.1 如何度量算法(How Algorithms Scale) 217
5.1.1 二次縮放(Quadratic Scaling)的一個例子 217
5.1.2 具有線性複雜度的算法 218
5.1.3 指數和超指數複雜度 218
5.1.4 次線性(sublinear)複雜度 219
5.1.5 常量複雜度 219
5.1.6 複雜度的技術定義 220
5.1.7 複雜度的比較 221
5.2 經典算法和算法策略 222
5.2.1 排序算法 223
5.2.2 字元串查找 225
5.3 一個實際的應用程式 226
5.3.1 識別測量數據的趨勢 226
5.3.2 LISLP算法的複雜度 226
5.3.3 用T-SQL解決最長上升子序列的長度問題 227
5.4 總結 229
第6章 子查詢、表表達式和排名函式 231
6.1 子查詢 232
6.1.1 獨立子查詢 232
6.1.2 相關子查詢 235
6.1.3 行為不當的子查詢 244
6.1.4 不常用的謂詞 245
6.2 表表達式(Table Expressions) 246
6.2.1 派生表 247
6.2.2 公用表表達式 249
6.3 分析排名函式 255
6.3.1 行號 257
6.3.2 排名和密集排名(Dense Rank) 271
6.3.3 組號(Tile Number) 272
6.4 數字輔助表 276
6.5 缺失範圍和現有範圍(也稱為間斷和孤島) 279
6.5.1 缺失範圍(間斷) 281
6.5.2 現有範圍(孤島) 288
6.6 總結 296
第7章 聯接和集合運算 297
7.1 聯接 297
7.1.1 舊語法和新語法 297
7.1.2 基本聯接類型 298
7.1.3 其他的聯接分類 306
7.1.4 上一年度的滑動合計 317
7.1.5 聯接算法 320
7.1.6 拆分元素 326
7.2 集合運算 332
7.2.1 UNION 332
7.2.2 EXCEPT 333
7.2.3 INTERSECT 334
7.2.4 集合運算的優先權 335
7.2.5 在集合運算中使用INTO 336
7.2.6 避開不支持的邏輯階段 336
7.3 總結 338
第8章 數據聚合和透視 339
8.1 OVER 子句 339
8.2 決勝屬性(Tiebreaker) 341
8.3 連續聚合 343
8.3.1 累積聚合(Cumulative Aggregation) 344
8.3.2 滑動聚合(Sliding Aggregation) 348
8.3.3 年初至今(YTD) 349
8.4 透視轉換(Pivoting) 350
8.4.1 透視轉換屬性 350
8.4.2 關係除法 353
8.4.3 聚合數據 355
8.5 逆透視轉換 357
8.6 自定義聚合 360
8.6.1 使用透視轉換的自定義聚合 361
8.6.2 用戶定義聚合函式(UDA,User Defined Aggregate) 362
8.6.3 專用解決方案 370
8.7 直方圖(Histogram) 380
8.8 分組因子 383
8.9 分組集 385
8.9.1 樣例數據 386
8.9.2 GROUPING SETS從屬子句 387
8.9.3 CUBE從屬子句 389
8.9.4 ROLLUP從屬子句 390
8.9.5 分組集代數 392
8.9.6 GROUPING_ID函式 395
8.9.7 保存分組集 397
8.9.8 排序 399
8.10 總結 400
第9章 TOP和APPLY 401
9.1 SELECT TOP 401
9.1.1 TOP和確定性 402
9.1.2 TOP和輸入表達式 403
9.1.3 TOP和修改 404
9.1.4 增強的TOP 406
9.2 APPLY 407
9.3 使用TOP和APPLY解決常見問題 408
9.3.1 每組中的TOP n 408
9.3.2 匹配當前值和前一個值 413
9.3.3 分頁 416
9.3.4 隨機行 419
9.3.5 中值(Median) 421
9.4 邏輯轉換 422
9.5 總結 424
第10章 數據修改 425
10.1 插入數據 425
10.1.1 增強的VALUES子句 425
10.1.2 SELECT INTO 426
10.1.3 BULK行集提供程式 428
10.1.4 按最小方式記錄日誌的操作 430
10.1.5 INSERT EXEC 447
10.1.6 序列機制 450
10.1.7 全局唯一標識符(GUID) 454
10.2 刪除數據 454
10.2.1 TRUNCATE與DELETE 454
10.2.2 刪除包含重複數據的行 455
10.2.3 基於聯接的DELETE 456
10.3 更新數據 458
10.3.1 基於聯接的UPDATE 458
10.3.2 更新大值數據類型 461
10.3.3 用SELECT和UPDATE語句進行賦值 462
10.4 合併數據 465
10.4.1 MERGE語句基礎 467
10.4.2 額外增加一個謂詞 470
10.4.3 多個WHEN子句 471
10.4.4 WHEN NOT MATCHED BY SOURCE子句 472
10.4.5 MERGE Values 473
10.4.6 MERGE與觸發器 474
10.5 OUTPUT子句 475
10.5.1 帶有OUTPUT的INSERT 476
10.5.2 帶有OUTPUT的DELETE 477
10.5.3 帶有OUTPUT的UPDATE 478
10.5.4 帶有OUTPUT的MERGE 480
10.5.5 可組合的DML 481
10.6 總結 482
第11章 查詢分區表 483
11.1 在SQL Server中進行分區 483
11.1.1 分區視圖 483
11.1.2 分區表 484
11.2 總結 496
第12章 圖、樹、層次結構和遞歸查詢 497
12.1 術語 497
12.1.1 圖 497
12.1.2 樹 498
12.1.3 層次結構 498
12.2 套用場景 498
12.2.1 員工組織圖 498
12.2.2 材料清單(BOM) 500
12.2.3 道路系統 502
12.3 疊代/遞歸 505
12.3.1 下屬 505
12.3.2 祖先 513
12.3.3 帶有路徑枚舉的子圖/子樹 516
12.3.4 排序 518
12.3.5 環 520
12.4 具體化路徑 523
12.4.1 維護數據 523
12.4.2 查詢 527
12.5 使用HIERARCHYID數據類型的具體化路徑 531
12.5.1 維護數據 532
12.5.2 查詢 537
12.5.3 使用HIERARCHYID的其他方面 540
12.6 嵌套集合 548
12.6.1 分配左值和右值 549
12.6.2 查詢 553
12.7 傳遞閉包(Transitive Closure) 555
12.7.1 有向無環圖 555
12.7.2 無向有環圖 559
12.8 總結 566
索引 567