目 录 第1章 初识SQL Server 2016 1 1.1 SQL Server 2016应用领域 1 1.2 SQL Server 2016的重要新增功能 2 1.2.1 生产DBA 2 1.2.2 开发DBA 3 1.2.3 商业智能DBA 4 1.3 SQL Server体系结构 5 1.3.1 数据库文件和事务日志 5 1.3.2 SQL Server Native Client 5 1.3.3 系统数据库 6 1.3.4 架构 8 1.3.5 同义词 9 1.3.6 动态管理对象 9 1.3.7 数据类型 10 1.4 SQL Server版本 15 1.4.1 版本概览 15 1.4.2 许可 16 1.5 小结 18 1.6 经典习题 18 第2章 SQL Server 2016基础 19 2.1 安装规划 20 2.1.1 硬件选择 20 2.1.2 软件和安装选择 24 2.2 安装SQL Server 26 2.2.1 全新安装 26 2.2.2 并列安装 26 2.2.3 升级安装 26 2.2.4 手动安装 27 2.2.5 自动安装 29 2.3 系统压力测试 34 2.4 安装后的配置 35 2.4.1 配置SQL Server设置以实现高性能 35 2.4.2 tempdb 36 2.4.3 SQL Server的安全设置 37 2.4.4 SQL Server配置管理器 38 2.4.5 备份 39 2.5 卸载SQL Server 39 2.5.1 卸载Reporting Services 39 2.5.2 卸载Analysis Services 39 2.5.3 卸载SQL Server数据库引擎 39 2.6 安装失败故障排除 40 2.7 小结 40 2.8 经典习题 40 第3章 数据库和表 41 3.1 数据库的组成 41 3.1.1 SQL Sever 2016 常用的逻辑对象 42 3.1.2 数据库文件和文件组 43 3.2 系统数据库 45 3.2.1 SQL Server包含的系统数据库 45 3.2.2 在对象资源管理器中隐藏系统对象 47 3.3 创建数据库 47 3.3.1 使用SQL Server Management Studio图形界面创建数据库 47 3.3.2 使用Transact-SQL语句创建数据库 51 3.4 管理数据库 52 3.4.1 修改数据库 52 3.4.2 查看数据库信息 55 3.4.3 重命名数据库 56 3.4.4 删除数据库 56 3.4.5 分离数据库和附加数据库 57 3.5 数据类型 59 3.5.1 系统数据类型 59 3.5.2 用户自定义的数据类型 63 3.6 创建数据表 64 3.6.1 使用SQL Server Management Studio创建表 64 3.6.2 使用Transact-SQL语句创建表 65 3.7 管理数据表 66 3.7.1 使用Transact-SQL语句添加、删除和修改字段 66 3.7.2 查看数据表 67 3.7.3 删除数据表 69 3.8 经典习题 70 第4章 Transact-SQL语言基础 71 4.1 Transact-SQL概述 71 4.1.1 Transact-SQL语法约定 71 4.1.2 多部分名称 72 4.1.3 如何命名标识符 73 4.1.4 系统保留字 74 4.2 常量 75 4.2.1 字符串型常量 76 4.2.2 数值型常量 76 4.2.3 日期和时间型常量 76 4.3 变量 76 4.3.1 全局变量 76 4.3.2 局部变量 77 4.4 运算符和表达式 77 4.4.1 运算符 77 4.4.2 表达式 79 4.5 Transact-SQL利器——通配符 81 4.6 Transact-SQL语言中的注释 81 4.7 数据定义语言 82 4.8 数据操纵语言 82 4.9 数据控制语言 82 4.10 其他基本语句 83 4.10.1 数据声明 83 4.10.2 数据赋值 83 4.10.3 数据输出 83 4.11 流程控制语句 84 4.11.1 BEGIN…END语句 84 4.11.2 IF…ELSE条件语句 84 4.11.3 CASE语句 85 4.11.4 WHILE…CONTINUE…BREAK语句 86 4.11.5 GOTO语句 87 4.11.6 WAITFOR语句 87 4.11.7 RETURN语句 88 4.12 批处理语句 88 4.12.1 批处理的基本概念 88 4.12.2 每个批处理单独发送到服务器 89 4.12.3 何时使用批处理 89 4.12.4 使用批处理建立优先级 90 4.12.5 批处理的执行 91 4.12.6 批处理中的错误 93 4.12.7 GO不是Transact-SQL命令 94 4.13 SQL Server 2016函数简介 94 4.13.1 字符串函数 94 4.13.2 数学函数 96 4.13.3 数据类型转换函数 97 4.13.4 日期和时间函数 98 4.13.5 系统函数 99 4.14 为学生选课表增加10万行测试数据 99 4.15 经典习题 102 第5章 数据查询 103 5.1 工作场景导入 103 5.2 查询工具的使用 104 5.3 关系代数 105 5.3.1 选择 105 5.3.2 投影 105 5.3.3 连接 106 5.4 简单查询 107 5.4.1 SELECT语句对列的查询 108 5.4.2 SELECT语句对行的选择 111 5.4.3 对查询结果进行排序 116 5.4.4 对查询结果进行统计 117 5.4.5 将查询结果生成新表 119 5.5 连接查询 120 5.5.1 交叉连接 120 5.5.2 内连接 121 5.5.3 外连接 123 5.6 嵌套查询 124 5.6.1 带有IN谓词的子查询 125 5.6.2 带有比较运算符的子查询 126 5.6.3 带有ANY、SOME或ALL关键字的子查询 127 5.6.4 带有EXISTS谓词的子查询 127 5.7 联合查询 130 5.7.1 UNION操作符 130 5.7.2 INTERSECT操作符 130 5.7.3 EXCEPT操作符 131 5.8 使用排序函数 132 5.8.1 ROW_NUMBER() 132 5.8.2 RANK() 133 5.8.3 DENSE_RANK() 134 5.8.4 NTILE() 134 5.9 动态查询 135 5.10 经典习题 137 第6章 数据更新 138 6.1 工作场景导入 138 6.2 插入数据 138 6.2.1 插入单行数据 139 6.2.2 插入多行数据 140 6.3 修改数据 142 6.3.1 修改单行数据 142 6.3.2 修改多行数据 143 6.4 删除数据 144 6.4.1 使用DELETE语句删除数据 144 6.4.2 使用TRUNCATE TABLE语句清空表 145 6.5 经典习题 145 第7章 数据完整性 146 7.1 工作场景导入 146 7.2 如何实现数据完整性 146 7.3 规则对象的基本操作 148 7.3.1 创建规则对象 148 7.3.2 绑定规则对象 149 7.3.3 验证规则对象 149 7.3.4 解除规则对象绑定 149 7.3.5 删除规则对象 150 7.4 默认值对象的基本操作 150 7.4.1 创建默认值对象 150 7.4.2 绑定默认值对象 150 7.4.3 解除默认值对象绑定 150 7.4.4 删除默认值对象 151 7.5 完整性约束 151 7.5.1 PRIMARY KEY约束 151 7.5.2 FOREIGN KEY约束 154 7.5.3 UNIQUE约束 156 7.5.4 CHECK约束 156 7.5.5 DEFAULT约束 157 7.5.6 NOT NULL约束 157 7.6 经典习题 158 第8章 数据库索引 159 8.1 SQL Server 2016中新增的索引 159 8.2 索引和分区表 162 8.2.1 理解索引 162 8.2.2 创建索引 166 8.2.3 使用分区表和索引 168 8.3 索引维护 168 8.3.1 监控索引碎片 169 8.3.2 清理索引 170 8.4 使用索引改进查询性能 171 8.5 数据库引擎优化顾问 175 8.6 太多的索引会导致成本更高 176 8.7 小结 177 8.8 经典习题 178 第9章 事务、锁和游标 179 9.1 工作场景导入 179 9.2 事务管理 180 9.2.1 事务的原理 180 9.2.2 事务的概念 180 9.2.3 事务的特性 180 9.2.4 事务的工作原理 181 9.2.5 事务的执行模式 181 9.2.6 事务的应用案例 182 9.2.7 使用事务时的考虑因素 187 9.3 锁 188 9.3.1 事务的缺陷 188 9.3.2 锁的概念 189 9.3.3 隔离性的级别 189 9.3.4 锁的空间管理及粒度 191 9.3.5 锁的类别 191 9.3.6 如何在SQL Server中查看数据库中的锁 192 9.3.7 死锁及其防止 193 9.4 游标 194 9.4.1 游标概述 194 9.4.2 声明游标 195 9.4.3 打开游标 196 9.4.4 读取游标 197 9.4.5 关闭游标 199 9.4.6 删除游标 199 9.5 经典习题 199 第10章 存储过程和触发器 200 10.1 存储过程 200 10.1.1 存储过程的基本概念 200 10.1.2 存储过程的类型 201 10.1.3 用户存储过程的创建与执行 202 10.1.4 存储过程的查看、修改和删除 206 10.2 触发器 209 10.2.1 触发器概述 209 10.2.2 DML触发器的创建和应用 210 10.2.3 DDL触发器的创建和应用 212 10.2.4 查看、修改和删除触发器 213 10.3 经典习题 215 第11章 视图 216 11.1 视图概述 216 11.1.1 视图的概念 216 11.1.2 视图的分类 217 11.1.3 视图的优点和作用 217 11.2 创建视图 218 11.2.1 使用视图设计器创建视图 218 11.2.2 使用Transact-SQL命令创建视图 219 11.3 修改视图 221 11.4 查看视图 221 11.4.1 使用SSMS图形化工具查看视图的定义信息 221 11.4.2 使用系统存储过程查看视图的定义信息 223 11.5 更新视图 225 11.5.1 通过视图向基本表中插入数据 226 11.5.2 通过视图修改基本表中的数据 226 11.5.3 通过视图删除基本表中的数据 227 11.6 删除视图 228 11.6.1 使用对象资源管理器删除视图 228 11.6.2 使用Transact-SQL命令删除视图 228 11.7 经典习题 228 第12章 数据库安全机制 230 12.1 SQL Server 2016安全性概述 230 12.1.1 SQL Server网络安全基础 231 12.1.2 SQL Server 2016的安全性体系结构 233 12.1.3 SQL Server 2016安全机制的总体策略 240 12.2 管理用户 241 12.2.1 管理对SQL Server实例的访问 241 12.2.2 管理对SQL Server数据库的访问 250 12.3 角色管理 252 12.3.1 服务器级角色 252 12.3.2 数据库级角色 256 12.3.3 自定义数据库角色 259 12.3.4 应用程序角色 260 12.4 管理架构 262 12.4.1 认识架构 263 12.4.2 使用默认架构 264 12.5 权限管理 264 12.5.1 授予权限 265 12.5.2 撤销权限 265 12.5.3 拒绝权限 266 12.6 经典习题 266 第13章 数据库的备份与恢复 267 13.1 备份与恢复 267 13.1.1 备份类型 268 13.1.2 恢复模式 268 13.1.3 设置恢复模式 269 13.2 备份设备 269 13.2.1 创建备份设备 270 13.2.2 删除备份设备 271 13.3 备份数据库 271 13.3.1 完整备份 271 13.3.2 差异备份 273 13.3.3 事务日志备份 274 13.4 在SQL Server Management Studio中还原数据库 274 13.5 用Transact-SQL语句还原数据库 275 13.5.1 完整备份还原 275 13.5.2 差异备份还原 276 13.5.3 事务日志还原 276 13.6 建立自动备份的维护计划 277 13.7 经典习题 283 第14章 自动化SQL Server 284 14.1 维护计划 284 14.1.1 维护计划向导 285 14.1.2 维护计划设计器 288 14.2 使用SQL Server代理自动化SQL Server 290 14.2.1 作业 291 14.2.2 计划 295 14.2.3 操作员 295 14.2.4 警报 298 14.3 SQL Server代理安全性 302 14.3.1 服务账户 302 14.3.2 访问SQL Server代理 302 14.3.3 SQL Server代理的代理 303 14.4 小结 305 14.5 经典习题 306 第15章 监控SQL Server 307 15.1 选择合适的监控工具 307 15.2 性能监视器 309 15.2.1 CPU资源计数器 310 15.2.2 磁盘活动 311 15.2.3 内存使用率 315 15.2.4 性能监控工具 318 15.3 监控事件 319 15.3.1 默认跟踪 321 15.3.2 system_health会话 322 15.3.3 SQL跟踪 322 15.4 监控日志 325 15.4.1 监控SQL Server错误日志 326 15.4.2 监控Windows事件日志 326 15.5 经典习题 326 参考文献 327