SQL Server 數(shù)據(jù)庫編程與開發(fā)教程
本書結(jié)合豐富的案例,清晰地詮釋了SQL Server 2019 編程語言與數(shù)據(jù)庫開發(fā)涉及的每一個核心概念和技術(shù)。全書力求闡述實際開發(fā)應用中涉及的SQL Server 2019 的功能組件和管理工具;注重實際操作,采用可視化圖解的方式,對SSMS、SSCM 等關(guān)鍵工具的操作步驟進行了詳細說明,使得讀者能夠直觀地看到操作過程和操作效果;注重編程技巧,對于核心的T-SQL 操作,在詳細介紹其語法、參數(shù)后,都會附加案例的高級編程T-SQL 代碼,這些T-SQL 代碼在筆者的開發(fā)環(huán)境中都經(jīng)過嚴格的調(diào)試,讀者可以直接用于自己的項目開發(fā)實踐。
本書可供數(shù)據(jù)庫設計與開發(fā)等方向初學者、程序開發(fā)人員閱讀,也可作為高等院校計算機、軟件開發(fā)相關(guān)專業(yè)的教材。
明廷堂,河南大學計算機與信息工程學院,長期在河南大學計算機與信息工程學院(軟件工程專業(yè))、數(shù)學與統(tǒng)計學院(信息與計算科學專業(yè))從事軟件開發(fā)與教學工作,主持了多項實用項目開發(fā),《電腦編程技巧與維護》等刊物的特約作者。
第1章 SQL Server 集成環(huán)境 001
1.1 SQL Server 2019 概述 001
1.2 SQL Server 2019 功能組件 001
1.2.1 數(shù)據(jù)庫引擎 002
1.2.2 分析服務 002
1.2.3 報表服務 002
1.2.4 集成服務 003
1.3 SQL Server 2019 管理工具 003
1.3.1 配置管理器 003
1.3.2 管理套件 004
1.3.3 事件探查器 004
1.4 AdventureWorks2019 示例數(shù)據(jù)庫 004
1.4.1 AdventureWorks 業(yè)務背景 005
1.4.2 AdventureWorks 系統(tǒng)架構(gòu) 005
1.4.3 AdventureWorks 數(shù)據(jù)字典 008
1.5 本書演示與開發(fā)環(huán)境 035
第2章 SQL Server 編程語言 036
2.1 標準的ANSI SQL 036
2.1.1 ANSI SQL 簡介 036
2.1.2 ANSI SQL 特點 036
2.1.3 ANSI SQL 構(gòu)成 037
2.2 擴展的T-SQL 037
2.2.1 T-SQL 簡介 037
2.2.2 T-SQL 語法約定 037
2.2.3 T-SQL 命名規(guī)則 038
2.2.4 T-SQL 對象引用 039
2.2.5 T-SQL 數(shù)據(jù)類型 040
2.2.6 T-SQL 類型轉(zhuǎn)換 045
2.2.7 T-SQL 常量 047
2.2.8 T-SQL 變量 048
2.2.9 T-SQL 空值 051
2.2.10 T-SQL 運算符 053
2.2.11 T-SQL 表達式 058
2.2.12 T-SQL 注釋符 059
2.2.13 T-SQL 控制流 059
2.2.14 T-SQL 函數(shù)過程 073
第3章 SQL Server 存儲過程 075
3.1 存儲過程簡介 075
3.2 存儲過程的分類076
3.3 系統(tǒng)存儲過程076
3.3.1 Active Directory 存儲過程 077
3.3.2 目錄存儲過程 078
3.3.3 游標存儲過程 078
3.3.4 數(shù)據(jù)庫引擎存儲過程 079
3.3.5 全文搜索存儲過程 082
3.3.6 日志傳送存儲過程 083
3.3.7 安全性存儲過程 084
3.3.8 XML 存儲過程 086
3.4 用戶自定義的存儲過程.086
3.4.1 用戶自定義存儲過程的設計原則 086
3.4.2 創(chuàng)建用戶自定義存儲過程 087
3.4.3 執(zhí)行用戶自定義存儲過程 090
3.4.4 刪除用戶自定義存儲過程 093
3.4.5 修改用戶自定義存儲過程 093
3.5 存儲過程應用實例095
3.5.1 系統(tǒng)存儲過程的應用 095
3.5.2 用戶自定義存儲過程的應用 096
第4章 SQL Server 函數(shù)命令 102
4.1 函數(shù)的確定性102
4.2 函數(shù)的分類102
4.3 聚合函數(shù)103
4.3.1 AVG 函數(shù) 103
4.3.2 COUNT 函數(shù) 104
4.3.3 SUM 函數(shù) 105
4.3.4 MAX 函數(shù) 106
4.3.5 MIN 函數(shù) 106
4.4 字符串處理函數(shù)107
4.4.1 ASCII 和CHAR 函數(shù) 107
4.4.2 UNICODE 和NCHAR 函數(shù) 108
4.4.3 LEFT 和RIGHT 函數(shù) 109
4.4.4 LOWER 和UPPER 函數(shù) 109
4.4.5 LTRIM 和RTRIM 函數(shù) 110
4.4.6 CHARINDEX 和PATINDEX函數(shù) 110
4.4.7 REPLICATE 和SPACE 函數(shù) 112
4.4.8 REPLACE 函數(shù) 113
4.4.9 REVERSE 函數(shù) 114
4.4.10 STR 函數(shù) 115
4.4.11 STUFF 函數(shù) 115
4.4.12 SUBSTRING 函數(shù) 116
4.5 日期和時間函數(shù)117
4.6 排名函數(shù)120
4.7 行集函數(shù)120
4.8 文本和圖像函數(shù)120
4.9 系統(tǒng)函數(shù)120
4.10 配置函數(shù)121
4.11 元數(shù)據(jù)函數(shù)121
4.12 安全函數(shù)121
4.13 游標函數(shù)121
4.14 加密函數(shù)122
4.15 用戶自定義函數(shù)122
4.15.1 用戶自定義函數(shù)設計原則 122
4.15.2 用戶自定義函數(shù)的分類 123
4.15.3 創(chuàng)建用戶自定義函數(shù) 124
4.15.4 刪除用戶自定義函數(shù) 130
4.15.5 修改用戶自定義函數(shù) 130
第5章 SQL Server 服務器管理 132
5.1 使用SSCM 管理服務器.132
5.1.1 SSCM 的幾個管理控制臺版本 132
5.1.2 SSCM 的幾種打開方式 132
5.1.3 SSCM 管理數(shù)據(jù)庫引擎服務 133
5.2 管理工作室SSMS133
5.2.1 SSMS 連接到數(shù)據(jù)庫引擎 133
5.2.2 使用SSMS 操作數(shù)據(jù)庫引擎 134
5.3 命令行工具管理134
第6章 SQL Server 數(shù)據(jù)庫管理 135
6.1 系統(tǒng)數(shù)據(jù)庫簡介135
6.1.1 master 數(shù)據(jù)庫 135
6.1.2 model 數(shù)據(jù)庫 135
6.1.3 msdb 數(shù)據(jù)庫 135
6.1.4 tempdb 數(shù)據(jù)庫 136
6.2 新建數(shù)據(jù)庫136
6.2.1 GUI 可視化方式創(chuàng)建數(shù)據(jù)庫 136
6.2.2 T-SQL 編程方式創(chuàng)建數(shù)據(jù)庫 136
6.3 附加數(shù)據(jù)庫141
6.3.1 GUI 可視化方式附加數(shù)據(jù)庫 141
6.3.2 T-SQL 編程方式附加數(shù)據(jù)庫 141
6.4 備份數(shù)據(jù)庫143
6.4.1 GUI 可視化方式備份數(shù)據(jù)庫 143
6.4.2 T-SQL 編程方式備份數(shù)據(jù)庫 143
6.5 還原數(shù)據(jù)庫147
6.5.1 GUI 可視化方式還原數(shù)據(jù)庫 147
6.5.2 T-SQL 編程方式還原數(shù)據(jù)庫 148
6.6 刪除數(shù)據(jù)庫152
6.6.1 GUI 可視化方式刪除數(shù)據(jù)庫 152
6.6.2 T-SQL 編程方式刪除數(shù)據(jù)庫 153
6.7 引用數(shù)據(jù)庫154
6.7.1 默認數(shù)據(jù)庫 154
6.7.2 當前數(shù)據(jù)庫 154
6.7.3 顯式引用數(shù)據(jù)庫 154
6.7.4 隱式引用數(shù)據(jù)庫 155
第7章 SQL Server 表結(jié)構(gòu)管理 156
7.1 表的分類.156
7.1.1 系統(tǒng)表 156
7.1.2 分區(qū)表 157
7.1.3 寬表 157
7.1.4 臨時表 157
7.1.5 用戶表 159
7.2 表的數(shù)據(jù)結(jié)構(gòu)159
7.2.1 列字段名稱 159
7.2.2 列字段類型和長度 160
7.2.3 列字段約束 160
7.2.4 表數(shù)據(jù)結(jié)構(gòu)范例 161
7.3 創(chuàng)建用戶表結(jié)構(gòu)163
7.3.1 GUI 可視化方式創(chuàng)建表結(jié)構(gòu) 163
7.3.2 T-SQL 編程方式創(chuàng)建表結(jié)構(gòu) 167
7.4 修改用戶表結(jié)構(gòu)174
7.4.1 GUI 可視化方式修改表結(jié)構(gòu) 175
7.4.2 T-SQL 編程方式修改表結(jié)構(gòu) 175
7.5 刪除用戶表結(jié)構(gòu)181
7.5.1 GUI 可視化方式刪除表結(jié)構(gòu) 181
7.5.2 T-SQL 編程方式刪除表結(jié)構(gòu) 182
第8章 SQL Server 表數(shù)據(jù)操作 183
8.1 數(shù)據(jù)查詢操作183
8.1.1 數(shù)據(jù)查詢操作核心動詞SELECT 183
8.1.2 使用AS 子句分配別名 184
8.1.3 選擇所有列 185
8.1.4 選擇特定列 186
8.1.5 選擇常量列 186
8.1.6 選擇派生列 187
8.1.7 使用DISTINCT 選項消除重復行 188
8.1.8 使用WHERE 子句篩選行 189
8.1.9 使用HAVING 子句篩選行 192
8.1.10 使用ORDER BY 子句排序 193
8.1.11 使用GROUP BY 子句分組 194
8.1.12 使用連接查詢 197
8.1.13 使用嵌套查詢 203
8.2 數(shù)據(jù)插入操作210
8.2.1 數(shù)據(jù)插入操作核心動詞INSERT 210
8.2.2 使用VALUES 子句插入數(shù)據(jù) 212
8.2.3 使用SELECT INTO 插入數(shù)據(jù) 212
8.2.4 使用子查詢插入數(shù)據(jù) 213
8.3 數(shù)據(jù)更新操作214
8.3.1 數(shù)據(jù)更新操作核心動詞UPDATE 214
8.3.2 使用SET 子句更新數(shù)據(jù) 216
8.3.3 使用WHERE 子句更新數(shù)據(jù) 217
8.3.4 使用FROM 子句更新數(shù)據(jù) 217
8.4 數(shù)據(jù)刪除操作218
8.4.1 數(shù)據(jù)刪除操作核心動詞DELETE 218
8.4.2 使用WHERE 子句刪除數(shù)據(jù) 219
8.4.3 使用TRUNCATE TABLE刪除數(shù)據(jù) 220
8.5 數(shù)據(jù)融合操作221
8.5.1 子查詢用于查詢/ 插入/ 更新/刪除的表達式 221
8.5.2 使用MERGE 語句插入/ 更新/刪除數(shù)據(jù) 222
8.5.3 使用TOP 子句限制查詢/ 插入/更新/ 刪除操作 226
第9章 SQL Server 完整性管理 229
9.1 完整性概述.229
9.2 完整性約束分類229
9.2.1 實體完整性 229
9.2.2 參照完整性 230
9.2.3 域完整性 230
9.3 PRIMARY KEY 約束.230
9.3.1 創(chuàng)建PRIMARY KEY 約束 231
9.3.2 刪除PRIMARY KEY 約束 232
9.3.3 修改PRIMARY KEY 約束 233
9.4 FOEREIGN KEY 約束233
9.4.1 創(chuàng)建FOREIGN KEY 約束 234
9.4.2 刪除FOREIGN KEY 約束 236
9.4.3 修改FOREIGN KEY 約束 236
9.5 CHECK 約束237
9.5.1 創(chuàng)建CHECK 約束 238
9.5.2 刪除CHECK 約束 239
9.5.3 修改CHECK 約束 239
9.6 DEFAULT 約束.240
9.6.1 創(chuàng)建DEFAULT 約束 240
9.6.2 刪除DEFAULT 約束 242
9.6.3 修改DEFAULT 約束 242
9.7 UNIQUE 約束.243
9.7.1 創(chuàng)建UNIQUE 約束 244
9.7.2 刪除UNIQUE 約束 245
9.7.3 修改UNIQUE 約束 245
9.8 NULL/NOT NULL 規(guī)則.246
第10章 SQL Server 安全性管理 248
10.1 安全性概述248
10.2 安全標識248
10.2.1 用戶 248
10.2.2 角色 251
10.2.3 權(quán)限 253
10.2.4 憑證 256
10.2.5 架構(gòu) 258
10.3 安全開發(fā)260
10.3.1 模塊簽名 260
10.3.2 上下文切換 260
10.4 安全訪問261
10.4.1 設置身份驗證模式 261
10.4.2 使用Windows 身份驗證模式連接SQL Server 261
10.4.3 使用SQL Server 身份驗證模式連接SQL Server 262
10.5 安全操作263
10.5.1 SQL Server 證書 263
10.5.2 SQL Server 加密 268
第11章 數(shù)據(jù)服務對象組件的開發(fā) 270
11.1 層次化開發(fā)架構(gòu).270
11.1.1 層次化開發(fā)架構(gòu)的體系結(jié)構(gòu) 270
11.1.2 層次化開發(fā)架構(gòu)的技術(shù)優(yōu)勢 271
11.2 數(shù)據(jù)服務對象組件簡介.272
11.3 SQLAgency 類對象設計272
11.3.1 修飾符abstract 272
11.3.2 公有靜態(tài)函數(shù)GetConnection-String 272
11.3.3 私有靜態(tài)函數(shù)Attach Parameters 274
11.3.4 私有靜態(tài)函數(shù)AssignParameter-Values 274
11.3.5 私有靜態(tài)函數(shù)Build-Command 275
11.3.6 公有靜態(tài)重載函數(shù)Execute-DataSet 276
11.3.7 公有靜態(tài)重載函數(shù)Execute-DataTable 279
11.3.8 公有靜態(tài)重載函數(shù)ExecuteNon-Query 280
11.4 SQLParameterCache 類對象設計282
11.4.1 修飾符sealed 282
11.4.2 私有變量paramCache 282
11.4.3 私有靜態(tài)函數(shù)DiscoverSp-ParameterSet 282
11.4.4 私有靜態(tài)函數(shù)Clone-Parameters 283
11.4.5 公有靜態(tài)函數(shù)Cache-ParameterSet 283
11.4.6 公有靜態(tài)函數(shù)GetCached-ParameterSet 284
11.4.7 內(nèi)部靜態(tài)函數(shù)GetSpParameter-SetInternal 284
11.4.8 公有靜態(tài)重載函數(shù)GetSp-ParameterSetInternal 285
第12章 教師信息管理平臺——自助系統(tǒng)的實現(xiàn) 287
12.1 可行性研究287
12.2 系統(tǒng)需求分析.287
12.2.1 功能性需求 287
12.2.2 可用性需求 288
12.2.3 安全性需求 288
12.2.4 標準化需求 290
12.2.5 規(guī)范化需求 291
12.2.6 模塊化需求 293
12.3 系統(tǒng)概要設計293
12.3.1 集成開發(fā)環(huán)境 293
12.3.2 系統(tǒng)功能結(jié)構(gòu) 294
12.3.3 數(shù)據(jù)庫概要設計 294
12.3.4 系統(tǒng)執(zhí)行流程導圖 295
12.4 用戶自定義控件的詳細設計.295
12.4.1 基底控件Fundus 的設計 295
12.4.2 頭部控件HeaderBar 的設計 296
12.4.3 底部控件FooterBar 的設計 296
12.4.4 導航菜單控件Navigator-Menu 的設計 296
12.4.5 擴展的網(wǎng)格視圖控件SmartGridView 的設計 296
12.4.6 用戶自定義Web 控件的使用 296
12.5 實用工具類的詳細設計.297
12.5.1 調(diào)試工具類Debugger 的設計 297
12.5.2 文件上傳類FileUploader 的設計 298
12.5.3 狀態(tài)管理類StateManager 的設計 299
12.5.4 安全引擎類SecurityEngine的設計 303
12.6 登錄注冊模塊設計304
12.6.1 登錄注冊模塊的數(shù)據(jù)實體層設計 304
12.6.2 登錄注冊模塊的業(yè)務邏輯層設計 305
12.6.3 登錄注冊模塊的用戶接口層設計 307
12.6.4 登錄注冊模塊的設計效果 309
12.7 基本信息模塊設計310
12.7.1 基本信息模塊的數(shù)據(jù)實體層設計 310
12.7.2 基本信息模塊的業(yè)務邏輯層設計 311
12.7.3 基本信息模塊的用戶接口層設計 313
12.7.4 基本信息模塊的設計效果 317
12.8 職稱職務模塊設計.318
12.8.1 職稱職務模塊的數(shù)據(jù)實體層設計 318
12.8.2 職稱職務模塊的業(yè)務邏輯層設計 319
12.8.3 職稱職務模塊的用戶接口層設計 321
12.8.4 職稱職務模塊的設計效果 324
12.9 學習經(jīng)歷模塊設計325
12.9.1 學習經(jīng)歷模塊的數(shù)據(jù)實體層設計 325
12.9.2 學習經(jīng)歷模塊的業(yè)務邏輯層設計 326
12.9.3 學習經(jīng)歷模塊的用戶接口層設計 328
12.9.4 學習經(jīng)歷模塊的設計效果 331
12.10 工作經(jīng)歷模塊設計.332
12.10.1 工作經(jīng)歷模塊的數(shù)據(jù)實體層設計 332
12.10.2 工作經(jīng)歷模塊的業(yè)務邏輯層設計 333
12.10.3 工作經(jīng)歷模塊的用戶接口層設計 335
12.10.4 工作經(jīng)歷模塊的設計效果 337
12.11 培訓經(jīng)歷模塊設計338
12.11.1 培訓經(jīng)歷模塊的數(shù)據(jù)實體層設計 338
12.11.2 培訓經(jīng)歷模塊的業(yè)務邏輯層設計 339
12.11.3 培訓經(jīng)歷模塊的用戶接口層設計 341
12.11.4 培訓經(jīng)歷模塊的設計效果 344
12.12 榮譽獎勵模塊設計.345
12.12.1 榮譽獎勵模塊的數(shù)據(jù)實體層設計 345
12.12.2 榮譽獎勵模塊的業(yè)務邏輯層設計 345
12.12.3 榮譽獎勵模塊的用戶接口層設計 347
12.12.4 榮譽獎勵模塊的設計效果 350
12.13 技術(shù)專利模塊設計.351
12.13.1 技術(shù)專利模塊的數(shù)據(jù)實體層設計 351
12.13.2 技術(shù)專利模塊的業(yè)務邏輯層設計 352
12.13.3 技術(shù)專利模塊的用戶接口層設計 354
12.13.4 技術(shù)專利模塊的設計效果 356
12.14 項目課題模塊設計.357
12.14.1 項目課題模塊的數(shù)據(jù)實體層設計 357
12.14.2 項目課題模塊的業(yè)務邏輯層設計 359
12.14.3 項目課題模塊的用戶接口層設計 361
12.14.4 項目課題模塊的設計效果 364
12.15 論文發(fā)表模塊設計.365
12.15.1 論文發(fā)表模塊的數(shù)據(jù)實體層設計 365
12.15.2 論文發(fā)表模塊的業(yè)務邏輯層設計 366
12.15.3 論文發(fā)表模塊的用戶接口層設計 368
12.15.4 論文發(fā)表模塊的設計效果 371
12.16 專著出版模塊設計.371
12.16.1 專著出版模塊的數(shù)據(jù)實體層設計 371
12.16.2 專著出版模塊的業(yè)務邏輯層設計 372
12.16.3 專著出版模塊的用戶接口層設計 374
12.16.4 專著出版模塊的設計效果 377
12.17 科研成果模塊設計.378
12.17.1 科研成果模塊的數(shù)據(jù)實體層設計 378
12.17.2 科研成果模塊的業(yè)務邏輯層設計 379
12.17.3 科研成果模塊的用戶接口層設計 381
12.17.4 科研成果模塊的設計效果 383