自本書第1版出版以來,已經多次印刷,受到了廣大師生的普遍歡迎和喜愛。根據讀者的反饋以及在教學實踐中的體會,我們決定出版第2版,同時開發(fā)基于此教材的在線課程,以感謝讀者的厚愛。
數據庫技術是計算機技術的重要組成部分,也是發(fā)展最快、應用最廣的計算機技術之一。數據庫自20世紀60年代中后期出現以來,經歷了五十多年的發(fā)展,目前日臻完善,造就了諸多的輝煌,出現了Oracle、DB2、SQL Server等十分成熟、深受用戶喜愛的數據庫管理軟件,帶動了一系列的軟件產業(yè)。如今,不管是在工作中還是在生活和學習中,數據庫已經成為各類信息系統(tǒng)和應用系統(tǒng)的技術基礎,與人們的生活息息相關。隨著新一代信息技術的發(fā)展,數據庫技術將發(fā)揮著更重要的基礎作用。
“數據庫原理”課程是計算機科學與技術專業(yè)和相近專業(yè)的主干課程。這門課程的主要特點是實踐性強,同時又要求具備良好的理論基礎。根據多年的教學體會,我們發(fā)現有的學生學完這門課后,仍然難以勝任數據庫設計、創(chuàng)建、開發(fā)、維護和管理的基本工作,覺得所學的數據庫知識比較混亂。出現這種現象的原因可能是多方面的,但我們認為其主要原因之一就是學生類型和教材的搭配問題。高校人才培養(yǎng)的類型大致可以分為研究型人才和應用型人才。應該說,后者所占的比例比較高,他們希望能掌握技術性、實踐性比較強的數據庫知識,以便為他們畢業(yè)后的工作提供技術和方法支持。為此,本書第1版注重于技術型、應用型人才的培養(yǎng)。雖然第1版也提供了必要的理論知識,但其理論部分相對比較薄弱,尤其在關系規(guī)范化理論部分,尚未形成系統(tǒng)的理論知識體系。
根據以上考慮,本著“厚基礎,重實踐”的原則,面向培養(yǎng)基于系統(tǒng)理論知識的應用型、研究型人才,我們著手編著了本書的第2版。與第1版相比,我們在第2版豐富和完善了理論部分,特別是關系規(guī)范化理論部分,使之自成一體;同時,在實踐部分增加了游標的相關知識,這樣就形成了從數據庫的理論設計到實踐開發(fā)和維護的一整套方案。此外,在第2版中刪除了介紹SQL Server安裝的部分。為了避免內容的擴散,在第1和第2版中所闡述的數據庫知識僅依托一種數據庫管理系統(tǒng)SQL Server。在第2版中,所涉及的SQL代碼都是在當前最新版本SQL Server 2017中調試完成的(實際上,絕大部分SQL代碼也適用于其他版本的SQL Server)。本書第2版共分為13章,第1章介紹數據庫系統(tǒng)涉及的基本概念,第2章介紹關系數據庫的理論基礎,尤其系統(tǒng)闡述了關系規(guī)范化理論,第3章介紹數據庫的設計技術和方法,第4章比較系統(tǒng)地介紹了數據庫查詢語言SQL,以及數據表創(chuàng)建方法,第5章介紹TransactSQL程序設計方法,第6章介紹如何創(chuàng)建數據庫和管理數據庫,第7章介紹索引與視圖的創(chuàng)建、管理和使用方法,第8章介紹存儲過程和觸發(fā)器的開發(fā)和使用方法,第9章介紹游標的創(chuàng)建和使用方法,這是第2版新增加的另一部分,第10章介紹事務管理及并發(fā)控制的技術和方法,第11章和第12章分別介紹如何實現和保證數據的完整性和安全性,第13章比較全面地介紹數據庫的備份方法及其恢復技術。
本書的特點是,理論部分由淺入深、通俗易懂,在內容上提供了翔實而系統(tǒng)的數據庫設計和優(yōu)化理論;方法和技術部分覆蓋面廣,具有良好的可操作性,所述內容全部通過調試運行,涵蓋數據庫開發(fā)所需的核心技術和方法。本書是數據庫理論知識和實踐性知識按照適當比例有機結合的數據庫教材,實例翔實,邏輯性強,結構清晰,條理清楚,重點突出。每一章后面都配有適量的習題(包括上機題)以及習題答案,供教學和學習參考使用。
本書適用于研究型本科院校和應用型本科院校,可作為計算機專業(yè)及相近專業(yè)的數據庫課程教材,也可以作為數據庫愛好者和初學者的學習教材,同時也可以為從事數據庫系統(tǒng)開發(fā)的人員提供參考。本書提供所有的源代碼,書中所有的實例代碼以及面向工程教育認證的教學大綱和PPT課件都可以從清華大學出版社網站上免費下載。
全書由蒙祖強教授執(zhí)筆,許嘉副教授修訂了第1章和第2章并對全書進行審閱。此外,參與本書編寫、資料整理和調試程序的還有秦亮曦、孫宇、梁斌梅、姚怡等。
感謝所有關心和支持本書編寫和出版的人員,包括廣西大學李陶深教授、陳寧江教授以及一些老師、研究生和技術人員,同時感謝清華大學出版社為本書的編寫和出版提供的幫助。本書參考了相關文獻和網絡資源,在此,對這些資料的著者們表示衷心感謝。
蒙祖強許嘉2020年3月
第1章數據庫概述/1
1.1數據管理技術1
1.1.1數據管理的概念1
1.1.2數據管理技術的發(fā)展過程2
1.2大數據分析與管理技術5
1.2.1關于大數據5
1.2.2大數據存儲技術7
1.2.3大數據處理模式9
1.2.4大數據處理的基本流程11
1.3數據庫系統(tǒng)概述12
1.3.1數據庫系統(tǒng)13
1.3.2數據庫系統(tǒng)的模式結構14
1.3.3數據庫管理系統(tǒng)15
1.4數據模型16
1.4.1數據模型的基本要素17
1.4.24種主要的數據模型17
1.5概念模型的描述21
1.5.1概念模型21
1.5.2實體及其聯(lián)系21
1.5.3ER圖23
習題25
第2章關系數據庫理論基礎/27
2.1關系模型27
2.1.1關系模型的數據結構——關系27
2.1.2關系操作30
2.1.3關系的完整性約束30
2.2關系代數33
2.2.1基本集合運算33
2.2.2關系運算34
2.3關系數據庫37
2.3.1關系數據庫的概念38
2.3.2關系數據庫的特點38
2.4函數依賴39
2.4.1函數依賴的概念39
2.4.2函數依賴的性質(Armstrong公理系統(tǒng))41
2.4.3候選碼和主碼42
2.4.4屬性集閉包與候選碼求解方法44
2.4.5依賴函數的等價及最小函數依賴集47
2.5關系模式的范式50
2.5.1第一范式(1NF)50
2.5.2第二范式(2NF)53
2.5.3第三范式(3NF)57
2.5.4BC范式(BCNF)60
2.6關系模式的分解和規(guī)范化64
2.6.1關系模式的規(guī)范化64
2.6.2關系模式的分解65
2.7關系規(guī)范化理論綜合分析69
習題72
數據庫原理與應用(第2版)目錄第3章數據庫設計技術/77
3.1數據庫設計概述77
3.2需求分析78
3.2.1系統(tǒng)調研過程78
3.2.2需求分析的方法79
3.2.3形成數據字典83
3.3數據庫結構設計85
3.3.1概念結構設計85
3.3.2邏輯結構設計89
3.3.3物理結構設計91
3.4數據庫的實施、運行和維護93
3.4.1數據庫實施93
3.4.2數據庫系統(tǒng)的運行和維護94
習題95
第4章數據庫查詢語言SQL/98
4.1SQL概述98
4.1.1SQL的發(fā)展98
4.1.2SQL的特點99
4.1.3SQL的基本功能100
4.2SQL的數據類型100
4.2.1字符串型101
4.2.2數值型101
4.2.3日期時間型102
4.2.4貨幣型103
4.2.5二進制型103
4.2.6其他數據類型103
4.2.7自定義數據類型104
4.3SQL的數據定義功能104
4.3.1數據表的創(chuàng)建和刪除104
4.3.2數據表的修改108
4.4SQL的數據查詢功能109
4.4.1基本查詢111
4.4.2帶DISTINCT的查詢113
4.4.3帶WHERE子句的條件查詢114
4.4.4帶BETWEEN的范圍查詢115
4.4.5帶IN的范圍查詢116
4.4.6帶GROUP的分組查詢116
4.4.7帶LIKE的匹配查詢和帶IS的空值查詢118
4.4.8使用ORDER排序查詢結果119
4.4.9連接查詢120
4.4.10嵌套查詢126
4.4.11查詢的集合運算129
4.5SQL的數據操縱功能132
4.5.1數據插入132
4.5.2數據更新134
4.5.3數據刪除137
習題137
第5章TransactSQL程序設計/142
5.1TransactSQL142
5.1.1關于TransactSQL142
5.1.2TransactSQL元素143
5.2TransactSQL的變量和常量143
5.2.1變量的定義和使用144
5.2.2TransactSQL常量147
5.3TransactSQL運算符149
5.4TransactSQL流程控制152
5.4.1注釋和語句塊152
5.4.2IF語句153
5.4.3CASE語句156
5.4.4WHILE語句159
5.4.5GOTO語句160
5.4.6TRY…CATCH語句161
5.4.7RETURN語句162
5.4.8WAITFOR語句162
5.5TransactSQL函數163
5.5.1系統(tǒng)內置函數163
5.5.2用戶自定義函數169
習題174
第6章數據庫的創(chuàng)建和管理/176
6.1數據庫和數據庫文件176
6.1.1數據庫的組成176
6.1.2文件組177
6.2數據庫的創(chuàng)建178
6.2.1創(chuàng)建數據庫的SQL語法178
6.2.2創(chuàng)建使用默認參數的數據庫179
6.2.3創(chuàng)建指定數據文件的數據庫180
6.2.4創(chuàng)建指定大小的數據庫181
6.2.5創(chuàng)建帶多個數據文件的數據庫182
6.2.6創(chuàng)建指定文件組的數據庫183
6.3查看數據庫184
6.3.1服務器上的數據庫184
6.3.2數據庫的基本信息185
6.3.3數據庫中的數據表186
6.4修改數據庫187
6.4.1更改數據庫的名稱187
6.4.2修改數據庫的大小188
6.5數據庫的分離和附加189
6.5.1用戶數據庫的分離189
6.5.2用戶數據庫的附加190
6.6刪除數據庫192
習題192
第7章索引與視圖/194
7.1索引概述194
7.1.1什么是索引194
7.1.2何種情況下創(chuàng)建索引195
7.1.3索引的原理——B樹195
7.2索引的類型196
7.2.1聚集索引和非聚集索引196
7.2.2唯一索引與非唯一索引198
7.2.3組合索引199
7.3創(chuàng)建索引199
7.3.1聚集索引199
7.3.2非聚集索引201
7.3.3唯一索引202
7.3.4組合索引202
7.4查看和刪除索引202
7.4.1查看索引202
7.4.2刪除索引203
7.5視圖概述204
7.5.1視圖的概念204
7.5.2視圖的優(yōu)缺點205
7.6視圖的創(chuàng)建與刪除206
7.6.1創(chuàng)建視圖206
7.6.2更新視圖209
7.6.3刪除視圖209
7.7查看視圖210
7.7.1視圖的定義代碼210
7.7.2視圖的結構信息210
7.7.3數據庫中的視圖211
習題211
第8章存儲過程和觸發(fā)器/214
8.1存儲過程214
8.1.1存儲過程的概念214
8.1.2存儲過程的類型215
8.1.3存儲過程的創(chuàng)建和調用216
8.1.4存儲過程的修改和刪除220
8.2觸發(fā)器221
8.2.1關于觸發(fā)器221
8.2.2創(chuàng)建觸發(fā)器223
8.2.3修改觸發(fā)器227
8.2.4禁用和刪除觸發(fā)器228
習題230
第9章游標/233
9.1游標概述233
9.1.1游標的概念233
9.1.2游標的作用及其實現過程233
9.2創(chuàng)建游標——DECLARE CURSOR234
9.2.1DECLARE CURSOR基本語法234
9.2.2創(chuàng)建簡單的游標236
9.2.3創(chuàng)建局部游標和全局游標237
9.2.4創(chuàng)建靜態(tài)游標和動態(tài)游標237
9.2.5創(chuàng)建只讀游標238
9.2.6創(chuàng)建鍵集游標和(快速)只進游標238
9.2.7創(chuàng)建鎖定游標和樂觀游標239
9.2.8創(chuàng)建雙向滾動游標239
9.2.9創(chuàng)建可更新游標239
9.2.10創(chuàng)建綜合類型的游標240
9.3打開游標——OPEN240
9.4檢索游標數據——FETCH242
9.4.1FETCH基本語法242
9.4.2遍歷游標結果集243
9.4.3使用局部變量保存檢索結果245
9.4.4使用游標變量246
9.5更新游標數據247
9.5.1修改游標數據247
9.5.2刪除游標數據248
9.6關閉和刪除游標248
9.6.1關閉游標——CLOSE248
9.6.2刪除游標——DEALLOCATE248
習題249
第10章事務管理與并發(fā)控制/250
10.1事務的基本概念250
10.1.1事務250
10.1.2事務的ACID特性251
10.2事務的管理251
10.2.1啟動事務252
10.2.2終止事務253
10.2.3嵌套事務258
10.3并發(fā)控制260
10.3.1并發(fā)控制的概念260
10.3.2幾種并發(fā)問題260
10.3.3基于事務隔離級別的并發(fā)控制263
10.3.4基于鎖的并發(fā)控制270
習題275
第11章數據的完整性管理/277
11.1關于數據完整性277
11.1.1數據完整性的概念277
11.1.2數據完整性的分類277
11.2實體完整性的實現278
11.2.1實體完整性的定義278
11.2.2實體完整性的檢查281
11.3參照完整性的實現281
11.3.1參照完整性的定義281
11.3.2參照完整性的檢查282
11.4用戶定義完整性的實現284
11.4.1域完整性的實現284
11.4.2表級約束完整性的實現288
習題289
第12章數據的安全性控制/292
12.1SQL Server安全體系結構292
12.1.1主體292
12.1.2安全對象294
12.1.3權限295
12.2角色296
12.2.1服務器角色296
12.2.2數據庫角色297
12.2.3應用程序角色298
12.3服務器級的安全控制298
12.3.1身份驗證模式298
12.3.2創(chuàng)建登錄300
12.3.3查看登錄303
12.3.4登錄的權限管理303
12.3.5刪除登錄307
12.4數據庫級的安全控制308
12.4.1數據庫用戶的管理308
12.4.2安全對象的權限管理313
12.5架構級的安全控制320
12.5.1架構及其管理320
12.5.2安全對象的權限管理325
習題327
第13章數據庫備份與恢復/329
13.1備份和恢復329
13.1.1備份和恢復的概念329
13.1.2恢復模式及其切換329
13.1.3備份類型331
13.2完整數據庫備份與恢復332
13.2.1完整數據庫備份332
13.2.2完整數據庫恢復333
13.3差異數據庫備份與恢復334
13.3.1差異數據庫備份334
13.3.2差異數據庫恢復335
13.4事務日志備份與恢復336
13.4.1事務日志備份336
13.4.2事務日志恢復337
13.5一種備份案例338
習題342
參考答案/343
參考文獻/369