目 录
第1章 初识SQL Server 2019 001
1.1 数据库与SQL Server 2019 002
1.1.1 数据库与关系数据库 002
1.1.2 常见数据库产品介绍 003
1.1.3 SQL Server 2019的组成 004
1.2 SQL Server 2019的下载与安装 005
1.2.1 SQL Server 2019的下载 005
1.2.2 SQL Server 2019的安装 007
1.2.3 SQL Server 2019的卸载 019
1.3 安装SQL Server Management Studio 019
1.4 SQL Server Management Studio的基本操作 021
1.4.1 启动与连接SQL Server服务器 021
1.4.2 使用模板资源管理器 022
1.4.3 配置服务器的属性 024
1.4.4 查询编辑器的使用 031
1.5 疑难问题解析 034
1.6 综合实战训练营 034
第2章 SQL Server数据库 035
2.1 SQL Server数据库概述 036
2.1.1 数据库文件 036
2.1.2 数据库文件组 036
2.1.3 认识数据库对象 037
2.1.4 认识系统数据库 037
2.2 创建数据库 038
2.2.1 使用SQL Server Management Studio创建数据库 038
2.2.2 使用Transact-SQL创建数据库 042
2.3 使用SQL Server Management Studio管理数据库 044
2.3.1 修改数据库的大小 044
2.3.2 更改数据库的自动增长设置 045
2.3.3 更改数据库名称 046
2.3.4 删除数据库 047
2.4 使用Transact-SQL语句管理数据库 048
2.4.1 使用Transact-SQL语句修改数据库的大小 048
2.4.2 更改数据库的自动增长设置 049
2.4.3 使用Transact-SQL语句修改数据库名称 050
2.4.4 使用Transact-SQL语句删除数据库 051
2.5 查看数据库信息 051
2.5.1 使用目录视图查看 051
2.5.2 使用函数查看 052
2.5.3 使用系统存储过程查看 053
2.5.4 使用SQL Server Management Studio查看 054
2.6 疑难问题解析 054
2.7 综合实战训练营 055
第3章 数据库中的数据表 056
3.1 数据类型 057
3.1.1 基本数据类型 057
3.1.2 自定义数据类型 059
3.1.3 删除自定义数据类型 061
3.2 创建数据表 062
3.2.1 使用对象资源管理器创建表 062
3.2.2 使用Transact-SQL创建表 063
3.3 使用SQL Server Management Studio管理数据表 064
3.3.1 增加表字段 065
3.3.2 修改表字段 066
3.3.3 删除表字段 067
3.3.4 删除数据表 067
3.4 使用Transact-SQL语句管理数据表 068
3.4.1 使用Transact-SQL 语句添加表字段 068
3.4.2 使用Transact-SQL 语句修改表字段 069
3.4.3 使用Transact-SQL 语句删除表字段 070
3.4.4 使用Transact-SQL 语句删除数据表 070
3.5 查看数据表 071
3.5.1 查看表结构 071
3.5.2 查看表信息 071
3.5.3 查看表数据 072
3.5.4 查看表关系 072
3.6 疑难问题解析 073
3.7 综合实战训练营 074
第4 章 Transact-SQL 语言基础 075
4.1 Transact-SQL 概述 076
4.1.1 什么是Transact-SQL 076
4.1.2 T-SQL 语法的约定 076
4.1.3 标识符的命名规则 077
4.2 常量 078
4.2.1 数字常量 079
4.2.2 字符串常量 079
4.2.3 日期和时间常量 079
4.2.4 符号常量 079
4.3 变量 080
4.3.1 全局变量 080
4.3.2 局部变量 081
4.3.3 批处理和脚本 082
4.4 运算符和表达式 083
4.4.1 算术运算符 083
4.4.2 比较运算符 083
4.4.3 逻辑运算符 084
4.4.4 连接运算符 084
4.4.5 按位运算符 084
4.4.6 运算符的优先级 085
4.4.7 什么是表达式 085
4.4.8 表达式的分类 085
4.5 T-SQL 语言中的通配符 086
4.6 T-SQL 语言中的注释 086
4.7 疑难问题解析 087
4.8 综合实战训练营 087
第5 章 掌握Transact-SQL 语句 088
5.1 数据定义语句(DDL) 089
5.1.1 创建对象语句CREATE 089
5.1.2 修改对象语句ALTER 092
5.1.3 删除对象语句DROP 094
5.2 数据操作语句(DML) 094
5.2.1 数据插入语句INSERT 095
5.2.2 数据修改语句UPDATE 096
5.2.3 数据删除语句DELETE 097
5.2.4 数据查询语句SELECT 098
5.3 数据控制语句(DCL) 099
5.3.1 授予权限语句GRANT 099
5.3.2 收回权限语句REVOKE 100
5.3.3 禁止权限语句DENY 100
5.4 其他基本语句 101
5.4.1 数据声明语句DECLARE 101
5.4.2 数据赋值语句SET 102
5.4.3 数据输出语句PRINT 102
5.5 流程控制语句 103
5.5.1 BEGIN…END 语句 103
5.5.2 IF…ELSE 语句 103
5.5.3 CASE 语句 104
5.5.4 WHILE 语句 106
5.5.5 GOTO 语句 107
5.5.6 WAITFOR 语句 108
5.5.7 RETURN 语句 108
5.6 疑难问题解析 109
5.7 综合实战训练营 109
第6 章 规则、默认值和完整性约束 110
6.1 数据完整性的基本概念 111
6.2 规则的基本操作 111
6.2.1 创建规则 111
6.2.2 把自定义规则绑定到列 112
6.2.3 验证规则的作用 112
6.2.4 取消规则绑定 113
6.2.5 删除规则 113
6.3 默认值的基本操作 114
6.3.1 创建默认值 114
6.3.2 把自定义默认值绑定到列 114
6.3.3 验证默认值的作用 115
6.3.4 取消默认值的绑定 115
6.3.5 删除默认值 116
6.4 数据表的约束条件 116
6.4.1 认识数据表中的约束 116
6.4.2 主键约束 117
6.4.3 外键约束 121
6.4.4 默认值约束 125
6.4.5 检查约束 128
6.4.6 唯一性约束 132
6.4.7 非空约束 135
6.5 使用SQL Server Management Studio 管理约束 137
6.5.1 管理主键约束 137
6.5.2 管理外键约束 139
6.5.3 管理默认值约束 142
6.5.4 管理检查约束 144
6.5.5 管理唯一性约束 146
6.5.6 管理非空约束 149
6.6 疑难问题解析 150
6.7 综合实战训练营 150
第7 章 数据的插入、更新和删除 151
7.1 插入数据(INSERT) 152
7.1.1 INSERT 语句的语法规则 152
7.1.2 向表中所有字段插入数据 152
7.1.3 向表中指定字段插入数据 154
7.1.4 一次插入多行数据记录 155
7.1.5 将查询结果插入表中 156
7.2 修改数据(UPDATE) 158
7.2.1 UPDATE 语句的语法规则 158
7.2.2 修改表中某列的所有数据记录 158
7.2.3 修改表中指定的单行数据记录 159
7.2.4 修改表中指定的多行数据记录 160
7.2.5 修改表中的前N 条数据记录 160
7.3 删除数据(DELETE) 161
7.3.1 DELETE 语句的语法规则 161
7.3.2 删除表中的指定数据记录 162
7.3.3 删除表中的前N 条数据记录 163
7.3.4 删除表中的所有数据记录 164
7.4 使用SQL Server Management Studio 管理数据 165
7.4.1 向数据表中添加数据记录 165
7.4.2 修改数据表中的数据记录 165
7.4.3 删除数据表中的数据记录 166
7.5 疑难问题解析 167
7.6 综合实战训练营 167
第8 章 Transact-SQL 查询数据 168
8.1 查询工具的使用 169
8.1.1 SQL Server 查询窗口 169
8.1.2 查询结果的显示方法 170
8.2 使用SELECT 进行简单查询 171
8.2.1 查询表中的全部数据 172
8.2.2 查询表中的指定数据 173
8.2.3 使用TOP 关键字查询 173
8.2.4 使用distinct 取消重复数据记录 174
8.2.5 查询的列为表达式 175
8.2.6 查询时修改列标题 175
8.2.7 对查询结果排序 176
8.2.8 对查询结果分组 177
8.2.9 对分组结果过滤查询 178
8.3 使用WHERE 子句进行条件查询 178
8.3.1 使用关系表达式查询 179
8.3.2 使用BETWEEN AND 进行范围查询 180
8.3.3 使用IN 关键字查询 181
8.3.4 使用LIKE 关键字查询 181
8.3.5 使用IS NULL 查询空值 184
8.4 使用聚合函数进行统计查询 184
8.4.1 使用SUM() 求列的和 185
8.4.2 使用AVG() 求列的平均值 185
8.4.3 使用MAX() 求列的*大值 186
8.4.4 使用MIN() 求列的*小值 187
8.4.5 使用COUNT() 统计 188
8.5 使用排序函数 189
8.5.1 ROW_NUMBER() 函数 189
8.5.2 RANK() 函数 190
8.5.3 DENSE_RANK() 函数 191
8.5.4 NTILE() 函数 191
8.6 多表嵌套查询 191
8.6.1 使用比较运算符的嵌套查询 192
8.6.2 使用IN 的嵌套查询 194
8.6.3 使用ANY 的嵌套查询 195
8.6.4 使用ALL 的嵌套查询 195
8.6.5 使用SOME 的子查询 196
8.6.6 使用EXISTS 的嵌套查询 197
8.7 多表内连接查询 198
8.7.1 笛卡儿积查询 198
8.7.2 内连接的简单查询 199
8.7.3 相等内连接查询 200
8.7.4 不等内连接查询 200
8.7.5 特殊的内连接查询 201
8.7.6 带条件的内连接查询 201
8.8 多表外连接查询 202
8.8.1 认识外连接查询 202
8.8.2 左外连接的查询 203
8.8.3 右外连接的查询 203
8.8.4 全外连接的查询 203
8.9 动态查询 204
8.10 疑难问题解析 204
8.11 综合实战训练营 205
第9 章 系统函数与自定义函数 206
9.1 SQL Server 函数简介 207
9.2 字符串函数 207
9.2.1 ASCII() 函数 207
9.2.2 CHAR() 函数 207
9.2.3 LEFT() 函数 208
9.2.4 RIGHT() 函数 208
9.2.5 LTRIM() 函数 208
9.2.6 RTRIM() 函数 209
9.2.7 STR() 函数 209
9.2.8 字符串逆序的函数REVERSE(s) 210
9.2.9 计算字符串长度的函数LEN(str) 210
9.2.10 匹配子字符串开始位置的函数 210
9.2.11 SUBSTRING() 函数 211
9.2.12 LOWER() 函数 211
9.2.13 UPPER() 函数 212
9.2.14 替换函数REPLACE(s,s1,s2) 212
9.3 数学函数 212
9.3.1 绝对值函数ABS(x) 和返回圆周率的函数PI() 213
9.3.2 平方根函数SQRT(x) 213
9.3.3 获取随机数的函数RAND() 和RAND(x) 213
9.3.4 四舍五入函数ROUND(x,y) 214
9.3.5 符号函数SIGN(x) 214
9.3.6 获取整数的函数CEILING(x) 和FLOOR(x) 215
9.3.7 幂运算函数POWER(x,y)、SQUARE(x) 和EXP(x) 215
9.3.8 对数运算函数LOG(x) 和LOG10(x) 216
9.3.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 217
9.3.10 正弦函数SIN(x) 和反正弦函数ASIN(x) 218
9.3.11 余弦函数COS(x) 和反余弦函数ACOS(x) 218
9.3.12 正切函数、反正切函数和余切函数 219
9.4 数据类型转换函数 220
9.4.1 CAST() 函数 220
9.4.2 CONVERT() 函数 220
9.5 日期和时间函数 221
9.5.1 获取系统当前日期的函数 221
9.5.2 返回UTC 日期的函数 221
9.5.3 获取天数的函数DAY(d) 222
9.5.4 获取月份的函数MONTH(d) 222
9.5.5 获取年份的函数YEAR(d) 222
9.5.6 获取日期中指定部分字符串值的函数DATENAME(dp,d) 223
9.5.7 获取日期中指定部分的整数值的函数DATEPART(dp,d) 223
9.5.8 计算日期和时间的函数DATEADD(dp,num,d) 224
9.6 系统函数 225
9.6.1 返回表中指定字段的长度值函数COL_LENGTH() 225
9.6.2 返回表中指定字段的名称函数COL_NAME() 225
9.6.3 返回数据表达式的字节数函数DATALENGTH() 226
9.6.4 返回数据库的编号 226
9.6.5 返回数据库的名称 226
9.6.6 返回当前数据库默认的NULL 值 227
9.6.7 返回服务器端计算机的标识号 227
9.6.8 返回服务器端计算机的名称 227
9.6.9 返回数据库对象的编号 228
9.6.10 返回用户的SID 函数SUSER_SID() 228
9.6.11 返回用户的登录名函数SUSER_SNAME() 229
9.6.12 返回数据库对象的名称函数OBJECT_NAME() 229
9.6.13 返回数据库用户的标识号函数USER_ID() 230
9.6.14 返回数据库用户名函数USER_NAME() 230
9.7 自定义函数 231
9.7.1 自定义函数的语法 231
9.7.2 创建标量函数 231
9.7.3 创建表值函数 233
9.7.4 修改自定义函数 235
9.7.5 删除自定义函数 236
9.8 在SQL Server Management Studio 中管理自定义函数 237
9.8.1 创建自定义函数 237
9.8.2 修改自定义函数 239
9.8.3 删除自定义函数 239
9.9 疑难问题解析 240
9.10 综合实战训练营 240
第10 章 创建和使用视图 241
10.1 创建视图 242
10.1.1 创建视图的语法规则 242
10.1.2 在单表上创建视图 242
10.1.3 在多表上创建视图 245
10.2 修改视图 245
10.2.1 修改视图的语法规则 246
10.2.2 修改视图的具体内容 246
10.2.3 修改视图的名称 247
10.3 通过视图更新数据 247
10.3.1 通过视图插入数据 247
10.3.2 通过视图修改数据 249
10.3.3 通过视图删除数据 250
10.4 查看视图信息 251
10.4.1 用图形化工具查看视图 251
10.4.2 用系统存储过程查看视图 251
10.5 删除视图 253
10.5.1 删除视图的语法 253
10.5.2 删除不用的视图 253
10.6 在SQL Server Management Studio 中管理视图 254
10.6.1 创建视图 254
10.6.2 修改视图 255
10.6.3 删除视图 256
10.7 疑难问题解析 257
10.8 综合实战训练营 257
第11 章 索引的创建和使用 258
11.1 创建索引 259
11.1.1 索引的分类 259
11.1.2 创建索引的语法 260
11.1.3 创建聚集索引 261
11.1.4 创建非聚集索引 262
11.1.5 创建复合索引 263
11.2 修改索引 263
11.2.1 修改索引的语法 263
11.2.2 禁用启用索引 264
11.2.3 重新生成索引 264
11.2.4 修改索引的名称 265
11.3 查看索引 266
11.3.1 查看数据表中的索引 266
11.3.2 查看索引的统计信息 266
11.4 删除索引 267
11.4.1 删除索引的语法 267
11.4.2 删除一个索引 267
11.4.3 同时删除多个索引 268
11.5 在SQL Server Management Studio 中管理索引 269
11.5.1 创建索引 269
11.5.2 查看索引 271
11.5.3 修改索引 272
11.5.4 删除索引 273
11.6 疑难问题解析 274
11.7 综合实战训练营 274
第12 章 存储过程的创建与应用 275
12.1 创建存储过程 276
12.1.1 创建存储过程的语法 276
12.1.2 创建不带参数的存储过程 277
12.1.3 创建带输入参数的存储过程 278
12.1.4 创建带输出参数的存储过程 279
12.1.5 创建带加密选项的存储过程 279
12.2 执行存储过程 280
12.2.1 执行存储过程的语法 280
12.2.2 执行不带参数的存储过程 281
12.2.3 执行带输入参数的存储过程 282
12.2.4 执行带输出参数的存储过程 282
12.3 修改存储过程 283
12.3.1 修改存储过程的语法 283
12.3.2 修改存储过程的内容 283
12.3.3 修改存储过程的名称 284
12.4 查看存储过程 285
12.4.1 使用sp_helptext 查看 285
12.4.2 使用sys.sql_modules 查看 285
12.4.3 使用OBJECT_DEFINITION 查看 286
12.5 删除存储过程 286
12.5.1 删除存储过程的语法 287
12.5.2 删除不需要的存储过程 287
12.6 在SQL Server Management Studio 中管理存储过程 288
12.6.1 创建存储过程 288
12.6.2 执行存储过程 290
12.6.3 修改存储过程 291
12.6.4 重命名存储过程 292
12.6.5 查看存储过程信息 292
12.6.6 删除存储过程 293
12.7 疑难问题解析 294
12.8 综合实战训练营 294
第13 章 创建和使用触发器 295
13.1 创建触发器 296
13.1.1 触发器的分类 296
13.1.2 创建DML 触发器 296
13.1.3 创建DDL 触发器 300
13.1.4 创建登录触发器 302
13.2 修改触发器 304
13.2.1 修改DML 触发器 304
13.2.2 修改DDL 触发器 305
13.2.3 修改登录触发器 306
13.3 管理触发器 307
13.3.1 禁用触发器 307
13.3.2 启用触发器 308
13.3.3 查看触发器 308
13.3.4 删除触发器 309
13.3.5 重命名触发器 310
13.4 其他触发器 310
13.4.1 替代触发器 310
13.4.2 嵌套触发器 311
13.4.3 递归触发器 312
13.5 在SQL Server Management Studio 中管理触发器 314
13.5.1 创建触发器 314
13.5.2 修改触发器 315
13.5.3 查看触发器 315
13.5.4 删除触发器 316
13.6 疑难问题解析 317
13.7 综合实战训练营 317
第14 章 创建和使用游标 318
14.1 游标的基本操作 319
14.1.1 声明游标 319
14.1.2 打开游标 320
14.1.3 读取游标 320
14.1.4 关闭游标 322
14.1.5 释放游标 323
14.2 游标的运用 323
14.2.1 使用游标变量 323
14.2.2 用游标为变量赋值 324
14.2.3 改变游标中行的顺序 325
14.2.4 使用游标修改数据 326
14.2.5 使用游标删除数据 327
14.3 使用系统存储过程查看游标属性 328
14.3.1 查看服务器游标的属性 328
14.3.2 查看当前连接的服务器游标属性 330
14.3.3 查看服务器游标结果集中的列属性 331
14.3.4 查看服务器游标引用的对象或基本表的属性 333
14.5 疑难问题解析 334
14.6 综合实战训练营 334
第15 章 事务和锁的应用 335
15.1 事务管理 336
15.1.1 事务的原理 336
15.1.2 事务管理的常用语句 337
15.1.3 事务的隔离级别 337
15.1.4 事务的应用实例 338
15.2 锁的应用 340
15.2.1 锁的内涵与作用 340
15.2.2 可锁定资源与锁的类型 341
15.2.3 死锁的原因 342
15.2.4 锁的应用实例 343
15.3 疑难问题解析 346
15.4 综合实战训练营 346
第16 章 用户账户及角色的管理 347
16.1 登录账户的管理 348
16.1.1 创建登录账户 348
16.1.2 修改登录账户 350
16.1.3 删除登录账户 350
16.2 在SQL Server Management Studio 中管理登录账户 351
16.2.1 创建登录账户 351
16.2.2 修改登录账户 353
16.2.3 删除登录账户 354
16.3 SQL Server 的角色管理 354
16.3.1 固定服务器角色 355
16.3.2 数据库角色 355
16.3.3 自定义数据库角色 356
16.3.4 应用程序角色 359
16.3.5 将登录账户指派到角色 360
16.3.6 将角色指派到多个登录账户 361
16.4 SQL Server 的权限管理 362
16.4.1 认识权限 362
16.4.2 授予权限 363
16.4.3 拒绝权限 364
16.4.4 撤销权限 365
16.5 疑难问题解析 366
16.6 综合实战训练营 366
第17 章 数据库的备份与恢复 367
17.1 认识数据库的备份与恢复 368
17.1.1 数据库的备份类型 368
17.1.2 数据库的恢复模式 368
17.1.3 配置数据库的恢复模式 369
17.2 数据库的备份设备 370
17.2.1 创建数据库备份设备 371
17.2.2 查看数据库备份设备 372
17.2.3 删除数据库备份设备 373
17.3 数据库的备份 374
17.3.1 完整备份与差异备份 374
17.3.2 文件和文件组备份 376
17.3.3 事务日志的备份 378
17.4 数据库的还原 379
17.4.1 还原数据库的方式 379
17.4.2 还原前的注意事项 379
17.4.3 完整备份的还原 381
17.4.4 差异备份的还原 383
17.4.5 事务日志备份的还原 383
17.4.6 文件和文件组备份的还原 384
17.5 在SQL Server Management Studio 中备份还原数据库 385
17.5.1 备份数据库 385
17.5.2 还原数据库备份文件 386
17.5.3 还原文件和文件组备份 388
17.6 疑难问题解析 390
17.7 综合实战训练营 390
第18 章 数据库的自动化管理 391
18.1 认识SQL Server 代理 392
18.1.1 启动SQL Server 代理 392
18.1.2 关闭SQL Server 代理 392
18.2 维护计划 393
18.2.1 创建维护计划 393
18.2.2 执行维护计划 395
18.3 作业 396
18.3.1 创建一个作业 396
18.3.2 定义一个作业步骤 397
18.3.3 创建一个作业执行计划 397
18.3.4 查看与管理作业 398
18.4 警报 400
18.4.1 创建警报 400
18.4.2 查看警报 401
18.4.3 删除警报 401
18.5 操作员 402
18.5.1 创建操作员 402
18.5.2 使用操作员 402
18.6 全程加密 403
18.6.1 选择加密类型 403
18.6.2 设置主密钥配置 405
18.7 疑难问题解析 406
18.8 综合实战训练营 407
第19 章 新闻发布系统数据库设计 408
19.1 系统概述 409
19.2 系统功能 409
19.3 数据库设计和实现 410
19.3.1 设计表 410
19.3.2 设计索引 414
19.3.3 设计视图 415
19.4 本章小结 415
第20 章 开发企业人事管理系统 416
20.1 需求分析 417
20.2 系统功能结构 417
20.3 数据库设计 418
20.3.1 数据库分析 418
20.3.2 数据表的设计 418
20.4 开发前准备工作 421
20.5 用户登录模块 427
20.5.1 定义数据库连接方法 427
20.5.2 防止窗口被关闭 430
20.5.3 验证用户名和密码 430
20.6 人事档案管理模块 432
20.6.1 界面开发 432
20.6.2 代码开发 433
20.6.3 添加和编辑员工照片 446
20.7 用户设置模块 447
20.7.1 添加/ 修改用户信息 447
20.7.2 删除用户基本信息 451
20.7.3 设置用户权限 451
20.8 数据库维护模块 452
20.8.1 数据库备份功能 452
20.8.2 数据库还原功能 453
20.9 本章小结 454