Microsoft SQL Server 2008技術內幕:T-SQL查詢

Microsoft SQL Server 2008技術內幕:T-SQL查詢

《Microsoft SQL Server 2008技術內幕:T-SQL查詢》是2010年9月由電子工業出版社出版的圖書,作者是本·甘(ItzikBen-Gan)。

基本介紹

  • 作者:本·甘(ItzikBen-Gan)
  • 譯者:成保棟  李保強
  • ISBN:9787121117350
  • 頁數:608頁
  • 定價:99.00元
  • 出版社:電子工業出版社
  • 出版時間:2010年9月
  • 副標題:T-SQL查詢
內容介紹,作者介紹,作品目錄,

內容介紹

本書全面深入地介紹了Microsoft SQL Server 2008中高級T-SQL查詢、性能最佳化等方面的內容,以及SQL Server 2008新增加的一些特性。主要內容包括SQL的基礎理論、查詢最佳化、查詢算法及複雜度,以及在使用子查詢、表表達式、排名函式、數據聚合和透視轉換、TOP和APPLY、數據修改、分區表、特殊數據結構等實際套用時會遇到的各種高級查詢問題和解決方案。
作為一本講述T-SQL高級查詢的專業圖書,本書旨在結合實踐中的各種常見問題,教讀者如何用SQL作為語言工具來思考問題,揭示基於集合查詢的強大威力。本書內容豐富、文字簡潔明快,列舉的實例具有一定的難度,而且實用性很強,可以把它們作為解決實際問題的標準模式。閱讀本書,可以充分地理解T-SQL語言和良好的編程實踐,學會如何編寫更加有效而強大的查詢語句。
本書適合有經驗的程式設計師和DBA閱讀,是在SQL Server 2008中編寫和最佳化SQL查詢的必備參考圖書。

作者介紹

Itzik Ben-Gan
Itzik Ben-Gan是Solid Quality Mentors的首席顧問和創始人。他從1999年以來一直是SQL Server方面的Microsoft MVP(最有價值的專業人員)。Itzik在世界各地從事T-SQL查詢、查詢最佳化和編程相關的培訓工作。Itzik是幾本關於T-SQL圖書的作者。他為SQL Server Magazine和MSDN撰寫過很多文章,在許多業界的專題會議上發表演講,包括Tech Ed、DevWeek、PASS和SQL Server Magazine Connections。
Lubor Kollar
Lubor Kollar 是微軟公司的集團項目經理(Group Program Manager)。從1996年以來,他一直從事SQL Server的開發組織。在加入微軟之前,他在IBM開發過各種DB2引擎。目前,Lubor正在領導SQL Server Customer Advisory Team(SQL CAT)從事世界範圍內最具挑戰性的SQL Server開發。SQL CAT負責維持客戶和SQL Server新版本發行之間的密切聯繫。SQL CAT的另一個主要目標是傳播從最先進的SQL Server開發中學習到的智慧。公眾接觸SQL CAT的一個主要渠道是Web網站。
Dejan Sarka
Dejan Sarka主要從事資料庫和商業智慧型套用方面的開發。除了做項目,他把大約一半的時間都用於教學和諮詢工作。他經常在一些最重要的國際會議上發表演講,包括PASS、TechEd和SqlDevCon。他也是微軟一些區域性事件中不可或缺的人物,例如NT Conference(微軟在中東歐最大的會議)。他是Slovenian SQL Server和.NET User Group的創始人。Dejan是7本關於資料庫和SQL Server圖書的主要作者、合著者或客串作者。 Dejan也講授Solid Quality learning的兩門課程:Data Modeling Essentials 和 Data Mining with SQL Server 2008。
Steve Kass
Steve Kass是University of Wisconsin 大學畢業的數學專業的博士,目前是Drew University大學數學系和計算機系的教授,從1988年以來一直從事教學。他於2002年成為SQL Server Microsoft MVP,為SQL Server Magazine撰寫文章,在SQL Server Magazine Connections上發表演講,是New York City區域的用戶組成員。Steve已經在Complex Systems 和 the Journal of Algebra上發表過一些數學論文。

作品目錄

目錄
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

相關詞條

熱門詞條

聯絡我們