SQL權威指南(第4版)

SQL權威指南(第4版)

《SQL權威指南(第4版)》為SQL名著中文版,由世界著名的資料庫專家Joe Celko編著,主要講解了資料庫設計、最佳化、操作等方面的內容。

基本介紹

  • 作者:Joe Celko
  • 譯者:朱 巍  鐘 鳴 王 淵
  • ISBN:9787115296634
  • 頁數:652
  • 定價:99.00元
  • 出版社:人民郵電出版社
  • 出版時間:2013-1
  • 裝幀:平裝
內容介紹,作者介紹,作品目錄,

內容介紹

《SQL權威指南(第4版)》為SQL名著中文版,兼顧技術與實踐,全面細緻介紹高級技術,致力於打造SQL編程專家。《SQL權威指南(第4版)》闡釋了資料庫設計、最佳化和操作的各方面內容,提供了成為SQL編程專業人士所需的技術與技巧、針對新舊挑戰性難題的優秀解決方案、專業的思考方式(以保證程式的正確性與高效性),並涉及了資料庫設計與規範化、SQL數據類型、查詢、分組、集合操作、最佳化等主題。另外,JoeCelko(塞科)以通俗易懂的語言敘述了一些關鍵問題,比如避免使用過多NULL的原因及查詢最佳化方式等。《SQL權威指南(第4版)》適合中高級SQL編程人員學習參考。

作者介紹

Joe Celko 世界著名的資料庫專家,曾擔任ANSl SQL標準委員會成員達10年之久,參與了SQL-89和SQL-92標準的制定,是世界上讀者數量最多的SQL圖書作者之一。他曾撰寫過一系列專欄,並通過他的新聞組支持和推動了資料庫編程技術以及ANSl/ISO標準的發展。除本書外,他還撰寫了多部SQL經典著作,包括《SQL編程風格》、《SQL解惑》和《SQL權威指南》,上述作品的中文版均已由人民郵電出版社出版。

作品目錄

