第1章 初识SQL Server 2019 1
1.1 认识SQL Server 2019 1
1.2 SQL Server 2019的组成 1
1.2.1 数据库引擎 1
1.2.2 分析服务(Analysis Services) 2
1.2.3 集成服务(Integration Services) 2
1.2.4 报表服务(Reporting Services) 2
1.3 安装SQL Server 2019 2
1.3.1 安装环境需求 2
1.3.2 安装SQL Server 2019 3
1.4 安装SQL Server Management Studio 15
1.5 SSMS基本操作 17
1.5.1 SSMS的启动与连接 17
1.5.2 使用模板资源管理器 19
1.5.3 配置SQL Server服务器的属性 20
1.5.4 查询编辑器 28
1.6 本章小结 31
1.7 经典习题 31
第2章 数据库的操作 32
2.1 数据库组成 32
2.1.1 数据库文件 32
2.1.2 日志文件 33
2.2 系统数据库 33
2.2.1 master数据库 33
2.2.2 model数据库 33
2.2.3 msdb数据库 33
2.2.4 tempdb数据库 34
2.3 创建数据库 34
2.3.1 使用对象资源管理器创建数据库 34
2.3.2 使用Transact-SQL创建数据库 38
2.4 管理数据库 41
2.4.1 修改数据库 41
2.4.2 修改数据库容量 42
2.4.3 增加数据库容量 44
2.4.4 缩减数据库容量 45
2.4.5 查看数据库信息 46
2.4.6 数据库更名 49
2.4.7 删除数据库 50
2.5 疑难解惑 52
2.6 经典习题 52
第3章 数据表的操作 53
3.1 SQL Server 2019数据库对象 53
3.2 创建数据表 54
3.2.1 数据类型 55
3.2.2 使用对象资源管理器创建数据表 63
3.2.3 使用Transact-SQL创建数据表 64
3.3 管理数据表 66
3.3.1 修改数据表的字段 66
3.3.2 修改数据表的约束 71
3.3.3 查看表中有关信息 76
3.3.4 删除数据表 78
3.4 疑难解惑 79
3.5 经典习题 79
第4章 Transact-SQL语言基础 81
4.1 Transact-SQL概述 81
4.1.1 什么是Transact-SQL 82
4.1.2 Transact-SQL语法的约定 82
4.2 如何给标识符起名 84
4.3 常量 85
4.3.1 数字常量 85
4.3.2 字符串常量 86
4.3.3 日期和时间常量 86
4.3.4 符号常量 86
4.4 变量 87
4.4.1 全局变量 87
4.4.2 局部变量 89
4.4.3 批处理和脚本 91
4.5 运算符和表达式 92
4.5.1 算术运算符 93
4.5.2 比较运算符 93
4.5.3 逻辑运算符 93
4.5.4 连接运算符 94
4.5.5 按位运算符 94
4.5.6 运算符的优先级 94
4.5.7 什么是表达式 95
4.5.8 Transact-SQL表达式的分类 95
4.6 Transact-SQL利器——通配符 96
4.7 Transact-SQL语言中的注释 97
4.8 疑难解惑 97
4.9 经典习题 98
第5章 轻松掌握Transact-SQL语句 99
5.1 数据定义语句 99
5.1.1 CREATE的应用 99
5.1.2 DROP的功能 102
5.1.3 ALTER的功能 103
5.2 数据操作语句 105
5.2.1 数据的插入——INSERT 105
5.2.2 数据的更改——UPDATE 107
5.2.3 数据的删除——DELETE 109
5.2.4 数据的查询——SELECT 110
5.3 数据控制语言 118
5.3.1 授予权限操作——GRANT 118
5.3.2 拒绝权限操作——DENY 118
5.3.3 收回权限操作——REVOKE 118
5.4 其他基本语句 119
5.4.1 数据声明——DECLARE 119
5.4.2 数据赋值——SET 120
5.4.3 数据输出——PRINT 121
5.5 流程控制语句 121
5.5.1 BEGIN…END语句 122
5.5.2 IF…ELSE语句 123
5.5.3 CASE语句 123
5.5.4 WHILE语句 125
5.5.5 GOTO语句 127
5.5.6 WAITFOR语句 127
5.5.7 RETURN语句 128
5.6 批处理语句 129
5.7 疑难解惑 130
5.8 经典习题 130
第6章 认识函数 132
6.1 SQL Server 2019函数简介 132
6.2 字符串函数 132
6.2.1 ASCII()函数 133
6.2.2 CHAR()函数 133
6.2.3 LEFT()函数 133
6.2.4 RIGHT()函数 134
6.2.5 LTRIM()函数 134
6.2.6 RTRIM()函数 135
6.2.7 STR()函数 135
6.2.8 字符串逆序的REVERSE(s)函数 136
6.2.9 计算字符串长度的函数LEN(str) 136
6.2.10 匹配子串开始位置的函数 137
6.2.11 SUBSTRING()函数 137
6.2.12 LOWER()函数 138
6.2.13 UPPER()函数 139
6.2.14 替换函数REPLACE(s,s1,s2) 139
6.3 数学函数 140
6.3.1 值函数ABS(x)和返回圆周率的函数PI() 140
6.3.2 平方根函数SQRT(x) 140
6.3.3 获取随机数的函数RAND()和RAND(x) 141
6.3.4 四舍五入函数ROUND(x, y) 142
6.3.5 符号函数SIGN(x) 142
6.3.6 获取整数的函数CEILING(x)和FLOOR(x) 143
6.3.7 幂运算函数POWER(x, y)、SQUARE (x)和EXP(x) 143
6.3.8 对数运算函数LOG(x)和LOG10(x) 145
6.3.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 146
6.3.10 正弦函数SIN(x)和反正弦函数ASIN(x) 146
6.3.11 余弦函数COS(x)和反余弦函数ACOS(x) 147
6.3.12 正切函数、反正切函数和余切函数 148
6.4 数据类型转换函数 149
6.5 文本函数和图像函数 150
6.5.1 TEXTPTR()函数 150
6.5.2 TEXTVALID()函数 151
6.6 日期和时间函数 151
6.6.1 获取系统当前日期的函数GETDATE() 151
6.6.2 返回UTC日期的函数UTCDATE() 152
6.6.3 获取天数的函数DAY(d) 152
6.6.4 获取月份的函数MONTH(d) 153
6.6.5 获取年份的函数YEAR(d) 153
6.6.6 获取日期中指定部分字符串值的函数DATENAME(dp, d) 154
6.6.7 获取日期中指定部分整数值的函数DATEPART(dp, d) 154
6.6.8 计算日期和时间的函数DATEADD(dp, num, d) 155
6.7 系统函数 156
6.7.1 返回表中指定字段的长度值 156
6.7.2 返回表中指定字段的名称 156
6.7.3 返回数据表达式的数据的实际长度函数 157
6.7.4 返回数据库的编号 157
6.7.5 返回数据库的名称 158
6.7.6 返回当前数据库默认的NULL值 158
6.7.7 返回服务器端计算机的标识号 159
6.7.8 返回服务器端计算机的名称 159
6.7.9 返回数据库对象的编号 160
6.7.10 返回用户的SID(安全标识号) 160
6.7.11 返回用户的登录名 161
6.7.12 返回数据库对象的名称 161
6.7.13 返回数据库用户的ID 162
6.7.14 返回数据库用户名 162
6.8 疑难解惑 163
6.9 经典习题 163
第7章 Transact-SQL查询 164
7.1 查询工具的使用 164
7.1.1 编辑查询 164
7.1.2 查询结果的显示方法 165
7.2 使用SELECT语句进行查询 166
7.2.1 使用通配符(*)和列名查询字段 167
7.2.2 使用DISTINCT消除重复 169
7.2.3 使用TOP返回前n行 170
7.2.4 修改列标题 171
7.2.5 在查询结果集中显示字符串 172
7.2.6 查询的列为表达式 173
7.3 使用WHERE子句进行条件查询 173
7.3.1 使用关系表达式查询 174
7.3.2 使用BETWEEN AND查询某范围内的数据 176
7.3.3 使用IN关键字查询 177
7.3.4 使用LIKE关键字查询 177
7.3.5 使用IS NULL查询空值 181
7.3.6 使用EXISTS关键字查询 182
7.3.7 使用ORDER BY子句排序 184
7.3.8 使用GROUP BY分组 186
7.3.9 使用HAVING对分组结果过滤 187
7.3.10 使用UNION合并查询结果集 188
7.4 使用聚合函数统计汇总 189
7.4.1 使用SUM()函数求列的和 190
7.4.2 使用AVG()函数对指定字段求平均值 190
7.4.3 使用MAX()函数找出指定字段中的值 192
7.4.4 使用MIN()函数找出指定字段中的小值 193
7.4.5 使用COUNT()函数统计 194
7.5 嵌套查询 196
7.5.1 使用比较运算符 196
7.5.2 使用IN关键字 197
7.5.3 使用ANY、SOME和ALL关键字 198
7.5.4 使用EXISTS关键字 199
7.6 多表连接查询 201
7.6.1 相等连接 201
7.6.2 不等连接 202
7.6.3 带选择条件的连接 203
7.6.4 自连接 203
7.7 外连接 204
7.7.1 左外连接 205
7.7.2 右外连接 205
7.7.3 全外连接 206
7.8 使用排序函数 207
7.9 动态查询 209
7.10 疑难解惑 210
7.11 经典习题 211
第8章 数据的更新 213
8.1 插入数据——INSERT 213
8.1.1 插入单行数据 214
8.1.2 插入多行数据 217
8.2 修改数据——UPDATE 219
8.2.1 修改单行数据 219
8.2.2 修改多行数据 220
8.3 删除数据——DELETE 221
8.3.1 删除部分数据 221
8.3.2 删除数据表中所有的数据 222
8.4 疑难解惑 223
8.5 经典习题 223
第9章 规则、默认值和完整性约束 225
9.1 规则和默认值概述 225
9.2 规则的基本操作 225
9.2.1 创建规则 225
9.2.2 把自定义规则绑定到字段 226
9.2.3 验证规则作用 227
9.2.4 取消规则绑定 227
9.2.5 删除规则 228
9.3 默认值的基本操作 228
9.3.1 创建默认值 229
9.3.2 把自定义默认值绑定到字段 229
9.3.3 插入默认值 230
9.3.4 取消默认值的绑定 230
9.3.5 删除默认值 231
9.4 完整性约束 231
9.4.1 主键约束 232
9.4.2 外键约束 235
9.4.3 性约束 238
9.4.4 CHECK约束 239
9.4.5 DEFAULT约束 239
9.4.6 NOT NULL约束 240
9.5 疑难解惑 240
9.6 经典习题 240
第10章 创建和使用索引 242
10.1 索引的含义和特点 242
10.2 索引的分类 243
10.3 索引的设计原则 244
10.4 创建索引 245
10.4.1 使用对象资源管理器创建索引 245
10.4.2 使用Transact-SQL语句创建索引 246
10.5 管理和维护索引 249
10.5.1 查看索引信息 249
10.5.2 重命名索引 251
10.5.3 删除索引 252
10.6 疑难解惑 253
10.7 经典习题 253
第11章 事务和锁 255
11.1 事务管理 255
11.1.1 事务的原理 256
11.1.2 事务管理的常用语句 257
11.1.3 事务的隔离级别 257
11.1.4 事务的应用案例 258
11.2 锁 260
11.2.1 锁的内涵与作用 260
11.2.2 可锁定资源与锁的类型 261
11.2.3 死锁 262
11.2.4 锁的应用案例 263
11.3 疑难解惑 267
11.4 经典习题 267
第12章 游标 268
12.1 认识游标 268
12.1.1 游标的概念 268
12.1.2 游标的优点 269
12.1.3 游标的分类 269
12.2 游标的基本操作 270
12.2.1 声明游标 270
12.2.2 打开游标 272
12.2.3 读取游标中的数据 272
12.2.4 关闭游标 274
12.2.5 释放游标 274
12.3 游标的运用 275
12.3.1 使用游标变量 275
12.3.2 使用游标为变量赋值 276
12.3.3 使用ORDER BY子句改变游标中行的顺序 277
12.3.4 使用游标修改数据 278
12.3.5 使用游标删除数据 279
12.4 使用系统存储过程管理游标 280
12.4.1 sp_cursor_list存储过程 280
12.4.2 sp_describe_cursor存储过程 281
12.4.3 sp_describe_cursor_columns存储过程 283
12.4.4 sp_describe_cursor_tables存储过程 284
12.5 疑难解惑 285
12.6 经典习题 286
第13章 存储过程和自定义函数 287
13.1 存储过程概述 287
13.2 存储过程分类 288
13.2.1 系统存储过程 288
13.2.2 自定义存储过程 288
13.2.3 扩展存储过程 289
13.3 创建存储过程 289
13.3.1 如何创建存储过程 289
13.3.2 调用存储过程 293
13.3.3 创建带输入参数的存储过程 294
13.3.4 创建带输出参数的存储过程 296
13.4 管理存储过程 297
13.4.1 修改存储过程 298
13.4.2 查看存储过程信息 299
13.4.3 重命名存储过程 300
13.4.4 删除存储过程 301
13.5 扩展存储过程 302
13.6 自定义函数 304
13.6.1 创建标量函数 305
13.6.2 创建表值函数 306
13.6.3 删除函数 307
13.7 疑难解惑 308
13.8 经典习题 309
第14章 视图操作 310
14.1 视图概述 310
14.1.1 视图的概念 310
14.1.2 视图的分类 311
14.1.3 视图的优点和作用 311
14.2 创建视图 312
14.2.1 使用视图设计器创建视图 312
14.2.2 使用Transact-SQL命令创建视图 314
14.3 修改视图 316
14.4 查看视图信息 317
14.5 使用视图修改数据 319
14.5.1 通过视图向基本表中插入数据 319
14.5.2 通过视图更新基本表中的数据 320
14.5.3 通过视图删除基本表中的数据 321
14.6 删除视图 322
14.7 疑难解惑 323
14.8 经典习题 323
第15章 触发器 324
15.1 触发器概述 324
15.1.1 什么是触发器 324
15.1.2 触发器的作用 325
15.1.3 触发器分类 325
15.2 创建DML触发器 326
15.2.1 INSERT触发器 326
15.2.2 DELETE触发器 329
15.2.3 UPDATE触发器 330
15.2.4 替代触发器 331
15.2.5 允许使用嵌套触发器 332
15.2.6 递归触发器 333
15.3 创建DDL触发器 334
15.3.1 创建DDL触发器的语法 334
15.3.2 创建服务器作用域的DDL触发器 335
15.4 管理触发器 336
15.4.1 查看触发器 336
15.4.2 修改触发器 337
15.4.3 删除触发器 338
15.4.4 启用和禁用触发器 339
15.5 疑难解惑 340
15.6 经典习题 340
第16章 SQL Server 2019的安全机制 341
16.1 SQL Server 2019安全性概述 341
16.1.1 SQL Server 2019的安全机制简介 341
16.1.2 基本安全术语 343
16.2 安全验证方式 344
16.2.1 Windows身份验证模式 344
16.2.2 混合模式 344
16.2.3 设置验证模式 345
16.3 SQL Server 2019登录名 345
16.3.1 创建登录账户 345
16.3.2 修改登录账户 352
16.3.3 删除登录账户 353
16.4 SQL Server 2019的角色与权限 354
16.4.1 固定服务器角色 354
16.4.2 数据库角色 355
16.4.3 自定义数据库角色 356
16.4.4 应用程序角色 359
16.4.5 将登录指派到角色 361
16.4.6 将角色指派到多个登录账户 362
16.4.7 权限管理 363
16.5 疑难解惑 366
16.6 经典习题 366
第17章 数据库的备份与恢复 367
17.1 备份与恢复介绍 367
17.1.1 备份类型 367
17.1.2 恢复模式 368
17.1.3 配置恢复模式 369
17.2 备份设备 370
17.2.1 备份设备类型 370
17.2.2 创建备份设备 370
17.2.3 查看备份设备 372
17.2.4 删除备份设备 372
17.3 使用Transact-SQL语句备份数据库 373
17.3.1 完整备份与差异备份 373
17.3.2 文件和文件组备份 375
17.3.3 事务日志备份 377
17.4 在SQL Server Management Studio中还原数据库 378
17.4.1 还原数据库的方式 378
17.4.2 还原数据库前的注意事项 379
17.4.3 还原数据库备份 381
17.4.4 还原文件和文件组备份 383
17.5 使用Transact-SQL语句还原数据库 384
17.5.1 完整备份还原 385
17.5.2 差异备份还原 387
17.5.3 事务日志备份还原 387
17.5.4 文件和文件组备份还原 388
17.5.5 将数据库还原到某个时间点 388
17.6 建立自动备份的维护计划 390
17.7 通过Always Encrypted安全功能为数据加密 393
17.8 动态数据屏蔽 398
17.9 疑难解惑 401
17.10 经典习题 401
第18章 SQL Server 2019新增功能 402
18.1 数据虚拟化与大数据群集 402
18.2 智能数据库 404
18.2.1 批处理模式内存授予反馈 404
18.2.2 行模式内存授予反馈 406
18.2.3 适用于MSTVF的交错执行 406
18.2.4 表变量延迟编译 407
18.2.5 新增近似查询功能 408
18.3 开发人员新体验 408
18.3.1 新增边约束功能 409
18.3.2 新增图匹配查询 411
18.4 其他常用新增功能 414
18.4.1 关键任务的安全性 414
18.4.2 高可用性的数据库环境 415
18.4.3 更加灵活的平台选择 415
18.4.4 SQL Server机器学习服务 415
18.4.5 SQL Server报表服务 415
18.5 疑难解惑 416
18.6 经典习题 416
第19章 开发企业人事管理系统 417
19.1 需求分析 417
19.2 系统功能结构 418
19.2.1 构建开发环境 418
19.2.2 系统功能结构 418
19.3 数据库设计 419
19.3.1 数据库分析 419
19.3.2 数据库实体E-R图 420
19.3.3 数据库表的设计 423
19.4 开发前的准备工作 427
19.5 用户登录模块 429
19.5.1 定义数据库连接方法 430
19.5.2 防止窗口被关闭 433
19.5.3 验证用户名和密码 433
19.6 人事档案管理模块 435
19.6.1 界面开发 435
19.6.2 代码开发 436
19.6.3 添加和编辑员工照片 445
19.7 用户设置模块 446
19.7.1 添加和修改用户信息 446
19.7.2 设置用户权限 446
19.8 数据库维护模块 447
19.8.1 数据库备份功能 447
19.8.2 数据库还原功能 447
19.9 系统运行 447
19.9.1 登录界面 447
19.9.2 企业人事管理系统主界面 448
19.9.3 人事档案管理界面 448
19.9.4 人事资料查询界面 448
19.9.5 员工信息提醒界面 449
19.9.6 员工通讯录界面 449
19.9.7 日常记事界面 449
19.9.8 用户设置 450
19.9.9 基础信息维护管理 450
19.10 项目总结 451