目 錄
第1章 初識SQL Server2016 1
1.1 SQL Server 2016的新功能 1
1.2 SQL Server 2016的組成 3
1.2.1 SQL Server 2016數據庫引擎 3
1.2.2 分析服務 3
1.2.3 集成服務 4
1.2.4 報表服務 4
1.3 如何選擇SQLServer 2016的版本 4
1.4 安裝SQL Server2016 5
1.4.1 SQL Server 2016 安裝環境需求 5
1.4.2 安裝SQL Server 2016 5
1.4.3 SQL Server 2016常見實用程序 14
1.5 安裝SQL ServerManagement Studio 16
1.6 SSMS基本操作 18
1.6.1 SSMS的啟動與連接 18
1.6.2 使用模板資源管理器、解決方案與項目腳本 20
1.6.3 配置SQL Server 2016服務器的屬性 22
1.6.4 查詢編輯器 30
1.7 本章小結 33
1.8 經典習題 33
第2章 數據庫的操作 34
2.1 數據庫組成 34
2.1.1 數據文件 35
2.1.2 日志文件 35
2.2 系統數據庫 35
2.2.1 master數據庫 35
2.2.2 model數據庫 35
2.2.3 msdb數據庫 36
2.2.4 tempdb數據庫 36
2.3 創建數據庫 36
2.3.1 使用對象資源管理器創建數據庫 36
2.3.2 使用Transact-SQL創建數據庫 40
2.4 管理數據庫 43
2.4.1 修改數據庫 43
2.4.2 修改數據庫容量 44
2.4.3 增加數據庫容量 45
2.4.4 縮減數據庫容量 48
2.4.5 查看數據庫信息 48
2.4.6 數據庫更名 52
2.4.7 刪除數據庫 53
2.5 疑難解惑 54
2.6 經典習題 55
第3章 數據表的操作 56
3.1 SQL Server 2016數據庫對象 56
3.2 創建數據表 57
3.2.1 數據類型 58
3.2.2 使用對象資源管理器創建表 68
3.2.3 使用Transact-SQL創建表 69
3.3 管理數據表 71
3.3.1 修改表字段 71
3.3.2 修改表約束 76
3.3.3 查看表中有關信息 81
3.3.4 刪除表 83
3.4 疑難解惑 84
3.5 經典習題 85
第4章 Transact-SQL語言基礎 86
4.1 Transact-SQL概述 86
4.1.1 什么是Transact-SQL 87
4.1.2 T-SQL語法的約定 87
4.2 如何給標識符起名 89
4.3 常量 90
4.3.1 數字常量 90
4.3.2 字符串常量 91
4.3.3 日期和時間常量 91
4.3.4 符號常量 91
4.4 變 量 92
4.4.1 全局變量 92
4.4.2 局部變量 95
4.4.3 批處理和腳本 96
4.5 運算符和表達式 97
4.5.1 算術運算符 98
4.5.2 比較運算符 98
4.5.3 邏輯運算符 99
4.5.4 連接運算符 99
4.5.5 按位運算符 99
4.5.6 運算符的優先級 99
4.5.7 什么是表達式 100
4.5.8 Transact-SQL表達式的分類 100
4.6 Transact-SQL利器——通配符 101
4.7 Transact-SQL語言中的注釋 101
4.8 疑難解惑 102
4.9 經典習題 103
第5章 輕松掌握Transact-SQL語句 104
5.1 數據定義語句 104
5.1.1 CREATE的應用 104
5.1.2 DROP的功能 107
5.1.3 ALTER的功能 108
5.2 數據操作語句 110
5.2.1 數據的插入——INSERT 110
5.2.2 數據的更改——UPDATE 112
5.2.3 數據的刪除——DELETE 113
5.2.4 數據的查詢——SELECT 115
5.3 數據控制語句 123
5.3.1 授予權限操作——GRANT 123
5.3.2 拒絕權限操作——DENY 123
5.3.3 收回權限操作——REVOKE 123
5.4 其他基本語句 124
5.4.1 數據聲明——DECLARE 124
5.4.2 數據賦值——SET 125
5.4.3 數據輸出——PRINT 126
5.5 流程控制語句 126
5.5.1 BEGIN…END語句 127
5.5.2 IF…ELSE語句 127
5.5.3 CASE語句 128
5.5.4 WHILE語句 130
5.5.5 GOTO語句 132
5.5.6 WAITFOR語句 132
5.5.7 RETURN語句 133
5.6 批處理語句 134
5.7 疑難解惑 135
5.8 經典習題 135
第6章 認識函數 136
6.1 SQL Server 2016函數簡介 136
6.2 字符串函數 136
6.2.1 ASCII()函數 137
6.2.2 CHAR()函數 137
6.2.3 LEFT()函數 137
6.2.4 RIGHT()函數 138
6.2.5 LTRIM()函數 138
6.2.6 RTRIM()函數 139
6.2.7 STR()函數 139
6.2.8 字符串逆序的函數REVERSE(s) 140
6.2.9 計算字符串長度的函數LEN(str) 140
6.2.10 匹配子串開始位置的函數 141
6.2.11 SUBSTRING()函數 141
6.2.12 LOWER()函數 142
6.2.13 UPPER()函數 143
6.2.14 替換函數REPLACE(s,s1,s2) 143
6.3 數學函數 144
6.3.1 絕對值函數ABS(x)和返回圓周率的函數PI() 144
6.3.2 平方根函數SQRT(x) 144
6.3.3 獲取隨機數的函數RAND()和RAND(x) 145
6.3.4 四舍五入函數ROUND(x,y) 146
6.3.5 符號函數SIGN(x) 146
6.3.6 獲取整數的函數CEILING(x)和FLOOR(x) 147
6.3.7 冪運算函數POWER(x,y)、SQUARE (x)和EXP(x) 148
6.3.8 對數運算函數LOG(x)和LOG10(x) 149
6.3.9 角度與弧度相互轉換的函數RADIANS(x)和DEGREES(x) 150
6.3.10 正弦函數SIN(x)和反正弦函數ASIN(x) 151
6.3.11 余弦函數COS(x)和反余弦函數ACOS(x) 152
6.3.12 正切函數、反正切函數和余切函數 152
6.4 數據類型轉換函數 154
6.5 文本和圖像函數 155
6.5.1 TEXTPTR函數 155
6.5.2 TEXTVALID函數 155
6.6 日期和時間函數 156
6.6.1 獲取系統當前日期的函數GETDATE() 156
6.6.2 返回UTC日期的函數GETUTCDATE() 156
6.6.3 獲取天數的函數DAY(d) 157
6.6.4 獲取月份的函數MONTH(d) 157
6.6.5 獲取年份的函數YEAR(d) 158
6.6.6 獲取日期中指定部分字符串值的函數DATENAME(dp,d) 158
6.6.7 獲取日期中指定部分的整數值的函數DATEPART(dp,d) 159
6.6.8 計算日期和時間的函數DATEADD(dp,num,d) 160
6.7 系統函數 160
6.7.1 返回表中指定字段的長度值 160
6.7.2 返回表中指定字段的名稱 161
6.7.3 返回數據表達式的數據的實際長度函數 161
6.7.4 返回數據庫的編號 162
6.7.5 返回數據庫的名稱 162
6.7.6 返回當前數據庫默認的NULL值 163
6.7.7 返回服務器端計算機的標識號 163
6.7.8 返回服務器端計算機的名稱 164
6.7.9 返回數據庫對象的編號 164
6.7.10 返回用戶的SID 165
6.7.11 返回用戶的登錄名 165
6.7.12 返回數據庫對象的名稱 166
6.7.13 返回數據庫用戶的標識號 166
6.7.14 返回數據庫用戶名 167
6.8 疑難解惑 167
6.9 經典習題 168
第7章 Transact-SQL查詢 169
7.1 查詢工具的使用 169
7.1.1 編輯查詢 169
7.1.2 查詢結果的顯示方法 171
7.2 使用SELECT進行查詢 172
7.2.1 使用星號和列名 173
7.2.2 使用DISTINCT取消重復 175
7.2.3 使用TOP返回前n行 176
7.2.4 修改列標題 176
7.2.5 在查詢結果集中顯示字符串 177
7.2.6 查詢的列為表達式 178
7.3 使用WHERE子句進行條件查詢 179
7.3.1 使用關系表達式查詢 179
7.3.2 使用BETWEEN AND表示范圍 181
7.3.3 使用IN關鍵字 182
7.3.4 使用LIKE關鍵字 183
7.3.5 使用IS NULL查詢空值 187
7.3.6 使用EXISTS關鍵字 188
7.3.7 使用ORDER BY排序 190
7.3.8 使用GROUP BY分組 191
7.3.9 使用HAVING對分組結果過濾 193
7.3.10 使用UNION合并查詢結果集 194
7.4 使用聚合函數統計匯總195
7.4.1 使用SUM()求列的和 196
7.4.2 使用AVG()求列平均值 196
7.4.3 使用MAX()求列最大值 198
7.4.4 使用MIN()求列最小值 199
7.4.5 使用COUNT()統計 200
7.5 嵌套查詢 202
7.5.1 使用比較運算符 202
7.5.2 使用IN關鍵字 203
7.5.3 使用ANY、SOME和ALL關鍵字 204
7.5.4 使用EXISTS關鍵字 205
7.6 多表連接查詢 207
7.6.1 相等連接 207
7.6.2 不等連接 208
7.6.3 帶選擇條件的連接 209
7.6.4 自連接 209
7.7 外連接 210
7.7.1 左外連接 210
7.7.2 右外連接 211
7.7.3 全外連接 212
7.8 使用排序函數 212
7.9 動態查詢 215
7.10 疑難解惑 216
7.11 經典習題 216
第8章 數據的更新 219
8.1 插入數據——INSERT219
8.1.1 插入單行數據 220
8.1.2 插入多行數據 223
8.2 修改數據——UPDATE225
8.2.1 修改單行數據 225
8.2.2 修改多行數據 226
8.3 刪除數據——DELETE227
8.3.1 刪除部分數據 227
8.3.2 刪除表中所有數據 228
8.4 疑難解惑 229
8.5 經典習題 229
第9章 規則、默認和完整性約束231
9.1 規則和默認概述 231
9.2 規則的基本操作 231
9.2.1 創建規則 231
9.2.2 把自定義規則綁定到列 232
9.2.3 驗證規則作用 233
9.2.4 取消規則綁定 233
9.2.5 刪除規則 234
9.3 默認的基本操作 234
9.3.1 創建默認 235
9.3.2 把自定義默認綁定到列 235
9.3.3 驗證默認作用 236
9.3.4 取消默認綁定 236
9.3.5 刪除默認值 237
9.4 完整性約束 237
9.4.1 主鍵約束 238
9.4.2 外鍵約束 241
9.4.3 唯一性約束 244
9.4.4 CHECK約束 245
9.4.5 DEFAULT約束 245
9.4.6 NOT NULL約束 245
9.5 疑難解惑 246
9.6 經典習題 246
第10章 創建和使用索引 247
10.1 索引的含義和特點 247
10.2 索引的分類 248
10.3 索引的設計原則 249
10.4 創建索引 250
10.4.1 使用對象資源管理器創建索引 250
10.4.2 使用T-SQL語句創建索引 251
10.5 管理和維護索引 254
10.5.1 顯示索引信息 254
10.5.2 重命名索引 256
10.5.3 刪除索引 257
10.6 疑難解惑 258
10.7 經典習題 259
第11章事務和鎖 260
11.1 事務管理 260
11.1.1 事務的原理 261
11.1.2 事務管理的常用語句 262
11.1.3 事務的隔離級別 262
11.1.4 事務的應用案例 263
11.2 鎖 265
11.2.1 鎖的內涵與作用 265
11.2.2 可鎖定資源與鎖的類型 266
11.2.3 死鎖 267
11.2.4 鎖的應用案例 269
11.3 疑難解惑 273
11.4 經典習題 273
第12章游標 274
12.1 認識游標 274
12.1.1 游標的概念 274
12.1.2 游標的優點 274
12.1.3 游標的分類 275
12.2 游標的基本操作 276
12.2.1 聲明游標 276
12.2.2 打開游標 278
12.2.3 讀取游標中的數據 278
12.2.4 關閉游標 280
12.2.5 釋放游標 280
12.3 游標的運用 281
12.3.1 使用游標變量 281
12.3.2 用游標為變量賦值 282
12.3.3 用ORDER BY子句改變游標中行的順序 283
12.3.4 用游標修改數據 284
12.3.5 用游標刪除數據 285
12.4 使用系統存儲過程管理游標 286
12.4.1 sp_cursor_list存儲過程 286
12.4.2 sp_describe_cursor存儲過程 288
12.4.3 sp_describe_cursor_columns存儲過程 289
12.4.4 sp_describe_cursor_tables存儲過程 291
12.5 疑難解惑 292
12.6 經典習題 292
第13章 存儲過程和自定義函數293
13.1 存儲過程概述 293
13.2 存儲過程分類 294
13.2.1 系統存儲過程 294
13.2.2 用戶存儲過程 294
13.2.3 擴展存儲過程 295
13.3 創建存儲過程 295
13.3.1 如何創建存儲過程 295
13.3.2 調用存儲過程 298
13.3.3 創建帶輸入參數的存儲過程 300
13.3.4 創建帶輸出參數的存儲過程 302
13.4 管理存儲過程 303
13.4.1 修改存儲過程 303
13.4.2 查看存儲過程信息 305
13.4.3 重命名存儲過程 307
13.4.4 刪除存儲過程 307
13.5 擴展存儲過程 308
13.6 自定義函數 310
13.6.1 創建標量函數 311
13.6.2 創建表值函數 312
13.6.3 刪除函數 313
13.7 疑難解惑 314
13.8 經典習題 315
第14章 視圖操作 316
14.1 視圖概述 316
14.1.1 視圖的概念 316
14.1.2 視圖的分類 317
14.1.3 視圖的優點和作用 317
14.2 創建視圖 318
14.2.1 使用視圖設計器創建視圖 318
14.2.2 使用T-SQL命令創建視圖 320
14.3 修改視圖 322
14.4 查看視圖信息 323
14.5 使用視圖修改數據 325
14.5.1 通過視圖向基本表中插入數據 325
14.5.2 通過視圖修改基本表中的數據 326
14.5.3 通過視圖刪除基本表中的數據 326
14.6 刪除視圖 327
14.7 疑難解惑 328
14.8 經典習題 328
第15章 觸發器 329
15.1 觸發器概述 329
15.1.1 什么是觸發器 329
15.1.2 觸發器作用 330
15.1.3 觸發器分類 330
15.2 創建DML觸發器 331
15.2.1 INSERT觸發器 331
15.2.2 DELETE觸發器 334
15.2.3 UPDATE觸發器 335
15.2.4 替代觸發器 336
15.2.5 允許使用嵌套觸發器 337
15.2.6 遞歸觸發器 338
15.3 創建DDL觸發器 339
15.3.1 創建DDL觸發器的語法 340
15.3.2 創建服務器作用域的DDL觸發器 340
15.4 管理觸發器 341
15.4.1 查看觸發器 341
15.4.2 修改觸發器 342
15.4.3 刪除觸發器 343
15.4.4 啟用和禁用觸發器 344
15.5 疑難解惑 345
15.6 經典習題 345
第16章 SQL Server 2016的安全機制 346
16.1 SQL Server 2016安全性概述 346
16.1.1 SQL Server 2016的安全機制簡介 346
16.1.2 基本安全術語 348
16.2 安全驗證方式 349
16.2.1 Windows身份驗證模式 349
16.2.2 混合模式 349
16.2.3 設置驗證模式 350
16.3 SQL Server 2016登錄名 350
16.3.1 創建登錄賬戶 350
16.3.2 修改登錄賬戶 357
16.3.3 刪除登錄賬戶 359
16.4 SQL Server 2016的角色與權限 359
16.4.1 固定服務器角色 360
16.4.2 數據庫角色 361
16.4.3 自定義數據庫角色 361
16.4.4 應用程序角色 364
16.4.5 將登錄指派到角色 366
16.4.6 將角色指派到多個登錄賬戶 367
16.4.7 權限管理 368
16.5 疑難解惑 371
16.6 經典習題 371
第17章 數據庫的備份與恢復 372
17.1 備份與恢復介紹 372
17.1.1 備份類型 372
17.1.2 恢復模式 373
17.1.3 配置恢復模式 374
17.2 備份設備 375
17.2.1 備份設備類型 375
17.2.2 創建備份設備 375
17.2.3 查看備份設備 377
17.2.4 刪除備份設備 377
17.3 使用T-SQL語言備份數據庫 378
17.3.1 完整備份與差異備份 378
17.3.2 文件和文件組備份 380
17.3.3 事務日志備份 382
17.4 在SQL Server Management Studio中還原數據庫 383
17.4.1 還原數據庫的方式 383
17.4.2 還原數據庫前要注意的事項 384
17.4.3 還原數據庫備份 386
17.4.4 還原文件和文件組備份 387
17.5 用T-SQL語句還原數據庫 388
17.5.1 完整備份還原 388
17.5.2 差異備份還原 391
17.5.3 事務日志備份還原 391
17.5.4 文件和文件組備份還原 392
17.5.5 將數據庫還原到某個時間點 392
17.5.6 將文件還原到新位置上 393
17.6 建立自動備份的維護計劃 394
17.7 通過Always Encrypted安全功能為數據加密 397
17.8 動態數據屏蔽 400
17.9 疑難解惑 403
17.10 經典習題 404
第18章 開發企業人事管理系統405
18.1 需求分析 405
18.2 系統功能結構 406
18.2.1 構建開發環境 406
18.2.2 企業人事管理系統功能結構 406
18.3 數據庫設計 407
18.3.1 數據庫分析 407
18.3.2 數據庫實體E-R圖 407
18.3.3 數據庫表的設計 411
18.4 開發前準備工作 414
18.5 用戶登錄模塊 421
18.5.1 定義數據庫連接方法 422
18.5.2 防止窗口被關閉 425
18.5.3 驗證用戶名和密碼 425
18.6 人事檔案管理模塊 427
18.6.1 界面開發 427
18.6.2 代碼開發 428
18.6.3 添加和編輯員工照片 445
18.7 用戶設置模塊 446
18.7.1 添加/修改用戶信息 447
18.7.2 刪除用戶基本信息 450
18.7.3 設置用戶權限 451
18.8 數據庫維護模塊 452
18.8.1 數據庫備份功能 453
18.8.2 數據庫還原功能 454
18.9 系統運行 454
18.9.1 登錄界面 454
18.9.2 企業人事管理系統主界面 455
18.9.3 人事檔案管理界面 455
18.9.4 人事資料查詢界面 455
18.9.5 員工信息提醒界面 456
18.9.6 員工通訊錄界面 456
18.9.7 日常記事界面 457
18.9.8 用戶設置 457
18.9.9 基礎信息維護管理 457
18.10 項目總結 458