本书是SQL Server入门名著,新版延续了简明易懂、贴近实战的风格,不过多涉及各种对初学者而言生僻而繁乱的知识点,重点在于将SQL Server 2008的基础知识讲清楚,讲透彻。作者从SQL Server的安装和配置入手,然后利用SSMS设计和创建一个功能完备的数据库。其间你会依次了解如何保证数据库的安全。如何定义表,创建索引和数据库关系图,以及备份和操作数据库。随后书中会探讨数据操作方法、视图的构建、存储过程和函数。最后介绍T-SQL基础知识和触发器。本书末尾还概略探讨了Reporting Services。
在讲述各知识点时,作者提供了大量能用于实战的T-SQL代码,讲解如何在不同解决方案中进行选择。读者可以借此掌握完成某项任务的最佳方法,并知其然,更知其所以然。
本书全面阐述SQL Server 2008的基础知识。书中首先概述了SQL Server 2008的安装过程,并介绍了SQL Server 2008的SSMS管理工具;然后以建立一个金融数据库系统为主线,从最基础的搜集信息入手,一步步地引导读者学会如何保证数据库的安全,如何创建表、主键、索引等,并掌握如何备份和还原数据库;之后以示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,以一个实例讲述了SQL Server Reporting Services。
本书适合希望使用SQL Server 2008的开发人员和管理员阅读,也可作为高等学校相关课程的教材。
第1章 SQL Server 2008概述和安装 1
1.1 为什么选择SQL Server 2008 1
1.2 SQL Server的发展 3
1.3 硬件要求 4
1.3.1 CPU 4
1.3.2 内存 4
1.3.3 硬盘空间 5
1.3.4 操作系统要求 5
1.4 示例 5
1.5 安装 5
1.5.1 开始安装 6
1.5.2 选择要安装的功能 7
1.5.3 为实例命名 9
1.5.4 选择服务账户 10
1.5.5 选择身份验证模式 10
1.5.6 确定数据目录的位置 11
1.5.7 创建报表服务数据库 12
1.5.8 配置错误和使用情况报告 13
1.6 安全性 14
1.6.1 服务账户 14
1.6.2 身份验证模式 15
1.6.3 sa登录 19
1.7 小结 20
第2章 SSMS 21
2.1 SSMS概览 21
2.2 SSMS的选项 29
2.2.1 “环境”节点 29
2.2.2 “源代码管理”节点 31
2.2.3 “文本编辑器”节点 31
2.2.4 “查询执行”节点 33
2.2.5 “查询结果”节点 35
2.3 查询编辑器 41
2.4 小结 42
第3章 设计和创建数据库 43
3.1 数据库的定义 44
3.2 SQL Server中的预建数据库 45
3.2.1 master 45
3.2.2 tempdb 46
3.2.3 model 47
3.2.4 msdb 47
3.2.5 AdventureWorks/Adventure-WorksDW 47
3.3 选择数据库系统类型 48
3.3.1 OLTP 48
3.3.2 OLAP 49
3.3.3 示例系统类型选择 49
3.4 收集数据 49
3.5 确定要存储在数据库中的信息 51
3.5.1 金融产品 52
3.5.2 客户 52
3.5.3 客户地址 52
3.5.4 股票 52
3.5.5 交易 53
3.6 外部信息和忽略的信息 53
3.7 建立关系 53
3.7.1 使用键 53
3.7.2 创建关系 55
3.7.3 关于外键的更多信息 57
3.8 规范化 59
3.8.1 每一个实体都应该有唯一的标识符 59
3.8.2 只存储与实体直接有关的信息 60
3.8.3 避免重复值或重复列 60
3.8.4 范式 60
3.8.5 非规范化 62
3.9 创建示例数据库 62
3.9.1 在SSMS中创建数据库 62
3.9.2 在SSMS中删除数据库 75
3.9.3 在查询编辑器中创建数据库 77
3.10 小结 80
第4章 安全和遵从规范 81
4.1 登录名 81
4.2 服务器登录名和数据库用户 89
4.3 角色 90
4.3.1 固定服务器角色 90
4.3.2 数据库角色 92
4.3.3 应用程序角色 92
4.4 架构 95
4.5 在解决方案中进行下去之前 96
4.6 陈述式管理框架 99
4.7 小结 104
第5章 定义表 106
5.1 什么是表 106
5.2 SQL Server数据类型 107
5.2.1 表中的数据类型 108
5.2.2 程序中的数据类型 113
5.3 列不仅仅是简单的数据存储库 113
5.3.1 默认值 113
5.3.2 生成IDENTITY值 113
5.3.3 NULL值的使用 114
5.3.4 为什么要定义允许NULL值的列 114
5.4 在SQL Server中存储图像和大型文本 115
5.5 在SSMS中创建表 115
5.6 通过查询编辑器创建表 120
5.7 创建表:使用模板 122
5.8 创建模板和修改模板 125
5.9 ALTER TABLE语句 126
5.10 定义其余的表 127
5.11 设置主键 128
5.12 创建关系 129
5.12.1 在创建时检查现有数据 131
5.12.2 强制外键约束 132
5.12.3 选择删除/更新规则 132
5.13 通过T-SQL语句建立关系 133
5.14 小结 134
第6章 创建索引和数据库关系图 135
6.1 什么是索引 135
6.1.1 索引类型 136
6.1.2 唯一性 137
6.2 确定是什么创建了好的索引 138
6.2.1 使用低维护列 138
6.2.2 主键和外键 139
6.2.3 找到指定记录 139
6.2.4 使用覆盖索引 139
6.2.5 查找信息范围 139
6.2.6 保持数据的排序 140
6.3 确定是什么导致了坏的索引 140
6.3.1 使用了不合适的列 140
6.3.2 选择了不合适的数据 141
6.3.3 包含了过多的列 141
6.3.4 表中包含的记录过少 141
6.4 针对性能对索引进行审查 141
6.5 创建索引 142
6.5.1 用表设计器创建索引 142
6.5.2 索引和统计信息 145
6.5.3 CREATE INDEX语法 145
6.5.4 在查询编辑器中创建索引:模板 148
6.5.5 在查询编辑器中创建索引:SQL代码 151
6.6 删除索引 153
6.7 在查询编辑器中修改索引 154
6.8 当索引不存在时 155
6.9 为数据库生成关系图 156
6.9.1 数据库关系图基础 156
6.9.2 SQL Server数据库关系图工具 157
6.9.3 默认的数据库关系图 158
6.9.4 数据库关系图工具条 160
6.10 小结 162
第7章 数据库的备份、还原和维护 163
7.1 事务日志 164
7.2 备份策略 166
7.3 当可能发生错误时 167
7.4 让数据库脱机 168
7.5 备份数据 169
7.5.1 使用T-SQL备份数据库 174
7.5.2 使用T-SQL进行日志备份 180
7.6 还原数据库 182
7.6.1 使用SSMS还原数据 183
7.6.2 使用T-SQL进行还原 185
7.7 分离和附加数据库 189
7.7.1 使用SSMS进行分离和附加操作 189
7.7.2 使用T-SQL进行分离和附加操作 193
7.8 为数据库生成SQL脚本 195
7.9 维护数据库 201
7.10 创建数据库维护计划 201
7.11 设置数据库邮件 213
7.12 修改维护计划 221
7.13 小结 224
第8章 操作数据 225
8.1 T-SQL的INSERT命令的语法 225
8.2 SQL命令INSERT 226
8.2.1 默认值 229
8.2.2 使用NULL值 229
8.3 DBCC CHECKIDENT 232
8.4 列约束 234
8.5 同时插入多条记录 238
8.6 检索数据 239
8.7 使用SSMS检索数据 240
8.8 SELECT语句 241
8.9 指定列 243
8.10 第一批搜索 243
8.11 改变输出的显示 245
8.12 限制搜索:WHERE的使用 247
8.12.1 SET ROWCOUNT n 249
8.12.2 TOP n 250
8.12.3 TOP n PERCENT 251
8.13 字符串函数 251
8.14 顺序!顺序! 253
8.15 LIKE运算符 254
8.16 生成数据:SELECT INTO 256
8.17 谁能添加、删除或选取数据 257
8.18 更新数据 261
8.18.1 UPDATE命令 262
8.18.2 在查询编辑器中更新数据 263
8.19 事务 266
8.19.1 BEGIN TRAN 267
8.19.2 COMMIT TRAN 268
8.19.3 ROLLBACK TRAN 268
8.19.4 锁定数据 268
8.19.5 更新数据:使用事务 269
8.19.6 嵌套事务 270
8.20 删除数据 272
8.20.1 DELETE的语法 272
8.20.2 使用DELETE语句 272
8.21 截断表(删除表中的所有行) 274
8.22 删除表 275
8.23 小结 275
第9章 构建视图 277
9.1 为什么要构建视图 278
9.2 针对安全而使用查询 278
9.3 加密视图定义 279
9.4 创建视图:SSMS 280
9.5 使用视图来创建视图 284
9.6 CREATE VIEW语法 289
9.7 创建视图:查询编辑器窗格 290
9.8 创建视图:SCHEMABINDING 291
9.9 为视图设置索引 293
9.10 小结 295
第10章 存储过程和函数 297
10.1 什么是存储过程 298
10.2 CREATE PROCEDURE语法 298
10.3 返回一系列记录 301
10.4 创建存储过程:SSMS 301
10.5 执行存储过程的不同方法 305
10.5.1 不使用EXEC 305
10.5.2 使用EXEC 305
10.6 使用RETURN 305
10.7 控制流程 309
10.7.1 IF...ELSE 309
10.7.2 BEGIN...END 310
10.7.3 WHILE...BREAK语句 310
10.7.4 CASE语句 312
10.8 综合应用 314
10.9 用户定义函数 316
10.9.1 标量函数 316
10.9.2 表值函数 317
10.9.3 创建用户定义函数时要考虑的事项 317
10.10 小结 319
第11章 T-SQL基础 320
11.1 使用多个表 320
11.2 变量 325
11.3 临时表 326
11.4 聚合 328
11.4.1 COUNT/COUNT_BIG 329
11.4.2 SUM 329
11.4.3 MAX/MIN 330
11.4.4 AVG 330
11.5 分组数据 331
11.6 HAVING 332
11.7 独特值 333
11.8 函数 333
11.8.1 日期和时间函数 334
11.8.2 字符串函数 336
11.8.3 系统函数 340
11.9 RAISERROR 343
11.10 错误处理 347
11.11 @@ERROR 347
11.12 TRY...CATCH 348
11.13 小结 351
第12章 高级T-SQL 352
12.1 子查询 352
12.1.1 IN 354
12.1.2 EXISTS 354
12.1.3 了结未了之事 355
12.2 APPLY运算符 356
12.2.1 CROSS APPLY 357
12.2.2 OUTER APPLY 358
12.3 公用表表达式 358
12.4 透视数据 361
12.4.1 PIVOT 361
12.4.2 UNPIVOT 363
12.5 排名函数 363
12.5.1 ROW_NUMBER 364
12.5.2 RANK 366
12.5.3 DENSE_RANK 366
12.5.4 NTILE 367
12.6 SQL Server中的PowerShell 367
12.7 小结 371
第13章 触发器 372
13.1 什么是触发器 372
13.2 DML触发器 373
13.3 针对DML触发器的CREATE TRIGGER语法 374
13.4 为什么不使用约束 375
13.5 对逻辑表进行删除和插入 376
13.6 创建DML FOR触发器 377
13.7 检查特定的列 380
13.7.1 使用UPDATE() 380
13.7.2 使用COLUMNS_UPDATED() 384
13.8 DDL触发器 387
13.8.1 DDL_DATABASE_LEVEL_EVENTS 387
13.8.2 删除DDL触发器 389
13.8.3 EVENTDATA() 389
13.9 小结 392
第14章 SQL Server 2008 Reporting Services 393
14.1 Reporting Services的架构 394
14.2 配置Reporting Services 395
14.3 使用报表设计器构建第一个报表 400
14.4 小结 406