內容簡介
本書完美結合資料庫理論與設計實踐,除了使用大量圖形來介紹資料庫系統理論、實體關係模型和正規化外,更以實例介紹資料庫設計。讀者不僅可以使用資料庫設計工具組繪製專業的實體關係圖,還可以將設計結果建成SQLServer資料庫,來驗證實體關係模型的資料庫設計理論。
本書適用於微軟SQLServer2012企業版、標準版以及Express版,是資料庫設計與開發人員或學校資料庫設計相關課程所規劃的實用教材和實訓指南。
圖書目錄
第1章資料庫系統 1
1.1資料庫系統基礎 1
1.1.1資料庫的定義 2
1.1.2數據建模 3
1.1.3資料庫環境的組件 5
1.2三層資料庫系統架構 7
1.2.1概念層 8
1.2.2外部層 9
1.2.3內部層 10
1.3資料庫架構 10
1.3.1三層資料庫架構 11
1.3.2資料庫架構之間的映射 13
1.3.3實體與邏輯數據獨立 14
1.4資料庫管理系統 15
1.5資料庫管理員 16
1.6資料庫系統的處理架構 18
1.6.1集中式處理架構 18
1.6.2分散式處理架構 19
1.7習題 20
第2章關係資料庫模型 21
2.1資料庫模型基礎 21
2.1.1層級式資料庫模型 22
2.1.2網路式資料庫模型 23
2.1.3關係資料庫模型 25
2.2數據結構 25
2.2.1關係表架構 25
2.2.2關係表實例 27
2.2.3定義域 28
2.2.4屬性值 29
2.2.5空值 29
2.2.6關係表的特性 30
2.3數據操作或運算 30
2.3.1關係型算術 30
2.3.2關係型計算 31
2.3.3SQL語言與關係型算術與
計算 32
2.4完整性約束 32
2.4.1鍵約束 32
2.4.2定義域約束 36
2.4.3實體完整性 36
2.4.4引用完整性 37
2.4.5其他完整性約束 39
2.5習題 40
第3章實體關係模型與規範化 41
3.1實體關係模型與實體關係圖 41
3.1.1實體關係模型的基礎 41
3.1.2實體關係圖的基礎 42
3.1.3實體類型 44
3.1.4關係類型 44
3.1.5關係約束 45
3.1.6屬性 48
3.1.7弱實體類型 49
3.2將實體關係圖轉換成
關係表架構 50
3.2.1將強實體類型轉換成
關係表 50
3.2.2將關係類型轉換成外鍵 50
3.2.3轉換多關係類型 53
3.2.4多值屬性轉換成關係表 53
3.2.5弱實體類型轉換成關係表 54
3.3關係表的規範化 55
3.3.1規範化的基礎 55
3.3.2第一範式(1NF) 56
3.3.3第二範式(2NF) 58
3.3.4第三範式(3NF) 59
3.3.5Boyce-Codd範式(BCNF) 61
3.4習題 62
第4章SQLServer資料庫管理系統 63
4.1SQLServer基礎 63
4.1.1SQLServer的版本演進 64
4.1.2SQLServer的組成元素 64
4.1.3SQLServer2012的版本 66
4.2安裝SQLServer2012 66
4.2.1SQLServer2012的
軟硬體需求 67
4.2.2SQLServer實例的安裝 68
4.3SQLServer管理工具的使用 72
4.3.1SQLServer配置管理器 72
4.3.2啟動ManagementStudio
集成管理工具 76
4.3.3ManagementStudio的
使用界面 77
4.4查看SQLServer資料庫對象 78
4.4.1系統資料庫 78
4.4.2資料庫對象 79
4.5新增SQLServer用戶賬戶 81
4.5.1SQLServer用戶管理的
基礎 81
4.5.2新增登錄 82
4.5.3新增資料庫用戶 83
4.6SQLServer在線上叢書 84
4.7習題 86
第5章資料庫設計工具的使用 87
5.1資料庫設計基礎 87
5.1.1資料庫系統開發的
生命周期 87
5.1.2資料庫設計方法論 88
5.1.3安裝資料庫設計工具 90
5.2啟動設計工具與新增模型 91
5.2.1啟動與結束
ToadDataModeler 91
5.2.2新增模型 92
5.3新建實體 93
5.3.1實體的圖形符號 93
5.3.2新建與刪除實體 94
5.3.3新建屬性和指定主鍵 96
5.3.4編輯屬性 98
5.3.5創建索引 98
5.4創建關係性 99
5.4.1關係性的圖形符號 100
5.4.2創建關係性 102
5.4.3編輯關係性 104
5.4.4設定引用完整性規則 105
5.4.5指定新的外鍵 106
5.5生成報告和SQL命令 106
5.5.1生成資料庫設計檔案 107
5.5.2生成SQL的DDL命令 109
5.6習題 110
第6章SQL語言與資料庫創建 111
6.1SQL語言基礎 111
6.1.1SQL結構化查詢語言 111
6.1.2SQL語言的基本語法 112
6.1.3SQL語言的命令種類 113
6.1.4在ManagementStudio中
執行SQL腳本檔案 114
6.2SQLServer的資料庫結構 116
6.2.1資料庫檔案與檔案組 116
6.2.2分頁 118
6.2.3範圍 118
6.3創建用戶資料庫 119
6.3.1在ManagementStudio中
創建資料庫 119
6.3.2使用T-SQL命令
創建資料庫 121
6.3.3創建多檔案組的資料庫 122
6.4修改用戶資料庫 124
6.4.1使用ManagementStudio修改
用戶資料庫 125
6.4.2資料庫選項 126
6.4.3使用T-SQL命令
修改用戶資料庫 128
6.5刪除用戶資料庫 130
6.6資料庫的分離與附加 131
6.6.1分離資料庫 131
6.6.2附加資料庫 132
6.6.3使用T-SQL命令分離與
附加資料庫 134
6.7習題 135
第7章創建數據表與完整性約束 137
7.1數據類型 137
7.1.1數值數據類型 137
7.1.2日期數據類型 139
7.1.3字元與位串流數據類型 140
7.1.4其他數據類型 142
7.1.5用戶自定義數據類型 143
7.2數據表的創建 143
7.2.1使用ManagementStudio
創建數據表 144
7.2.2使用T-SQL命令
創建數據表 146
7.2.3創建計算列 148
7.2.4稀疏欄位的使用 149
7.3創建完整性約束 149
7.3.1約束的基礎 149
7.3.2創建PRIMARYKEY
約束 150
7.3.3創建CHECK約束 151
7.3.4創建數據表的關係性 152
7.4修改與刪除數據表 155
7.4.1修改數據表名稱 156
7.4.2修改數據表欄位 156
7.4.3修改約束 157
7.4.4刪除數據表 158
7.5創建SQLServer資料庫
關係圖 159
7.6臨時表的創建 161
7.7習題 162
第8章SELECT語句的基本查詢 163
8.1SELECT查詢命令 163
8.2SELECT子句 164
8.2.1數據表的欄位 164
8.2.2欄位別名 166
8.2.3計算值欄位 166
8.2.4刪除重複記錄 168
8.2.5查詢前幾筆記錄 169
8.3FROM子句 170
8.4WHERE子句 170
8.4.1比較運算符 171
8.4.2邏輯運算符 172
8.4.3算術運算符 178
8.5聚合函式的摘要查詢 179
8.5.1COUNT()函式 179
8.5.2AVG()函式 180
8.5.3MAX()函式 181
8.5.4MIN()函式 181
8.5.5SUM()函式 182
8.6分組查詢GROUPBY子句 183
8.6.1GROUPBY子句 183
8.6.2HAVING子句 184
8.6.3WITHROLLUP和
WITHCUBE 185
8.6.4GROUPINGSETS子句 187
8.7排序ORDERBY子句 187
8.8習題 189
第9章SELECT語句的高級查詢 191
9.1SQL的多數據表查詢 191
9.2連線查詢 192
9.2.1連線查詢的種類 192
9.2.2內連線查詢 194
9.2.3外連線查詢 198
9.2.4交叉連線查詢 201
9.3集合運算查詢 202
9.3.1集合運算查詢的種類 202
9.3.2UNION並集查詢 203
9.3.3INTERSECT交集查詢 204
9.3.4EXCEPT差集查詢 204
9.4子查詢 205
9.4.1子查詢的基礎 205
9.4.2比較運算符的子查詢 206
9.4.3邏輯運算符的子查詢 206
9.5T-SQL高級查詢技巧 210
9.5.1OFFSET和FETCHNEXT的
分頁查詢 210
9.5.2NULL空值的處理 212
9.5.3CTE一般數據表表達式 213
9.6使用ManagementStudio設計
SQL查詢 216
9.6.1使用查詢設計工具 216
9.6.2編寫數據表的腳本 220
9.7習題 221
第10章新增、更新和刪除數據 223
10.1使用ManagementStudio
編輯記錄數據 223
10.2新增記錄 225
10.2.1INSERT命令 225
10.2.2行構造器 227
10.2.3INSERT/SELECT
命令 227
10.2.4SELECTINTO命令 228
10.3更新記錄 229
10.3.1UPDATE命令 229
10.3.2在UPDATE命令
使用子查詢 230
10.3.3合併更新 231
10.4刪除記錄 232
10.4.1DELETE命令 232
10.4.2子查詢與合併刪除 233
10.4.3TRUNCATETABLE
命令 234
10.5MERGE命令 235
10.6DML命令的OUTPUT
子句 238
10.7習題 240
第11章視圖的創建 241
11.1視圖基礎 241
11.1.1SQLServer視圖 241
11.1.2視圖的種類 242
11.1.3視圖的優缺點 242
11.2創建視圖 243
11.2.1使用ManagementStudio
創建視圖 243
11.2.2使用T-SQL命令
創建視圖 246
11.2.3從其他視圖創建視圖 251
11.3修改與刪除視圖 251
11.3.1修改視圖 251
11.3.2刪除視圖 253
11.4編輯視圖的內容 254
11.4.1在視圖中添加記錄 255
11.4.2在視圖中更新記錄 256
11.4.3在視圖中刪除記錄 257
11.5習題 258
第12章規劃與創建索引 259
12.1索引基礎 259
12.1.1索引簡介 260
12.1.2索引的種類 260
12.1.3M路搜尋樹與B樹 261
12.1.4SQLServer的
索引結構 262
12.2數據表的索引規劃 263
12.2.1索引的優缺點 264
12.2.2創建索引的注意事項 264
12.2.3選擇索引欄位 265
12.3SQLServer自動創建的
索引 265
12.3.1PRIMARYKEY欄位的
索引 265
12.3.2UNIQUE欄位的索引 267
12.4創建數據表的索引 267
12.4.1使用ManagementStudio
創建索引 268
12.4.2使用T-SQL命令
創建索引 271
12.5修改、重新生成與
刪除索引 272
12.5.1使用ManagementStudio
修改與重新生成數據表的
索引 272
12.5.2使用T-SQL命令修改與
重新生成索引 274
12.5.3刪除數據表的索引 275
12.6查看SQLServer的
執行計畫 275
12.7創建視圖與計算列的
索引 276
12.7.1創建計算列的索引 276
12.7.2創建視圖索引 278
12.8篩選索引與列存放區
索引 281
12.8.1篩選索引 281
12.8.2列存放區索引 282
12.9習題 284
第13章Transact-SQL程式設計 285
13.1Transact-SQL語言基礎 285
13.1.1Transact-SQL
資料庫語言 286
13.1.2Transact-SQL
腳本檔案 286
13.2批處理的使用 287
13.2.1批處理的基礎 287
13.2.2使用GO命令
定義批處理 287
13.3批註與自定義信息 288
13.3.1批註 288
13.3.2PRINT命令輸出
自定義信息 289
13.3.3USE命令轉換資料庫 289
13.4變數的聲明與使用 290
13.4.1聲明變數與變數初值 290
13.4.2指定變數值 291
13.4.3變數的範圍 295
13.4.4SQLServer的
系統函式 295
13.5表達式與運算符 296
13.5.1運算符的優先權 296
13.5.2T-SQL的運算符 297
13.5.3簡潔的T-SQL表達式 298
13.5.4類型轉換運算符 299
13.6流程控制結構 299
13.6.1BEGIN/END命令塊 300
13.6.2IF/ELSE條件
控制命令 300
13.6.3RETURN中斷
查詢命令 302
13.6.4CASE多條件函式 303
13.6.5WHILE循環控制 305
13.6.6GOTO跳轉至
指定標籤 307
13.6.7WAITFOR暫停執行 308
13.6.8IIF與CHOOSE函式 309
13.7錯誤處理 311
13.7.1錯誤處理結構 311
13.7.2使用RAISERROR()
函式產生錯誤信息 312
13.7.3THROW命令語句 314
13.8生成SQLServer腳本 315
13.8.1編寫資料庫的腳本 315
13.8.2生成SQLServer
腳本嚮導 317
13.9習題 320
第14章存儲過程與序列對象 321
14.1存儲過程基礎 321
14.1.1存儲過程簡介 321
14.1.2存儲過程的優點 322
14.2創建與執行存儲過程 323
14.2.1創建存儲過程 323
14.2.2執行存儲過程 325
14.2.3創建臨時存儲過程 327
14.3存儲過程的參數傳遞 328
14.3.1創建擁有參數的
存儲過程 328
14.3.2默認值參數 330
14.3.3嵌套調用 331
14.4存儲過程的返回值 332
14.4.1使用RETURN
關鍵字 332
14.4.2使用OUTPUT
關鍵字 334
14.5修改與刪除存儲過程 335
14.5.1修改存儲過程 335
14.5.2刪除存儲過程 336
14.6系統存儲過程 336
14.7創建與使用序列對象 338
14.7.1創建序列對象 338
14.7.2使用序列對象 341
14.7.3修改與刪除序列對象 342
14.8習題 343
第15章自定義函式與數據游標 345
15.1自定義函式基礎 345
15.2創建自定義函式 346
15.2.1標量值函式 347
15.2.2內聯表值函式 349
15.2.3多語句數據表值函式 351
15.3自定義函式的使用 352
15.3.1使用在條件約束或
欄位屬性 352
15.3.2創建計算欄位 354
15.3.3使用在流程控制與
表達式 355
15.3.4替換視圖和臨時表 355
15.4修改與刪除自定義函式 356
15.4.1修改自定義函式 356
15.4.2刪除自定義函式 357
15.5使用數據游標 357
15.5.1數據游標的基礎 357
15.5.2使用數據游標的步驟 358
15.5.3數據游標的系統函式 361
15.5.4使用數據游標更新與刪除
數據 363
15.5.5數據游標變數與參數 365
15.6習題 366
第16章觸發器 367
16.1觸發器基礎 367
16.2DML觸發器 368
16.2.1創建DML觸發器 369
16.2.2DML觸發器與約束 371
16.2.3創建AFTER觸發器 372
16.2.4創建INSTEADOF
觸發器 376
16.2.5使用UPDATE()函式 379
16.3修改、禁用與刪除DML
觸發器 380
16.3.1修改觸發器 381
16.3.2禁用觸發器 382
16.3.3刪除觸發器 383
16.4DDL觸發器 383
16.5習題 384
第17章事務處理與鎖定 387
17.1事務基礎 387
17.1.1事務簡介 387
17.1.2事務狀態 388
17.1.3事務停止執行的原因 389
17.1.4事務的四大特性 390
17.2事務處理 390
17.2.1SQLServer的
事務模式 390
17.2.2T-SQL語言的
事務處理 391
17.2.3嵌套事務 393
17.2.4事務儲存點 394
17.3並發控制 395
17.3.1並發控制的三種問題 395
17.3.2並發控制機制 396
17.3.3事務的隔離性等級 397
17.4數據鎖定 398
17.4.1鎖定層級 399
17.4.2鎖定模式 399
17.4.3鎖定模式兼容性 400
17.5死鎖問題 401
17.5.1死鎖的基礎 401
17.5.2指定死鎖的優先權 401
17.5.3預防死鎖的程式技巧 401
17.6習題 402
第18章SQLServer客戶端
程式開發與LINQ 403
18.1資料庫程式設計基礎 403
18.1.1資料庫程式設計的
程式語言 403
18.1.2資料庫程式設計的
操作 404
18.2中間件與ADO.NET組件 404
18.2.1微軟的中間件 404
18.2.2ADO.NET的基礎 405
18.3VisualBasic創建客戶端
程式 407
18.3.1DataSet對象與數據
綁定 407
18.3.2事務處理 411
18.4LINQ基礎 416
18.5使用LINQtoSQL 417
18.5.1創建LINQtoSQL
項目 417
18.5.2實現LINQtoSQL 419
18.6LINQ查詢字句 421
18.6.1Select子句 422
18.6.2Where子句 422
18.6.3OrderBy子句 423
18.6.4Join子句 423
18.7習題 424
第19章FILESTREAM、FileTable
與XML 425
19.1FILESTREAM檔案
數據流 425
19.1.1FILESTREAM檔案
數據流的基礎 425
19.1.2啟用FILESTREAM檔案
數據流的支持 426
19.1.3創建FILESTREAM
檔案組 427
19.1.4創建FILESTREAM
數據表 428
19.1.5訪問FILESTREAM
數據 429
19.2FileTable檔案數據表 430
19.2.1FileTable檔案數據表的
基礎 430
19.2.2創建FileTable檔案
數據表 431
19.2.3在FileTable檔案數據表
新增數據 433
19.3使用XML數據類型 435
19.3.1創建擁有XML欄位的
數據表 436
19.3.2XML對象的相關方法 438
19.4XML查詢語言 439
19.4.1XPath語言 439
19.4.2XQuery語言 445
19.4.3XQuery基本語法 447
19.4.4XQuery的FLWOR
表達式 448
19.4.5XQuery的條件表達式 450
19.4.6XQuery函式 451
19.5XML-DML操作語言 452
19.5.1插入XML元素 452
19.5.2更新XML元素 453
19.5.3刪除XML元素 453
19.6習題 454
第20章SQLServer全文搜尋 455
20.1SQLServer全文搜尋概述 455
20.1.1全文搜尋的基礎 456
20.1.2SQLServer整合全文
搜尋架構 456
20.1.3啟用SQLServer的
全文搜尋 457
20.2全文目錄的創建 458
20.2.1使用ManagementStudio
創建全文目錄 458
20.2.2使用T-SQL命令創建
全文目錄 460
20.3創建全文索引 460
20.3.1使用ManagementStudio
創建全文索引 460
20.3.2使用T-SQL命令
創建全文索引 464
20.4修改與刪除全文目錄與
索引 465
20.4.1修改全文目錄 466
20.4.2修改與禁用全文索引 467
20.4.3刪除全文索引 468
20.4.4刪除全文目錄 469
20.5填充的使用 469
20.5.1在SQLServer中
執行填充 469
20.5.2創建填充計畫 471
20.6使用全文搜尋 473
20.6.1使用FREETEXT
執行搜尋 473
20.6.2使用CONTAINS
執行單詞搜尋 474
20.6.3全文檢索的符合
程度搜尋 477
20.7習題 479