第1章  資料庫與檔案系統 1
1.1  實體表 3
1.2  關係表 3
1.3  行與記錄 3
1.4  列與欄位 4
1.5  模式對象 5
1.6  CREATE SCHEMA語句 6
第2章  事務與並發控制 8
2.1  會話 8
2.2  事務與ACID 9
2.2.1  原子性 9
2.2.2  一致性 10
2.2.3  隔離性 10
2.2.4  持久性 10
2.3  並發控制 11
2.3.1  三種現象 11
2.3.2  隔離級別 12
2.4  保守式並發控制 13
2.5  快照隔離與樂觀式並發 14
2.6  邏輯並發控制 16
2.7  死鎖與活鎖 16
第3章  資料庫模式對象 17
3.1  CREATE SCHEMA語句 17
3.2  CREATE PROCEDURE、CREATE FUNCTION以及CREATE TRIGGER語句 18
3.3  CREATE DOMAIN語句 18
3.4  創建序列 19
3.5  創建斷言 19
3.5.1  為模式級約束使用視圖 20
3.5.2  為約束使用主鍵和斷言 23
3.6  字元集相關結構 25
3.6.1  創建字元集 25
3.6.2  創建排序規則 26
3.6.3  創建翻譯 26
第4章  定位數據和特殊數值 27
4.1  顯式的物理定位器 27
4.1.1  ROWID和物理磁碟地址 27
4.1.2  標識列 27
4.2  生成的標識符 30
4.2.1  GUID 30
4.2.2  UUID 31
4.3  序列生成函式 32
4.4  預分配值 33
4.5  特殊序列 34
4.5.1  Series表 34
4.5.2  素數 35
4.5.3  隨機順序值 37
4.5.4  其他序列 39
第5章 基礎表和相關元素 40
5.1  CREATE TABLE語句 41
5.1.1  列約束 41
5.1.2  DEFAULT子句 43
5.1.3  NOT NULL約束 43
5.1.4  CHECK()約束 44
5.1.5  UNIQUE以及PRIMARY KEY約束 46
5.1.6  REFERENCES子句 47
5.2  嵌套UNIQUE約束 49
5.2.1  重疊鍵 52
5.2.2  單列唯一性與多列唯一性 54
5.3  CREATE ASSERTION約束 62
5.4  臨時表 62
5.5  表操作 63
5.5.1  DROP TABLE <表名> 64
5.5.2  ALTER TABLE 64
5.6  避免屬性分割 65
5.6.1  表級屬性分割 66
5.6.2  行級屬性分割 67
5.7  在DDL中表現類層次關係 68
5.8  顯式物理定位器 70
5.9  自增列 70
5.9.1  ROWID與物理磁碟地址 72
5.9.2  標識列 72
5.9.3  對比標識列和序列 73
5.10  生成標識符 73
5.10.1  行業標準的唯一標識符 73
5.10.2  國防部的唯一標識符 74
5.10.3  序列生成函式 75
5.10.4  唯一值生成器 75
5.10.5  驗證源 76
5.11  關於重複行 77
5.12  其他模式對象 78
5.13  臨時表 79
5.14  CREATE DOMAIN語句 79
5.15  CREATE TRIGGER語句 80
5.16  CREATE PROCEDURE語句 80
5.17  DECLARE CURSOR語句 81
5.17.1  如何使用游標 83
5.17.2  位置更新及刪除語句 84
第6章 過程式、半過程式以及聲明式編程 86
6.1  軟體工程基本原理 86
6.2  內聚性 86
6.3  耦合度 87
6.4  大跨越 88
6.4.1  一個常見的錯誤 88
6.4.2  一處改進 89
6.5  重寫技巧 94
6.5.1  數據表和生成器代碼 95
6.5.2  用計算替代查找 96
6.5.3  斐波那契數列 96
6.6  謂詞函式 97
6.7  過程化分解和邏輯分解 98
6.7.1  過程式分解方案 99
6.7.2  邏輯分解方案 100
第7章 過程式結構 102
7.1  創建過程 102
7.2  創建觸發器 103
7.3  游標 106
7.3.1  DECLARE CURSOR語句 106
7.3.2  ORDER BY子句 107
7.3.3  OPEN語句 113
7.3.4  FETCH語句 113
7.3.5  CLOSE語句 114
7.3.6  DEALLOCATE語句 114
7.3.7  如何使用游標 114
7.3.8  位置更新及刪除語句 117
7.4  序列 117
7.5  生成列 118
7.6  表函式 119
第8章 輔助表 121
8.1  序列表 121
8.1.1  對列表進行枚舉 122
8.1.2  將序列映射為循環 124
8.1.3  取代疊代循環 125
8.2  查找輔助表 127
8.2.1  簡單轉換輔助表 128
8.2.2  多轉換值輔助表 128
8.2.3  多參數輔助表 129
8.2.4  範圍輔助表 129
8.2.5  層次結構輔助表 130
8.2.6  “一個真正的查找表” 131
8.3  輔助函式表 133
8.3.1  用輔助表求反函式 134
8.3.2  用輔助函式表進行插值 141
8.4  全局常量表 143
8.4.1  預分配值 143
8.4.2  素數 144
8.4.3  斐波那契數列 144
8.4.4  隨機順序值 145
8.5  把過程代碼轉換成表時的注意事項 147
第9章 規範化 152
9.1  函式依賴和多值依賴 154
9.2  第一範式(1NF) 154
9.3  第二範式(2NF) 158
9.4  第三範式(3NF) 159
9.5  基本關鍵字範式(EKNF) 160
9.6  Boyce-Codd範式(BCNF) 161
9.7  第四範式(4NF) 162
9.8  第五範式(5NF) 163
9.9  域-鍵範式(DKNF) 164
9.10  規範化的實用技巧 171
9.11  鍵類型 172
9.11.1  自然鍵 172
9.11.2  人工鍵 172
9.11.3  對外暴露的物理定位器 173
9.12  非規範化的實用技巧 174
第10章 SQL的數值數據 180
10.1  數值類型 180
10.2  數值類型的轉換 183
10.2.1  數值的捨入和截斷 183
10.2.2  CAST()函式 185
10.3  四則運算函式 185
10.4  算術運算和NULL 186
10.5  值與NULL的相互轉換 187
10.5.1  NULLIF()函式 187
10.5.2  COALESCE()函式 187
10.6  數學函式 189
10.6.1  數學運算符 189
10.6.2  指數函式 191
10.6.3  標量函式 192
10.6.4  將數值轉換為文字 192
10.7  唯一值生成器 193
10.7.1  存有間隙的序列 194
10.7.2  預分配數值 194
10.8  IP位址 195
10.8.1  CHAR(39)存儲 195
10.8.2  二進制存儲 196
10.8.3  使用多個單獨的SMALLINT 196
第11章 SQL中的時間數據類型 197
11.1  關於日曆標準的說明 197
11.2  SQL時間數據類型 199
11.2.1  時間的內部表示 200
11.2.2  日期格式標準 200
11.2.3  處理時間戳 201
11.2.4  處理時間 202
11.2.5  時區和夏令時 203
11.3  INTERVAL數據類型 204
11.4  時間算術 206
11.5  時間數據模型的特性 207
11.5.1  為持續時間建模 207
11.5.2  持續時間之間的關係 209
第12章 字元數據類型 211
12.1  SQL字元串問題 211
12.1.1  字元串相等問題 212
12.1.2  字元串排序問題 212
12.1.3  字元串分組問題 213
12.2  標準字元串函式 213
12.3  常見的廠商擴展 214
12.4  Cutter表 222
12.5  嵌套替換 223
第13章 NULL:SQL中的缺失數據 224
13.1  空表和缺失表 225
13.2  列中的缺失值 225
13.3  上下文和缺失值 226
13.4  比較NULL 227
13.5  NULL和邏輯 228
13.5.1  子查詢謂詞中的NULL 229
13.5.2  邏輯值謂詞 231
13.6  算術中的NULL值 231
13.7  函式中的NULL值 231
13.8  NULL和宿主語言 231
13.9  NULL的設計忠告 232
13.10  關於多NULL值的說明 234
第14章 多列數據元素 237
14.1  距離函式 237
14.2  在SQL中存儲IPv4地址 239
14.2.1  使用單個VARCHAR(15)列表示IPv4地址 239
14.2.2  使用一個INTEGER列表示IPv4地址 239
14.2.3  使用四個SMALLINT列表示IPv4地址 240
14.3  在SQL中存儲IPv6地址 241
14.4  貨幣與其他單位的轉換 242
14.5  社會安全號 242
14.6  有理數 245
第15章 表操作 246
15.1  DELETE FROM語句 246
15.1.1  DELETE FROM子句 246
15.1.2  WHERE子句 247
15.1.3  根據輔助表中的數據執行刪除 249
15.1.4  在相同表內進行刪除 250
15.1.5  不用聲明引用完整性在多個表中進行刪除 252
15.2  INSERT INTO語句 253
15.2.1  INSERT INTO子句 253
15.2.2  插入的性質 254
15.2.3  批量裝載和卸載實用程式 255
15.3  UPDATE語句 255
15.3.1  UPDATE子句 255
15.3.2  WHERE子句 256
15.3.3  SET子句 256
15.3.4  利用第二張表進行更新 257
15.3.5  在UPDATE中使用CASE表達式 259
15.4  常見廠商擴展的缺陷說明 261
15.5  MERGE語句 263
第16章 比較或theta操作 266
16.1  數據類型轉換 266
16.1.1  日期顯示格式 267
16.1.2  其他顯示格式 268
16.2  SQL中的行比較 268
16.3  IS [NOT] DISTINCT FROM操作符 270
第17章 值化謂詞 271
17.1  IS NULL謂詞 271
17.2  IS [NOT] {TRUE | FALSE | UNKNOWN}謂詞 272
17.3  IS [NOT] NORMALIZED謂詞 273
第18章 CASE表達式 275
18.1  CASE表達式 275
18.1.1  COALESCE()和NULLIF()函式 278
18.1.2  帶GROUP BY的CASE表達式 278
18.1.3  CASE、CHECK()子句和邏輯蘊涵 280
18.2  子查詢表達式和常量 283
18.3  Rozenshtein特徵函式 283
第19章 LIKE與SIMILAR TO謂詞 285
19.1  使用模式的技巧 285
19.2  NULL值和空字元串的謂詞結果 287
19.3  LIKE並不是相等 287
19.4  用聯結消除LIKE謂詞 287
19.5  CASE表達式和LIKE搜尋條件 288
19.6  SIMILAR TO謂詞 289
19.7  字元串的有關技巧 291
19.7.1  字元串的字元內容 291
19.7.2  搜尋與聲明一個串 291
19.7.3  創建字元串中的索引 292
第20章 BETWEEN和OVERLAPS謂詞 293
20.1  BETWEEN謂詞 293
20.1.1  NULL值的結果 294
20.1.2  空集的結果 294
20.1.3  程式設計技巧 295
20.2  OVERLAPS謂詞 296
第21章 [NOT] IN()謂詞 305
21.1  最佳化IN()謂詞 306
21.2  用IN()謂詞替換OR 309
21.3  NULL和IN()謂詞 309
21.4  IN()謂詞和引用約束 312
21.5  IN()謂詞和標量查詢 313
第22章 EXISTS()謂詞 315
22.1  EXISTS和NULL 316
22.2  EXISTS和INNER JOIN 318
22.3  NOT EXISTS和OUTER JOIN 318
22.4  EXISTS()和量詞 319
22.5  EXISTS()和引用約束 320
22.6  EXISTS和三值邏輯 320
第23章 量化子查詢謂詞 323
23.1  標量子查詢比較 323
23.2  量詞和缺失數據 324
23.3  ALL謂詞和極值函式 326
23.4  UNIQUE謂詞 327
23.5  DISTINCT謂詞 328
第24章 簡單SELECT語句 329
24.1  SELECT語句執行順序 329
24.2  單級SELECT語句 329
第25章 高級SELECT語句 336
25.1  關聯子查詢 336
25.2  嵌入的INNER JOIN 340
25.3  OUTER JOIN 341
25.3.1  OUTER JOIN的一些歷史 342
25.3.2  NULL和OUTER JOIN 346
25.3.3  NATURAL JOIN與搜尋式OUTER JOIN 347
25.3.4  OUTER JOIN自聯結 348
25.3.5  兩次或多次OUTER JOIN 349
25.3.6  OUTER JOIN和聚合函式 351
25.3.7  FULL OUTER JOIN 351
25.4  UNION JOIN操作符 352
25.5  標量SELECT表達式 353
25.6  舊JOIN語法與新JOIN語法 354
25.7  受約束的JOIN 355
25.7.1  庫存和訂單 355
25.7.2  穩定的婚姻 356
25.7.3  將球裝入盒中 360
25.8  Codd博士的T聯結 363
25.8.1  Stobbs方案 366
25.8.2  Pieere方案 367
25.8.3  參考文獻 368
第26章 虛擬表:視圖、派生表、CTE及MQT 369
26.1  查詢中的視圖 369
26.2  可更新視圖和唯讀視圖 370
26.3  視圖的類型 371
26.3.1  單表投影和限制 371
26.3.2  計算列 371
26.3.3  轉換列 372
26.3.4  分組視圖 372
26.3.5  聯結視圖 373
26.3.6  視圖的聯結 374
26.3.7  嵌套視圖 375
26.4  資料庫引擎如何處理視圖 376
26.4.1  視圖列列表 376
26.4.2  視圖物化 376
26.4.3  內嵌文本擴展 377
26.4.4  指針結構 378
26.4.5  索引和視圖 379
26.5  WITH CHECK OPTION子句 379
26.6  刪除視圖 383
26.7  視圖與臨時表的使用提示 384
26.7.1  使用視圖 384
26.7.2  使用臨時表 385
26.7.3  用視圖扁平化表 385
26.8  使用派生表 387
26.8.1  FROM子句中的派生表 387
26.8.2  包含VALUES構造器的派生表 388
26.9  公用表表達式 389
26.10  遞歸公用表表達式 390
26.10.1  簡單增量 391
26.10.2  簡單樹遍歷 391
26.11  物化查詢表 392
第27章 在查詢中分區數據 393
27.1  覆蓋和分區 393
27.1.1  按範圍分區 393
27.1.2  單列範圍表 394
27.1.3  用函式進行分區 394
27.1.4  按順序分區 395
27.1.5  使用視窗函式進行分區 397
27.2  關係除法 398
27.2.1  帶餘除法 399
27.2.2  精確除法 400
27.2.3  性能說明 400
27.2.4  Todd的除法 401
27.2.5  帶JOIN的除法 403
27.2.6  用集合操作符進行除法 403
27.3  Romley除法 404
27.4  RDBMS中的布爾表達式 407
27.5  FIFO和LIFO子集 408
第28章 分組操作 411
28.1  GROUP BY子句 411
28.2  GROUP BY和HAVING 412
28.3  多層次聚合 415
28.3.1  多級聚合的分組視圖 415
28.3.2  多層次聚合的子查詢表達式 416
28.3.3  多層聚合的CASE表達式 417
28.4  在計算列上分組 418
28.5  成對分組 418
28.6  排序和GROUP BY 420
第29章 簡單聚合函式 422
29.1  COUNT()函式 422
29.2  SUM()函式 426
29.3  AVG()函式 427
29.3.1  空組的平均數 428
29.3.2  多個列上的平均值 429
29.4  極值函式 430
29.4.1  簡單的極值函式 430
29.4.2  廣義極值函式 432
29.4.3  多條件極值函式 438
29.4.4  GREATEST()和LEAST()函式 439
29.5  LIST()聚合函式 442
29.5.1  使用遞歸CTE的LIST聚合函式 442
29.5.2  交叉表的LIST()函式 443
29.6  PRD()聚合函式 443
29.6.1  通過表達式實現PRD()函式 444
29.6.2  通過對數實現PRD()聚合函式 445
29.7  位運算符聚合函式 447
29.7.1  OR位運算符聚合函式 448
29.7.2  AND位運算符聚合函式 449
第30章 高級分組、視窗聚合以及SQL中的OLAP 450
30.1  星模式 450
30.2  GROUPING操作符 451
30.2.1  GROUP BY GROUPING SET 451
30.2.2  ROLLUP 452
30.2.3  CUBE 452
30.2.4  SQL的OLAP示例 453
30.3  視窗子句 454
30.3.1  PARTITION BY子句 454
30.3.2  ORDER BY子句 454
30.3.3  視窗幀子句 455
30.4  視窗化聚合函式 456
30.5  序號函式 457
30.5.1  行號 457
30.5.2  RANK()和DENSE_RANK() 457
30.5.3  PERCENT_RANK()和CUME_DIST() 457
30.5.4  一些示例 458
30.6  廠商擴展 460
30.6.1  LEAD和LAG函式 460
30.6.2  FIRST和LAST函式 461
30.7  一點歷史知識 462
第31章 SQL中的描述性統計 463
31.1  眾數 463
31.2  AVG()函式 464
31.3  中值 464
31.3.1  中值編程問題 465
31.3.2  Celko第一中值 466
31.3.3  Date第二中值 467
31.3.4  Murchison中值 468
31.3.5  Celko第二中值 468
31.3.6  Vaughan提出的套用視圖的中值 470
31.3.7  使用特徵函式的中值 470
31.3.8  Celko第三中值 473
31.3.9  Ken Henderson的中值 475
31.3.10  OLAP中值 476
31.4  方差和標準偏差 478
31.5  平均偏差 479
31.6  累積統計 479
31.6.1  運行差分 479
31.6.2  累積百分比 481
31.6.3  序號函式 483
31.6.4  五分位數和相關統計 486
31.7  交叉表 486
31.7.1  通過交叉聯結建立交叉表 489
31.7.2  通過外聯結建立交叉表 490
31.7.3  通過子查詢建立交叉表 490
31.7.4  使用CASE表達式建立交叉表 491
31.8  調和平均數和幾何平均數 491
31.9  SQL中的多變數描述統計數據 492
31.9.1  協方差 492
31.9.2  皮爾森相關係數r 493
31.9.3  多變數描述統計中的NULL值 493
31.10  SQL:2006中的統計函式 494
31.10.1  方差、標準偏差以及描述統計 494
31.10.2  相關性 494
31.10.3  分布函式 495
第32章 子序列、區域、順串、間隙及島嶼 496
32.1  查找尺寸為n的子區域 496
32.2  為區域編號 497
32.3  查找最大尺寸的區域 499
32.4  界限查詢 502
32.5  順串和序列查詢 503
32.6  數列的求和 506
32.7  交換和平移列表值 509
32.8  壓縮一列數值 510
32.9  摺疊一列數值 510
32.10  覆蓋 511
第33章 SQL中的矩陣 516
33.1  通過命名列進行訪問的數組 516
33.2  通過下標列進行訪問的數組 519
33.3  SQL的矩陣操作 520
33.3.1  矩陣等式 521
33.3.2  矩陣加法 521
33.3.3  矩陣乘法 522
33.3.4  矩陣轉置 523
33.3.5  行排序及列排序 524
33.3.6  其他矩陣操作 524
33.4  將表扁平化為數組 524
33.5  比較表格式中的數組 526
第34章 集合操作 528
34.1  UNION和UNION ALL 528
34.1.1  執行順序 530
34.1.2  混合使用UNION和UNION ALL操作符 531
34.1.3  對同一表中的列執行UNION操作 531
34.2  INTERSECT和EXCEPT 531
34.2.1  沒有NULL值和重複行時的INTERSECT和EXCEPT操作 534
34.2.2  存在NULL值和重複行時的INTERSECT和EXCEPT操作 535
34.3  關於ALL和SELECT DISTINCT的一個說明 536
34.4  相等子集和真子集 536
第35章 子集 538
35.1  表中的每個第n項 538
35.2  從表中選取隨機行 539
35.3  CONTAINS操作符 543
35.3.1  真子集操作符 543
35.3.2  表的相等操作 544
35.4  序列間隙 547
35.5  重疊區間的覆蓋問題 549
35.6  選取有代表性的子集 552
第36章 SQL中的樹和層次結構 556
36.1  鄰接列表模型 557
36.1.1  複雜約束 557
36.1.2  查詢的過程遍歷 559
36.1.3  更改表 560
36.2  路徑枚舉模型 560
36.2.1  查找子樹和節點 561
36.2.2  找出層次和後代 561
36.2.3  刪除節點和子樹 562
36.2.4  完整性約束 562
36.3  層次結構的嵌套集合模型 563
36.3.1  計數特性 564
36.3.2  包含特性 564
36.3.3  下級節點 565
36.3.4  層次聚合 566
36.3.5  刪除節點和子樹 566
36.3.6  將鄰接列錶轉換為嵌套集合模型 567
36.4  其他表現樹和層次結構的模型 569
第37章 SQL中的圖 570
37.1  鄰接列表模型圖 570
37.1.1  SQL和鄰接列表模型 571
37.1.2  路徑與CTE 572
37.1.3  環狀圖 577
37.1.4  鄰接矩陣模型 579
37.2  分割嵌套集合模型表示的圖節點 580
37.2.1  圖中的所有節點 581
37.2.2  路徑端點 581
37.2.3  可達節點 582
37.2.4  邊 582
37.2.5  入度和出度 582
37.2.6  源節點、匯聚節點、孤立節點和內部節點 583
37.2.7  將無環圖轉化為嵌套集合 584
37.3  多邊形中的點 586
37.4  圖論參考書目 588
第38章 時間查詢 589
38.1  時間數學 589
38.2  個性化日曆 591
38.3  時間序列 592
38.3.1  時間序列中的間隙 593
38.3.2  連續時間段 595
38.3.3  相鄰事件中缺失的時間 600
38.3.4  查找日期 603
38.3.5  時間的起始點和結束點 604
38.3.6  開始時間和結束時間 605
38.4  儒略日 606
38.5  其他時間函式 609
38.6  星期 610
38.7  在表中對時間建模 612
38.8  日曆輔助表 614
38.9  2000年問題 616
38.9.1  零 616
38.9.2  閏年 617
38.9.3  千年問題 618
38.9.4  舊數據中的怪異日期 619
38.9.5  後果 619
第39章 最佳化SQL 620
39.1  訪問方法 621
39.1.1  順序訪問 621
39.1.2  索引訪問 621
39.1.3  散列索引 622
39.1.4  位向量索引 622
39.2  如何建立索引 622
39.2.1  使用簡單查詢條件 623
39.2.2  簡單字元串表達式 624
39.2.3  簡單時間表達式 625
39.3  提供額外信息 626
39.4  謹慎建立多列索引 627
39.5  考察IN謂詞 627
39.6  避免UNION 629
39.7  聯結勝於嵌套查詢 629
39.8  使用更少的語句 630
39.9  避免排序 631
39.10  避免交叉聯結 634
39.11  了解最佳化器 635
39.12  在模式更改後重編譯靜態SQL 636
39.13  臨時表有時能帶來方便 637
39.14  更新統計數據 639
39.15  不要迷信較新的特性 639
參考文獻 642

相關詞條

熱門詞條

聯絡我們