项目1 系统数据库建模 1
【任务1】理解系统需求 1
1.1.1 学生选课系统介绍 1
1.1.2 学生选课系统功能 2
【任务2】建立系统数据模型 4
1.2.1 数据库的基本概念 4
1.2.2 关系型数据库 5
1.2.3 关系数据模型 6
1.2.4 实体和关系 8
1.2.5 建立E-R模型 10
1.2.6 逻辑结构设计 14
1.2.7 范式 14
【任务3】使用PowerDesigner建立系统模型 17
1.3.1 PowerDesigner简介 18
1.3.2 PowerDesigner支持的模型 18
1.3.3 建立概念数据模型 19
1.3.4 建立物理数据模型 23
1.3.5 物理数据模型与数据库的正逆向工程 24
思考题 25
项目实训 25
项目2 安装与配置SQL Server 2016 27
【任务1】安装SQL Server 2016 27
2.1.1 SQL Server 2016简介 27
2.1.2 安装SQL Server 2016数据库工具 30
2.1.3 安装SQL Server管理工具 34
【任务2】管理和使用SQL Server 2016 34
2.2.1 SQL Server 2016常用工具 35
2.2.2 使用SSMS 35
2.2.3 使用配置管理器配置数据库 38
2.2.4 配置SQL Server 2016服务器属性 40
2.2.5 SQL Server 2016产品文档 44
思考题 45
项目实训 45
项目3 创建数据库与数据表 47
【任务1】创建和管理数据库 47
3.1.1 SQL Server数据库的组成 47
3.1.2 创建数据库 51
3.1.3 管理数据库 52
3.1.4 创建文件组 55
3.1.5 数据库规划 57
【任务2】使用T-SQL操作数据库 59
3.2.1 T-SQL语言基础 59
3.2.2 T-SQL语法要素 60
3.2.3 使用T-SQL创建、修改和删除数据库 68
【任务3】操作数据表 71
3.3.1 创建数据表 72
3.3.2 创建用户自定义数据类型 75
3.3.3 修改表 77
3.3.4 删除表 78
【任务4】实现数据的完整性 79
3.4.1 数据完整性概述 79
3.4.2 PRIMARY KEY约束 79
3.4.3 NOT NULL约束 82
3.4.4 DEFAULT约束 82
3.4.5 UNIQUE约束 84
3.4.6 CHECK约束 86
3.4.7 FOREIGN KEY约束 88
3.4.8 禁用约束 92
思考题 93
项目实训 93
项目4 查询数据 95
【任务1】查询单表数据 95
4.1.1 选择列 95
4.1.2 过滤查询结果集 99
4.1.3 选择行 100
4.1.4 数据排序 105
4.1.5 数据分组与汇总 108
4.1.6 INTO子句 113
【任务2】连接查询多表数据 113
4.2.1 连接查询简介 114
4.2.2 内连接 114
4.2.3 外连接 117
4.2.4 交叉连接 118
4.2.5 联合查询多表数据 119
【任务3】嵌套查询多表数据 120
4.3.1 嵌套查询简介 120
4.3.2 子查询用作派生表 121
4.3.3 子查询用作表达式 122
4.3.4 使用子查询关联数据 124
【任务4】修改系统数据 127
4.4.1 插入数据 127
4.4.2 修改数据 131
4.4.3 删除数据 134
4.4.4 合并数据 137
4.4.5 事务 139
思考题 140
项目实训 141
项目5 数据查询优化 144
【任务1】创建索引 144
5.1.1 索引的定义与分类 144
5.1.2 使用T-SQL命令和SSMS创建索引 146
5.1.3 管理和优化索引 151
【任务2】使用视图优化系统查询性能 156
5.2.1 视图简介 157
5.2.2 创建和管理视图 158
5.2.3 视图加密 162
5.2.4 可更新视图 163
5.2.5 索引视图 166
5.2.6 分区视图 169
思考题 169
项目实训 169
项目6 面向数据库编程 171
【任务1】T-SQL的流程控制 171
6.1.1 流程控制语句简介 171
6.1.2 使用流程控制语句 172
【任务2】使用系统函数访问数据 180
6.2.1 T-SQL的函数类型 180
6.2.2 数学函数 181
6.2.3 字符串函数 182
6.2.4 日期时间函数 183
6.2.5 类型转换函数 184
6.2.6 格式化函数 185
6.2.7 逻辑函数 188
6.2.8 元数据函数 189
【任务3】SQL Server操纵JSON格式数据 190
6.3.1 JSON与SQL Server 190
6.3.2 查询语句输出JSON格式数据 191
6.3.3 解析JSON格式数据到数据表 194
【任务4】使用游标操作数据 196
6.4.1 游标简介 196
6.4.2 游标的基本操作 197
思考题 202
项目实训 202
项目7 数据库模块化程序设计 204
【任务1】使用自定义函数实现数据访问 204
7.1.1 用户自定义函数分类 204
7.1.2 用户自定义标量值函数 205
7.1.3 用户自定义内联表值函数 207
7.1.4 用户自定义多语句表值函数 208
【任务2】使用存储过程实现数据访问 210
7.2.1 存储过程概述 210
7.2.2 创建用户自定义存储过程 212
7.2.3 参数化存储过程 215
7.2.4 修改和删除用户自定义存储过程 220
【任务3】使用触发器实现自动任务 222
7.3.1 触发器简介 222
7.3.2 DML触发器 222
7.3.3 DDL触发器 228
7.3.4 启用和禁用触发器 230
思考题 231
项目实训 231
项目8 维护数据的安全性 233
【任务1】系统数据库账号管理 233
8.1.1 SQL Server 2016的安全机制和安全主体 233
8.1.2 SQL Server身份验证 235
8.1.3 数据库登录名管理 237
【任务2】系统数据库用户权限管理 242
8.2.1 用户管理 242
8.2.2 用户权限管理 246
【任务3】数据库角色管理 252
8.3.1 应用角色的好处 252
8.3.2 固定服务器角色 253
8.3.3 数据库角色 255
【任务4】实现数据加密 262
8.4.1 数据的加密和解密 263
8.4.2 使用透明数据加密 269
思考题 271
项目实训 271
项目9 维持数据库的高可用性 273
【任务1】备份和恢复数据库 273
9.1.1 备份与恢复 273
9.1.2 备份设备 276
9.1.3 数据库备份 278
9.1.4 数据库恢复 285
9.1.5 数据库备份的注意事项 291
【任务2】数据文件的转移 293
9.2.1 分离数据库 293
9.2.2 附加数据库 294
【任务3】从数据库快照恢复数据 296
9.3.1 数据库快照的工作方式 296
9.3.2 建立数据库快照 298
9.3.3 管理数据库快照 299
【任务4】建立数据库备份的维护计划 301
9.4.1 SQL Server代理 301
9.4.2 创建和配置维护计划 302
思考题 307
项目实训 307
参考文献 308
附录A 学生选课系统数据表 309
附录B 数据库设计说明书格式 312