內容簡介
本書面向SQL Server 2017初學者,以及廣大
資料庫設計愛好者。全書內容比較實用,涉及面廣,通俗易懂地介紹SQL Server 2017資料庫套用與開發的相關基礎知識,提供大量具體操作SQL Server 2017資料庫的示例,供讀者實踐。每節都清晰地闡述代碼如何工作及其作用,使讀者能在較短的時間內有效地掌握SQL Server 2017資料庫的套用。本書共20章,內容包括SQL Server 2017的安裝與配置、Transact-SQL語言基礎、Transact-SQL語句的查詢與套用、資料庫的操作、數據表的操作、約束數據表中的數據、管理數據表中的數據、查詢數據表中的數據、數據表中的高級查詢、認識系統函式和自定義函式、視圖的創建與套用。
目錄
第1章 初識SQL Server 2017 1
1.1 認識SQL Server 2017 1
1.1.1 SQL Server 2017新特點 1
1.1.2 SQL Server 2017的版本 2
1.2 SQL Server 2017的組件 3
1.2.1 SQL Server 2017的資料庫引擎 3
1.2.2 分析服務 4
1.2.3 集成服務 4
1.2.4 報表服務 4
1.3 SQL Server 2017的新增功能 4
1.3.1 資料庫引擎中的新增功能 4
1.3.2 集成服務中的新增功能 5
1.3.3 分析服務中的新增功能 6
1.3.4 報表服務中的新增功能 6
1.3.5 機器學習中的新增功能 7
1.3.6 主數據服務中的新增功能 7
1.4 疑難解答 8
1.5 經典習題 8
第2章 SQL Server 2017的安裝和配置 9
2.1 安裝SQL Server 2017 9
2.1.1 SQL Server 2017安裝環境需求 9
2.1.2 安裝SQL Server 2017 10
2.1.3 SQL Server 2017常見實用程式 18
2.2 安裝SQL Server Management Studio 20
2.3 SQL Server Management Studio基本操作 21
2.3.1 SSMS的啟動與連線 22
2.3.2 使用模板資源管理器 23
2.3.3 解決方案和項目腳本 2...
2.3.4配置伺服器的屬性 25
2.3.5查詢編輯器的套用 32
2.4疑難解惑 36
2.5經典習題 36
第3章Transact-SQL語言基礎 37
3.1Transact-SQL概述 37
3.1.1什麼是Transact-SQL 38
3.1.2T-SQL語法的約定 38
3.1.3標識符的命名規則 40
3.2常量 41
3.2.1數字常量 41
3.2.2字元串常量 42
3.2.3日期和時間常量 42
3.2.4符號常量 42
3.3變數 43
3.3.1全局變數 43
3.3.2局部變數 46
3.3.3批處理和腳本 47
3.4運算符和表達式 49
3.4.1算術運算符 49
3.4.2比較運算符 49
3.4.3邏輯運算符 50
3.4.4連線運算符 50
3.4.5按位運算符 50
3.4.6運算符的優先權 51
3.4.7什麼是表達式 51
3.4.8表達式的分類 51
3.5Transact-SQL語言中的通配符 52
3.6Transact-SQL語言中的注釋 53
3.7疑難解惑 54
3.8經典習題 54
第4章Transact-SQL語句的套用 55
4.1數據定義語句 55
4.1.1創建對象CREATE語句 55
4.2數據操作語句 61
4.2.1數據插入INSERT語句 62
4.2.2數據修改UPDATE語句 63
4.2.3數據刪除DELETE語句 64
4.2.4數據查詢SELECT語句 65
4.3數據控制語句 67
4.3.1授予許可權GRANT語句 67
4.3.2收回許可權REVOKE語句 68
4.3.3禁止許可權DENY語句 68
4.4其他基本語句 69
4.4.1數據聲明DECLARE語句 69
4.4.2數據賦值SET語句 70
4.4.3數據輸出PRINT語句 71
4.5流程控制語句 71
4.5.1BEGIN…END語句 71
4.5.2IF…ELSE語句 72
4.5.3CASE語句 73
4.5.4WHILE語句 75
4.5.5GOTO語句 76
4.5.6WAITFOR語句 77
4.5.7RETURN語句 78
4.6批處理語句 78
4.7疑難解惑 80
4.8經典習題 80
第5章資料庫的創建與管理 81
5.1資料庫組成 81
5.1.1數據檔案 82
5.1.2日誌檔案 82
5.2系統資料庫 82
5.2.1master資料庫 83
5.2.2model資料庫 83
5.2.3msdb資料庫 83
5.2.4tempdb資料庫 83
5.3創建資料庫 83
5.3.1使用SSMS創建資料庫 84
5.3.2使用T-SQL語句創建資料庫 87
5.4使用SSMS管理資料庫 90
5.4.1修改資料庫的方法 90
5.4.2修改資料庫的初始大小 91
5.4.3增加資料庫的容量 92
5.4.4縮減資料庫的容量 93
5.4.5修改資料庫的名稱 93
5.5使用T-SQL管理資料庫 94
5.5.1ALTERDATABASE的語法結構 94
5.5.2修改資料庫數據檔案的初始大小 95
5.5.3使用T-SQL語句增加資料庫容量 95
5.5.4使用T-SQL語句縮減資料庫容量 96
5.5.5使用T-SQL語句修改資料庫名稱 97
5.6查看資料庫信息 98
5.6.1使用目錄視圖 98
5.6.2使用函式查看資料庫信息 98
5.6.3使用系統存儲過程 100
5.6.4使用SSMS查看資料庫信息 100
5.7刪除資料庫 101
5.7.1使用SSMS刪除資料庫 101
5.7.2使用T-SQL語句刪除資料庫 102
5.8疑難解惑 102
5.9經典習題 103
第6章數據表的創建與管理 104
6.1認識資料庫對象 104
6.1.1數據表 104
6.1.2視圖 105
6.1.3索引 105
6.1.4存儲過程 105
6.1.5觸發器 105
6.2數據類型 106
6.2.1基本數據類型 106
6.2.2自定義數據類型 109
6.2.3刪除自定義數據類型 111
6.3創建數據表 113
6.3.1在SSMS中創建數據表 113
6.3.2使用T-SQL創建數據表 114
6.4管理數據表 115
6.4.1增加表欄位 116
6.4.2修改表欄位 118
6.4.3刪除表欄位 119
6.5查看數據表 121
6.5.1查看錶結構 121
6.5.2查看錶信息 121
6.5.3查看錶數據 122
6.5.4查看錶關係 122
6.6刪除數據表 123
6.6.1以界面方式刪除數據表 123
6.6.2使用T-SQL語句刪除數據表 124
6.7疑難解惑 125
6.8經典習題 125
第7章約束數據表中的數據 127
7.1認識數據表中的約束 127
7.2主鍵約束 128
7.2.1在創建表時添加主鍵約束 128
7.2.2在現有表中添加主鍵約束 130
7.2.3定義多欄位聯合主鍵約束 132
7.2.4刪除主鍵約束 132
7.3外鍵約束 133
7.3.1在創建表時添加外鍵約束 133
7.3.2在現有表中添加外鍵約束 135
7.3.3刪除外鍵約束 136
7.4默認值約束 137
7.4.1在創建表時添加默認值約束 138
7.4.2在現有表中添加默認值約束 139
7.4.3刪除默認值約束 141
7.5檢查約束 142
7.5.1在創建表時添加檢查約束 142
7.5.2在現有表中添加檢查約束 144
7.5.3刪除檢查約束 145
7.6唯一性約束 146
7.6.1在創建表時添加唯一性約束 146
7.6.2在現有表中添加唯一性約束 149
7.6.3刪除唯一性約束 150
7.7非空約束 151
7.7.1在創建表時添加非空約束 151
7.7.2在現有表中添加非空約束 152
7.7.3刪除非空約束 153
7.8使用SSMS管理數據表中的約束 153
7.8.1使用SSMS管理主鍵約束 153
7.8.2使用SSMS管理外鍵約束 155
7.8.3使用SSMS管理默認值約束 158
7.8.4使用SSMS管理檢查約束 160
7.8.5使用SSMS管理唯一性約束 163
7.8.6使用SSMS管理非空約束 165
7.9疑難解惑 166
7.10經典習題 166
第8章管理數據表中的數據 168
8.1使用INSERT語句插入數據 168
8.1.1INSERT語句的語法規則 168
8.1.2向表中所有欄位插入數據 169
8.1.3 向表中指定欄位插入數據 172
8.1.4 一次插入多行數據記錄 173
8.1.5 將查詢結果插入到表中 174
8.2 使用UPDATE語句修改數據 176
8.2.1 UPDATE語句的語法規則 177
8.2.2 修改表中某列所有數據記錄 177
8.2.3 修改表中指定單行數據記錄 178
8.2.4 修改表中指定多行數據記錄 179
8.2.5 修改表中前N條數據記錄 179
8.3 使用DELETE語句刪除數據 180
8.3.1 DELETE語句的語法規則 180
8.3.2 刪除表中的指定數據記錄 181
8.3.3 刪除表中前N條數據記錄 182
8.3.4 刪除表中的所有數據記錄 183
8.4 在SSMS中管理數據表中的數據 184
8.4.1 向數據表中添加數據記錄 184
8.4.2 修改數據表中的數據記錄 185
8.4.3 刪除數據表中的數據記錄 185
8.5 疑難解惑 186
8.6 經典習題 187
第9章 查詢數據表中的數據 188
9.1 查詢工具的使用 188
9.1.1 SQL Server查詢視窗 188
9.1.2 查詢結果的顯示方法 190
9.2 數據的簡單查詢 192
9.2.1 查詢表中的全部數據 192
9.2.2 查詢表中的指定數據 193
9.2.3 使用TOP關鍵字查詢 193
9.2.4 查詢的列為表達式 194
9.2.5 對查詢結果排序 194
9.2.6 對查詢結果分組 195
9.2.7 對分組結果過濾查詢 196
9.3 使用WHERE子句進行條件查詢 197
9.3.1 使用關係表達式查詢 197
9.3.2 使用BETWEEN AND範圍查詢 199
9.3.3 使用IN關鍵字查詢 200
9.3.4 使用LIKE關鍵字查詢 200
9.3.5 使用IS NULL查詢空值 203
9.4 使用聚合函式進行統計查詢 204
9.4.1 使用SUM( )求列的和 204
9.4.2 使用AVG( )求列平均值 205
9.4.3 使用MAX( )求列最大值 206
9.4.4 使用MIN( )求列最小值 207
9.4.5 使用COUNT( )統計 208
9.5 疑難解惑 210
9.6 經典習題 210
第10章 數據表中數據的高級查詢 212
10.1 多表之間的子查詢 212
10.1.1 使用比較運算符的子查詢 212
10.1.2 使用IN的子查詢 215
10.1.3 使用ANY的子查詢 216
10.1.4 使用ALL的子查詢 217
10.1.5 使用SOME的子查詢 217
10.1.6 使用EXISTS的子查詢 218
10.2 多表內連線查詢 220
10.2.1 笛卡兒積查詢 220
10.2.2 內連線的簡單查詢 221
10.2.3 相等內連線的查詢 221
10.2.4 不等內連線的查詢 222
10.2.5 特殊的內連線查詢 222
10.2.6 帶條件的內連線查詢 223
10.3 多表外連線查詢 223
10.3.1 認識外連線查詢 223
10.3.2 左外連線的查詢 224
10.3.3 右外連線的查詢 225
10.3.4 全外連線的查詢 225
10.4 動態查詢 226
10.5 疑難解惑 226
10.6 經典習題 227
第11章 系統函式與自定義函式 229
11.1 SQL Server 2017函式簡介 229
11.2 字元串函式 230
11.2.1 ASCII( )函式 230
11.2.2 CHAR( )函式 230
11.2.3 LEFT( )函式 230
11.2.4 RIGHT( )函式 231
11.2.5 LTRIM( )函式 231
11.2.6 RTRIM( )函式 232
11.2.7 STR( )函式 232
11.2.8 REVERSE(s)函式 232
11.2.9 LEN(str)函式 233
11.2.10 CHARINDEX函式 233
11.2.11 SUBSTRING( )函式 234
11.2.12 LOWER( )函式 234
11.2.13 UPPER( )函式 235
11.2.14 REPLACE(s,s1,s2)函式 235
11.3 數學函式 235
11.3.1 ABS(x)函式 236
11.3.2 PI( )函式 236
11.3.3 SQRT(x) 函式 236
11.3.4 RAND( )和RAND(x)函式 236
11.3.5 ROUND(x,y)函式 237
11.3.6 SIGN(x) 函式 237
11.3.7 CEILING(x)和FLOOR(x)函式 238
11.3.8 POWER(x,y)、SQUARE(x)和EXP(x)函式 238
11.3.9 LOG(x)和LOG10(x)函式 239
11.3.10 RADIANS(x)和DEGREES(x)函式 240
11.3.11 SIN(x)和ASIN(x)函式 240
11.3.12 COS(x)和ACOS(x)函式 241
11.3.13 TAN(x)、ATAN(x)與COT(x)函式 242
11.4 日期和時間函式 242
11.4.1 GETDATE( )函式 243
11.4.2 UTCDATE( )函式 243
11.4.3 DAY(d)函式 243
11.4.4 MONTH(d)函式 244
11.4.5 YEAR(d)函式 244
11.4.6 DATENAME(dp,d)函式 244
11.4.7 DATEPART(dp,d)函式 245
11.4.8 DATEADD(dp,num,d)函式 245
11.5 系統信息函式 246
11.5.1 COL_LENGTH(table,column)函式 246
11.5.2 COL_NAME (table_id,column_id)函式 247
11.5.3 DATALENGTH (expression)函式 247
11.5.4 DB_ID(database_name) 247
11.5.5 DB_NAME(database_id)函式 248
11.5.6 GETANSINULL( )(database_name)函式 248
11.5.7 HOST_ID( )函式 249
11.5.8 HOST_NAME( )函式 249
11.5.9 OBJECT_ID( )函式 249
11.5.10 SUSER_SID (login_name)函式 250
11.5.11 SUSER_SNAME( )函式 250
11.5.12 OBJECT_NAME( )函式 251
11.5.13 USER_ID(user)函式 251
11.5.14 USER_NAME(id)函式 251
11.6 數據類型轉換函式 252
11.6.1 CAST( )函式 252
11.6.2 CONVERT( )函式 252
11.7 文本和圖像函式 253
11.7.1 TEXTPTR函式 253
11.7.2 TEXTVALID函式 254
11.8 自定義函式 254
11.8.1 自定義函式的語法 254
11.8.2 創建標量函式 255
11.8.3 創建表值函式 257
11.8.4 修改自定義函式 260
11.8.5 刪除自定義函式 260
11.9 在SSMS中管理自定義函式 261
11.9.1 創建自定義函式 261
11.9.2 修改自定義函式 263
11.9.3 刪除自定義函式 263
11.10 疑難解惑 264
11.11 經典習題 264
第12章 視圖的創建與套用 266
12.1 什麼是視圖 266
12.1.1 視圖的概念 266
12.1.2 視圖的作用 267
12.1.3 視圖的分類 268
12.2 創建視圖 269
12.2.1 創建視圖的語法規則 269
12.2.2 在單表上創建視圖 270
12.2.3 在多表上創建視圖 272
12.3 修改視圖 273
12.3.1 修改視圖的語法規則 273
12.3.2 修改視圖的具體內容 273
12.3.3 重命名視圖的名稱 274
12.4 查看視圖信息 275
12.4.1 通過SSMS查看 275
12.4.2 使用系統存儲過程查看 276
12.5 通過視圖更新數據 277
12.5.1 通過視圖插入數據 277
12.5.2 通過視圖修改數據 279
12.5.3 通過視圖刪除數據 280
12.6 刪除視圖 281
12.6.1 刪除視圖的語法 281
12.6.2 刪除不用的視圖 282
12.7 在SSMS中管理視圖 282
12.7.1 創建視圖 282
12.7.2 修改視圖 284
12.7.3 刪除視圖 285
12.8 疑難解惑 285
12.9 經典習題 286
第13章 事務和鎖的套用 287
13.1 事務管理 287
13.1.1 事務的原理 288
13.1.2 事務管理的常用語句 289
13.1.3 事務的隔離級別 289
13.1.4 事務的套用實例 290
13.2 鎖的套用 292
13.2.1 鎖的內涵與作用 292
13.2.2 可鎖定資源與鎖的類型 293
13.2.3 死鎖的原因 294
13.2.4 鎖的套用實例 295
13.3 疑難解惑 299
13.4 經典習題 299
第14章 索引的創建和使用 300
14.1 什麼是索引 300
14.1.1 索引的作用 300
14.1.2 索引的優缺點 301
14.1.3 索引的分類 301
14.1.4 索引的設計準則 302
14.2 創建索引 303
14.2.1 創建索引的語法 303
14.2.2 創建聚集索引 305
14.2.3 創建非聚集索引 306
14.2.4 創建複合索引 306
14.3 修改索引 307
14.3.1 修改索引的語法 307
14.3.2 禁用啟用索引 307
14.3.3 重新生成索引 308
14.3.4 修改索引的名稱 309
14.4 查看索引 309
14.4.1 查看數據表中的索引 310
14.4.2 查看索引的統計信息 310
14.5 刪除索引 311
14.5.1 刪除索引的語法 311
14.5.2 刪除一個索引 312
14.5.3 同時刪除多個索引 313
14.6 在SSMS中管理索引 313
14.6.1 在SSMS中創建索引 313
14.6.2 在SSMS中查看索引 315
14.6.3 在SSMS中修改索引 316
14.6.4 在SSMS中刪除索引 317
14.7 疑難解惑 318
14.8 經典習題 319
第15章 游標的創建與套用 320
15.1 認識游標 320
15.1.1 游標的概念 320
15.1.2 游標的優點 321
15.1.3 游標的分類 321
15.2 游標的基本操作 322
15.2.1 聲明游標 322
15.2.2 打開游標 324
15.2.3 讀取游標 324
15.2.4 關閉游標 326
15.2.5 釋放游標 326
15.3 游標的運用 327
15.3.1 使用游標變數 327
15.3.2 用游標為變數賦值 328
15.3.3 改變游標中行的順序 329
15.3.4 使用游標修改數據 330
15.3.5 使用游標刪除數據 331
15.4 使用系統存儲過程查看游標屬性 332
15.4.1 查看伺服器游標的屬性 332
15.4.2 查看當前連線的伺服器游標屬性 334
15.4.3 查看伺服器游標結果集中的列屬性 336
15.4.4 查看伺服器游標被引用對象或基本表的屬性 337
15.5 疑難解惑 339
15.6 經典習題 339
第16章 存儲過程的創建與套用 340
16.1 認識存儲過程 340
16.1.1 存儲過程的優點 340
16.1.2 存儲過程的類型 341
16.2 創建存儲過程 342
16.2.1 創建存儲過程的語法 342
16.2.2 創建不帶參數的存儲過程 343
16.2.3 創建帶輸入參數的存儲過程 344
16.2.4 創建帶輸出參數的存儲過程 345
16.2.5 創建帶加密選項的存儲過程 346
16.3 執行存儲過程 346
16.3.1 執行存儲過程的語法 347
16.3.2 執行不帶參數的存儲過程 348
16.3.3 執行帶輸入參數的存儲過程 348
16.3.4 執行帶輸出參數的存儲過程 350
16.4 修改存儲過程 350
16.4.1 修改存儲過程的語法 350
16.4.2 修改存儲過程的內容 351
16.4.3 修改存儲過程的名稱 352
16.5 查看存儲過程 352
16.5.1 使用sp_helptext查看 352
16.5.2 使用sys.sql_modules查看 353
16.5.3 使用OBJECT_DEFINITION查看 353
16.6 刪除存儲過程 354
16.6.1 刪除存儲過程的語法 354
16.6.2 刪除不需要的存儲過程 354
16.7 在SSMS中管理存儲過程 355
16.7.1 在SSMS中創建存儲過程 356
16.7.2 在SSMS中執行存儲過程 357
16.7.3 在SSMS中修改存儲過程 358
16.7.4 在SSMS中重命名存儲過程 358
16.7.5 在SSMS中查看存儲過程信息 359
16.7.6 在SSMS中刪除存儲過程 360
16.8 疑難解惑 360
16.9 經典習題 361
第17章 觸發器的創建與套用 362
17.1 認識觸發器 362
17.1.1 觸發器的概念 362
17.1.2 觸發器的作用 363
17.1.3 觸發器的分類 363
17.2 創建觸發器 364
17.2.1 創建DML觸發器 364
17.2.2 創建DDL觸發器 369
17.2.3 創建登錄觸發器 371
17.3 修改觸發器 373
17.3.1 修改DML觸發器 373
17.3.2 修改DDL觸發器 374
17.3.3 修改登錄觸發器 375
17.4 管理觸發器 376
17.4.1 禁用觸發器 376
17.4.2 啟用觸發器 377
17.4.3 查看觸發器 378
17.4.4 刪除觸發器 379
17.4.5 重命名觸發器 379
17.5 認識其他觸發器 380
17.5.1 替代觸發器 380
17.5.2 嵌套觸發器 381
17.5.3 遞歸觸發器 382
17.6 在SSMS中管理觸發器 383
17.6.1 在SSMS中創建觸發器 383
17.6.2 在SSMS中修改觸發器 384
17.6.3 在SSMS中查看觸發器 385
17.6.4 在SSMS中刪除觸發器 385
17.7 疑難解惑 386
17.8 經典習題 386
第18章 數據安全相關對象的管理 387
18.1 與資料庫安全相關的對象 387
18.2 登錄賬戶的管理 389
18.2.1 創建登錄賬戶 389
18.2.2 修改登錄賬戶 391
18.2.3 刪除登錄賬戶 392
18.3 在SSMS中管理登錄賬戶 392
18.3.1 創建登錄賬戶 392
18.3.2 修改登錄賬戶 394
18.3.3 刪除登錄賬戶 395
18.4 SQL Server的角色管理 396
18.4.1 固定伺服器角色 396
18.4.2 資料庫角色 397
18.4.3 自定義資料庫角色 397
18.4.4 應用程式角色 400
18.4.5 將登錄指派到角色 402
18.4.6 將角色指派到多個登錄賬戶 402
18.5 SQL Server的許可權管理 404
18.5.1 認識許可權 404
18.5.2 授予許可權 404
18.5.3 拒絕許可權 406
18.5.4 撤銷許可權 407
18.6 疑難解惑 408
18.7 經典習題 408
第19章 資料庫的備份與恢復 409
19.1 認識資料庫的備份與恢復 409
19.1.1 資料庫的備份類型 410
19.1.2 資料庫的恢復模式 410
19.1.3 配置資料庫的恢復模式 411
19.2 資料庫的備份設備 412
19.2.1 資料庫的備份設備 412
19.2.2 創建資料庫備份設備 413
19.2.3 查看資料庫備份設備 414
19.2.4 刪除資料庫備份設備 415
19.3 資料庫的備份 416
19.3.1 完整備份與差異備份 416
19.3.2 檔案和檔案組備份 418
19.3.3 事務日誌的備份 420
19.4 資料庫的還原 421
19.4.1 還原資料庫的方式 421
19.4.2 還原前的注意事項 422
19.4.3 完整備份的還原 424
19.4.4 差異備份的還原 426
19.4.5 事務日誌備份的還原 427
19.4.6 檔案和檔案組備份的還原 428
19.5 在SSMS中備份還原資料庫 429
19.5.1 在SSMS中備份資料庫 429
19.5.2 還原資料庫備份檔案 430
19.5.3 還原檔案和檔案組備份 432
19.6 疑難解惑 433
19.7 經典習題 434
第20章 資料庫系統的自動化管理 435
20.1 認識SQL Server代理 435
20.1.1 什麼是SQL Server代理 435
20.1.2 設定SQL Server代理 436
20.1.3 啟動SQL Server代理 438
20.1.4 關閉SQL Server代理 438
20.2 SQL Server代理中的作業 440
20.2.1 創建一個作業 440
20.2.2 定義一個作業步驟 440
20.2.3 創建一個作業執行計畫 441
20.2.4 查看與管理作業 442
20.3 管理中的維護計畫 444
20.3.1 認識維護計畫 444
20.3.2 使用嚮導創建維護計畫 445
20.4 SQL Server代理中的警報 447
20.4.1 創建警報 447
20.4.2 查看警報 447
20.4.2 3 刪除警報 448
20.5 SQL Server代理中的操作員 449
20.5.1 創建操作員 449
20.5.2 使用操作員 450
20.6 疑難解惑 451
20.7 經典習題 451