目 录
第1章 初识SQL Server
2016 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 如何选择SQL
Server 2016的版本 4
1.4 安装SQL Server
2016 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 Server
Management 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 插入数据——INSERT
219
8.1.1
插入单行数据 220
8.1.2
插入多行数据 223
8.2 修改数据——UPDATE
225
8.2.1
修改单行数据 225
8.2.2
修改多行数据 226
8.3 删除数据——DELETE
227
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