《SQL Server數據庫原理及應用教程》從數據庫的基本理論知識出發,通過豐富的實例介紹數據庫的分析、設計過程以及開發應用等。全書分為3篇。第1篇主要介紹數據庫的基本原理與基礎知識,SQL Server 2000的特點安裝、使用和維護等內容。第2篇為SQL Server 2000數據庫管理,包括創建數據庫、SQL查詢語句、T-SQL、索引與數據的完整性、存儲過程和觸發器、數據庫的安全管理、備份和恢復等內容。第3篇從軟件工程的觀點講解Visual Basic/ADO、ASP.NET/ADO.NET開發與編程,給出了SQL Server 數據庫在實際應用方面的綜合實例。每章還配有一定數量的習題以幫助讀者加深理解。
《SQL Server數據庫原理及應用教程》可作為普通本科院校相關專業“網絡數據庫”、“數據庫應用”、“電子商務數據庫”課程的教材,還可作為網站開發與維護人員參考用書。
數據庫技術是計算機技術中至關重要的一個分支,其在國內計算機教育中占有重要的地位。不同的專業,不同的層次,都開設了數據庫技術方面的課程,而且全國計算機等級考試一直將數據庫應用作為考試科目。在內容編排上,《SQL Server數據庫原理及應用教程》從理論到實踐、從技術基礎到綜合實例,循序漸進、由淺入深,重點介紹了數據庫系統原理、組成以及數據庫系統分析與實現、數據庫系統的開發。
在所有科學領域中,計算機技術的發展可以說是日新月異,其變革的影響程度不可估量。其中,以數據庫技術的發展和應用尤為突出。數據庫技術從20世紀60年代中期產生到現在,不過30多年的時間,就已經有了3次演變,并造就了C.W.Baehman,E.F.Codd和James Gray 3位堪稱計算機界的“諾貝爾獎”——圖靈獎的得主,發展成了以數據建模和DBMS核心技術為主、包羅豐富、應用領域廣泛的一門學科。
20世紀60年代后期,計算機逐漸從科學計算轉向數據處理,由于處理的規模增大,相應的數據量隨之急劇增加,傳統的依賴人工管理數據的方式早已淘汰,而當時的文件系統管理方式也有明顯的不足,數據庫技術便應時而生。數據庫技術所關注的問題簡單歸納起來有兩點:一是如何減少存儲量,二是如何快速檢索數據。經過了層次數據庫、網狀數據庫的兩次演變后,人們找到了一個相對而言比較優秀的數據庫——關系型數據庫。關系型數據庫借用二維表的概念描述現實生活的各種實體和關系,以關系代數作為理論支持,很好地解決了上述兩個問題。因此,數據庫技術在實際中得到了極為廣泛的應用,幾乎所有的DBMS產品,如ORACLE、SOL Server、DB2等核心皆采用關系數據庫理論。如今數據庫技術仍然在不斷地發展創新,并行數據庫、分布式數據庫、數據倉庫和數據挖掘、對象數據庫都是從不同角度對數據庫技術的拓展。總之,數據庫技術是計算機技術中至關重要的一個分支。
數據庫技術應用非常普遍,其在國內數據庫技術的教學一直備受關注。不同的專業,不同的層次,都開設了數據庫技術方面的課程,而且全國計算機等級考試一直將數據庫應用作為考試科目。在國內,由于早期數據庫的應用采用的是單機形式,當時FoxBase/FoxPro占據了大部分市場,現今步入網絡時代,企業的應用需面對更為復雜的情形。因此,功能強大的后臺數據庫的支持成為至關重要的一環。微軟公司推出的SOL Server,由于其功能強大和易操作性而成為了首選;改進后能SOL Server 2000,在Web站點和企業級應用上提供可擴展性和高可靠性。因此,SQL Server近年來在國內的教學和使用上越來越受到人們的重視。
第1篇 數據庫基礎
第1章 數據庫基礎概述 2
1.1 數據庫系統簡介 2
1.2 數據庫系統的組成 3
1.2.1 數據庫 3
1.2.2 數據庫管理系統 3
1.2.3 數據庫系統的用戶 3
1.2.4 數據庫系統的網絡結構 4
1.3 關系型數據庫 4
1.3.1 關系型數據庫定義 4
1.3.2 關系型數據庫與表 5
1.3.3 主鍵與外鍵 5
1.3.4 字段約束 6
1.3.5 數據完整性 7
1.3.6 表的關聯 7
1.4 關系型數據庫的設計 9
1.4.1 E-R模型 9
1.4.2 數據庫設計過程 10
1.4.3 關系型數據庫規范化分析 10
小結 13
習題 13
第2章 SQL Server 2000簡介 14
2.1 SQL Server 2000的新特性 14
2.1.1 數據庫增強 14
2.1.2 聯合數據庫服務器 15
2.2 SQL Server 2000的安裝 15
2.2.1 安裝前的準備事項 15
2.2.2 SQL Server 2000 的硬件和軟件安裝要求 15
2.2.3 創建SQL Server 2000服務賬號 16
2.2.4 SQL Server 2000的安裝路徑 17
2.2.5 安裝SQL Server 2000的步驟 18
2.3 管理SQL Server 2000服務器組件 21
2.3.1 SQL Server 2000服務管理器 21
2.3.2 SQL Server 2000主要的服務器組件簡介 22
2.4 SQL Server 2000的通信組件 22
2.4.1 服務器端的網絡實用工具 22
2.4.2 客戶端網絡實用工具 23
2.5 SQL Server 2000主要的管理工具 23
2.5.1 企業管理器 24
2.5.2 查詢分析器 24
2.6 注冊服務器 25
2.7 一個簡單的應用舉例 25
小結 27
習題 27
第2篇 數據庫管理
第3章 SQL Server數據庫管理 30
3.1 SQL Server數據庫簡介 30
3.1.1 SQL Server數據庫 30
3.1.2 設計SQL Server數據庫 30
3.1.3 數據庫中的對象 31
3.1.4 SQL Server數據庫類型 31
3.1.5 文件和文件組 32
3.1.6 日志 32
3.2 創建數據庫 33
3.2.1 使用Transact-SQL創建數據庫 33
3.2.2 使用企業管理器創建數據庫 34
3.3 修改數據庫 36
3.3.1 使用Transact-SQL修改數據庫 36
3.3.2 使用企業管理器修改數據庫 37
3.4 刪除數據庫 37
3.4.1 使用Transact-SQL刪除數據庫 37
3.4.2 使用企業管理器刪除數據庫 38
3.5 查看與設置數據庫參數 39
3.5.1 使用sp_helpdb查看數據庫信息 39
3.5.2 使用企業管理器查看數據庫信息 39
小結 40
習題 40
第4章 表與視圖 41
4.1 SQL Server中的數據類型 41
4.1.1 數據類型 41
4.1.2 空值的含義 42
4.2 創建表 43
4.2.1 使用企業管理器創建表 43
4.2.2 使用CREATE TABLE語句創建表 44
4.3 修改表的結構 44
4.3.1 使用企業管理器修改表結構 44
4.3.2 使用ALTER TABLE語句修改表結構 45
4.4 添加表中的記錄 46
4.4.1 使用企業管理器添加記錄 46
4.4.2 使用INSERT語句添加記錄 46
4.5 修改表中的記錄 47
4.5.1 使用企業管理器修改記錄 47
4.5.2 使用UPDATE語句修改記錄 47
4.6 刪除表中的記錄 48
4.6.1 使用企業管理器刪除記錄 48
4.6.2 使用DELETE語句刪除記錄 48
4.7 刪除表 49
4.7.1 使用企業管理器刪除表 49
4.7.2 使用DROP TABLE語句刪除表 50
4.8 視圖的概念 50
4.9 創建視圖 50
4.9.1 使用企業管理器創建視圖 50
4.9.2 使用CREATE VIEW創建視圖 52
4.10 管理視圖 53
4.10.1 查看和修改視圖信息 53
4.10.2 刪除視圖 54
4.11 通過視圖修改基本表中的數據 54
4.11.1 查詢操作 55
4.11.2 插入操作 55
4.11.3 修改操作 56
4.11.4 刪除操作 56
小結 56
習題 56
第5章 SQL結構化查詢語言 57
5.1 SQL基礎 57
5.1.1 SQL概述 57
5.1.2 SQL的分類 57
5.2 SELECT查詢語句 58
5.2.1 SQL查詢分析器 58
5.2.2 查詢語句格式 59
5.3 基于單表的查詢 59
5.3.1 查詢表中指定的字段 60
5.3.2 通配符“*”的使用 60
5.3.3 使用單引號加入字符串 60
5.3.4 使用別名 61
5.3.5 顯示表達式的值 61
5.3.6 使用DISTINCT短語消除重復的記錄 61
5.3.7 使用WHERE子句查詢特定的記錄 62
5.3.8 使用ORDER BY子句對查詢結果排序 67
5.3.9 SQL的聚合函數 67
5.3.10 使用GROUP BY子句對查詢結果進行分組 70
5.3.11 使用HAVING子句篩選結果表 70
5.4 基于多表的連接查詢 71
5.4.1 連接謂詞 71
5.4.2 以JOIN關鍵字指定的連接 73
5.5 子查詢 76
5.5.1 使用IN或NOT IN的子查詢 77
5.5.2 INSERT,DELETE和UPDATE語句中的子查詢 78
5.5.3 使用比較運算符的子查詢 79
5.5.4 使用EXISTS的子查詢 80
5.5.5 相關子查詢 81
5.5.6 使用UNION運算符組合多個結果 82
5.5.7 在查詢的基礎上創建新表 82
小結 83
習題 84
第6章 Transact-SQL 85
6.1 常量 85
6.1.1 關于SQL標識符 85
6.1.2 常量 85
6.2 變量 86
6.2.1 全局變量 86
6.2.2 局部變量 87
6.3 數據類型 88
6.3.1 系統數據類型 88
6.3.2 用戶定義數據類型 88
6.4 運算符與表達式 90
6.5 流程控制語句 91
6.5.1 BEGIN…END語句 91
6.5.2 IF…ELSE語句 91
6.5.3 無條件轉移(GOTO)語句 92
6.5.4 WHILE,BREAK和CONTINUE語句 92
6.5.5 RETURN語句 93
6.5.6 WAITFOR語句 93
6.6 系統內置函數 93
6.6.1 系統函數 94
6.6.2 日期時間函數 96
6.6.3 字符串函數 96
6.6.4 數據函數 98
6.6.5 集合函數 98
6.7 用戶自定義函數 98
6.7.1 用戶函數的定義與調用 98
6.7.2 用戶定義函數的刪除 102
小結 102
習題 103
第7章 索引與數據完整性 104
7.1 索引 104
7.1.1 索引的分類 104
7.1.2 索引的創建 105
7.1.3 索引的刪除 108
7.2 數據完整性 109
7.2.1 數據完整性的分類 109
7.2.2 PRIMARY KEY約束 110
7.2.3 FOREIGN KEY約束 111
7.2.4 UNIQUE約束 111
7.2.5 CHECK約束 112
7.2.6 默認值約束 113
小結 115
習題 115
第8章 存儲過程和觸發器 117
8.1 存儲過程概述 117
8.1.1 存儲過程的基本概念 117
8.1.2 存儲過程的類型 117
8.2 存儲過程的創建 118
8.2.1 使用CREATE PROCEDURE語句創建 118
8.2.2 使用企業管理器創建 120
8.2.3 使用向導創建 121
8.3 執行存儲過程 122
8.4 存儲過程的參數 124
8.4.1 參數傳遞方式 124
8.4.2 使用默認參數 125
8.4.3 使用帶OUTPUT的返回參數 125
8.5 存儲過程的返回值 126
8.5.1 RETURN語句 126
8.5.2 捕獲存儲過程的返回值 127
8.6 存儲過程的查看、修改和刪除 127
8.6.1 存儲過程的查看 127
8.6.2 存儲過程的修改 128
8.6.3 存儲過程的刪除 128
8.7 觸發器的概念 129
8.8 觸發器的創建 129
8.8.1 使用企業管理器創建觸發器 129
8.8.2 使用Transact-SQL語句創建觸發器 129
8.9 觸發器的使用 131
8.9.1 inserted表和deleted表 131
8.9.2 INSERT觸發器和UPDATE觸發器 132
8.9.3 DELETE觸發器 134
8.10 觸發器的修改及刪除 134
8.10.1 觸發器的修改 134
8.10.2 觸發器的刪除 135
小結 135
習題 135
第9章 備份恢復 137
9.1 備份和恢復概述 137
9.1.1 備份和恢復需求分析 137
9.1.2 數據庫備份的基本概念 137
9.1.3 數據庫恢復概念 138
9.2 備份操作和備份命令 138
9.2.1 創建備份設備 138
9.2.2 備份命令 139
9.2.3 使用企業管理器進行備份 140
9.2.4 使用備份向導進行備份 141
9.3 恢復操作和恢復命令 143
9.3.1 檢查點 143
9.3.2 數據庫的恢復命令 143
9.3.3 使用企業管理器恢復數據庫 144
9.4 導入導出 146
9.4.1 導入導出概念 146
9.4.2 使用實用程序導入導出數據 147
小結 147
習題 148
第10章 系統安全管理 149
10.1 SQL Server 2000的身份認證模式 149
10.2 建立和管理用戶賬號 150
10.2.1 Windows NT認證模式登錄賬號的建立與刪除 150
10.2.2 SQL Server認證模式登錄賬號的建立與刪除 150
10.2.3 通過企業管理器創建和刪除登錄賬號 151
10.3 服務器角色與數據庫角色 152
10.3.1 固定服務器角色 152
10.3.2 固定數據庫角色 153
10.3.3 用戶自定義數據庫角色 160
小結 161
習題 161
第3篇 數據庫應用開發
第11章 C/S數據庫應用開發——Visual Basic/ADO+SQL Server 164
11.1 ODBC概述 164
11.1.1 ODBC體系結構 164
11.1.2 配置ODBC數據源 165
11.2 OLE DB和ADO概述 167
11.2.1 OLE DB體系結構 167
11.2.2 ADO對象模型 168
11.2.3 使用ADO的簡單流程 169
11.3 使用ADO數據控件訪問SQL Server數據庫 169
11.3.1 在Visual Basic工程中添加ADO數據控件 170
11.3.2 使用ADO數據控件連接SQL Server數據庫 170
11.3.3 ADO數據控件在程序中的操作方法 173
11.3.4 數據綁定控件的使用 174
11.4 使用ADO對象訪問SQL Server數據庫 179
11.4.1 引用ADO對象庫 179
11.4.2 使用Connection對象 180
11.4.3 使用Recordset對象處理數據 182
11.4.4 使用Command對象 188
11.5 開發實例——基于VB的學生信息管理系統 191
11.5.1 需求分析 191
11.5.2 系統設計 192
11.5.3 數據庫設計 192
11.5.4 用戶登錄模塊的創建 194
11.5.5 學生信息管理系統主窗體的創建 196
11.5.6 子模塊的編制 199
11.5.7 系統編譯與發行 203
小結 204
習題 204
第12章 B/S數據庫應用開發技術——ASP.NET/ADO.NET+SQL Server 205
12.1 ASP.NET概述 205
12.1.1 ASP.NET開發環境 205
12.1.2 創建第一個ASP.NET Web應用程序 209
12.1.3 ASP.NET語法 210
12.2 ADO.NET數據訪問技術 215
12.2.1 ADO.NET簡介 215
12.2.2 利用Select語句查詢記錄 217
12.2.3 用Insert語句插入記錄 221
12.2.4 利用Update語句更新記錄 223
12.2.5 利用Delete語句刪除記錄 224
12.3 采用數據綁定技術訪問數據庫 225
12.3.1 SqlDataSource數據源控件 225
12.3.2 使用GridView數據綁定控件存取數據庫 226
12.3.3 使用DateList數據綁定控件存取數據庫 238
12.3.4 使用Repeater數據綁定控件存取數據庫 249
小結 252
習題 252
第13章 B/S數據庫應用開發綜合實例——基于ASP.NET的學生管理系統 253
13.1 系統需求分析 253
13.2 總體設計 254
13.3 數據庫分析、設計與實現 254
13.4 編寫公用模塊 258
13.5 學生管理界面 261
13.6 課程管理界面 284
13.7 成績管理界面 285
13.8 教師管理界面 286
13.9 班級管理界面 286
小結 287
習題 287
附錄 289
附錄A 數據庫表結構 289
附錄B 常用語句 292
附錄C 常用函數 294
參考文獻 299
第1章 數據庫基礎概述
數據庫技術是現代信息科學與技術的重要組成部分,是計算機數據處理與信息管理體制系統的核心。數據庫技術研究解決計算機信息處理過程中大量數據有效地組織和存儲的問題,在數據庫系統中減少數據存儲冗余,實現數據共享,保障數據安全以及高效地檢索數據和處理數據。
隨著計算機技術與網絡通信技術的發展,數據庫技術已成為信息社會中對大量數據進行組織與管理的重要技術手段及軟件技術,是網絡信息化管理系統的基礎。本章主要介紹數據庫系統的發展與組成,數據庫的模型,數據庫系統的網絡結構,以及關系型數據庫的分析與設計等內容,是學習和掌握現代數據庫技術的基礎。
1.1 數據庫系統簡介
隨著計算機技術的發展,計算機的主要功能已從科學計算轉變為事務處理。據統計,目前全世界80%以上的計算機主要從事事務處理工作。在進行事務處理時,并不要求復雜的科學計算,主要是從大量有關數據中提取所需信息。因此,在進行事務處理時,必須在計算機系統中存人大量數據。為了有效地使用存放在計算機系統中的大量有關數據,必須采用一整套嚴密合理的存取數據、使用數據的方法。
數據管理是指對數據的組織、存儲、維護和使用等。隨著計算機技術的發展,數據管理的方法也在發展,大體上可將其分為3個階段:人工管理階段、文件管理階段和數據庫系統階段。
人工管理階段大致在20世紀50年代中期之前。那時,數據包含在程序中,用戶必須考慮存儲、使用數據的一切工作。因此,該階段的數據管理是最低級的數據管理。
文件管理階段大致從20世紀50年代后期開始,至20世紀60年代末。它是通過文件系統來管理和使用數據的。用戶不必考慮數據在計算機系統中的實際存儲方法(稱為物理結構),只須考慮數據問的關系(稱為邏輯結構)。文件系統中的文件屬于個別程序所有。因此,文件管理階段比人工管理階段有了進步。但是,它仍然存在很嚴重的缺陷。例如,數據不能為有關用戶共享,數據和程序間有著很大的依賴性等,從而造成數據的重復,冗余度既大,又極易造成數據的不一致性(修改數據時,相同重復數據未同時全部得到修改)。為了克服文件系統的缺點,產生了數據庫系統。