资源名称:SQL Server2012编程入门经典(第4版)

内容简介:

《SQLServer数据库经典译丛:SQLServer2012编程入门经典(第4版)》循序渐进的教程介绍如何创建效率更高的管理程序,如何从SQLServer数据库环境中获得商务智能。《SQLServer数据库经典译丛:SQLServer2012编程入门经典(第4版)》探讨了SQL的基本对象、基本查询和连接,然后把对象添加到数据库中,并使用对物理设计非常重要的项。接着研究了SQLServer脚本的编写。最后讨论了如何使用SQLServer2012的功能为一流应用程序建立一流数据库。

研究了开发SQLServer应用程序的关键概念:条件动作结构,提高对结果分页的控制,与SharePoint和Excel集成的应用程序,以及商务智能应用程序的开发。

学习客户端连接的改进、安全性、兼容性以及数据仓库性能的提高。

解决一些基本问题,包括管理键、编写脚本以及处理存储过程。

共享有效的技术来创建和修改表,用XML编程,使用SQLServer报表和集成服务。

作者简介:

Paul Atkinson自从20世纪90年代早期在Microsoft公司工作以来,就在研究数据库技术,他在Microsoft公司先把Microsoft Access作为一种辅助项目来学习,后来将它看做一种有代表性的支持技术。在此期间他还获得了波特兰州立大学的计算机科学学位,作为一名DBA在.com上冲浪,在网络泡沫破灭后则成为医疗行业的一位承包商。目前,Paul在休伦医疗集团任BI建筑师和团队带头人,负责开发传统和实时的BI解决方案。他开设的高性能T-SQL编程课程是休伦湖最受欢迎的课程设置。Paul与妻子Kristin、女儿Maureen住在俄勒冈州的波特兰市。Paul不工作或写书时,就在几个足球队踢球,或者骑山地车、滑雪、当厨师,骑自行车上下班,他还是学校委员会的主席、Timbers军队的资深成员和半个巧克力制作大师。就像Robert Heinlein写的那样,他的特长都与昆虫相关。

Robert Vieira是休伦咨询集团的软件架构师,是Microsoft SQL Server方面顶级权威的一位专家。他在国内会议上发言,其教学和写作中的独特教学方法非常有名。

资源目录:

第1章 RDBMS基础:SQL Server数据

库的构成1

1.1 数据库对象概述2

1.1.1 数据库对象2

1.1.2 事务日志6

1.1.3 最基本的数据库对象:表7

1.1.4 文件组8

1.1.5 数据库关系图8

1.1.6 视图9

1.1.7 存储过程9

1.1.8 用户自定义函数10

1.1.9 序列10

1.1.10 用户和角色10

1.1.11 规则10

1.1.12 默认值11

1.1.13 用户自定义数据类型11

1.1.14 全文目录11

1.2 SQL Server数据类型11

1.3 SQL Server对象标识符15

1.3.1 需要命名的对象16

1.3.2 命名规则16

1.4 本章小结17

第2章 SQL Server管理工具19

2.1 使用联机丛书获得帮助20

2.2 SQL Server配置管理器21

2.2.1 服务管理21

2.2.2 网络配置21

2.2.3 协议23

2.2.4 客户端24

2.3 SQL Server Management Studio26

2.3.1 启动Management Studio27

2.3.2 通过“查询”窗口交互30

2.4 SQL Server Data Tools(以前称为BIDS)36

2.5 SQL Server集成服务(SSIS)37

2.6 SQL Server Reporting Services(SSRS)37

2.7 SQL Server Analysis Services(SSAS)38

2.8 Bulk Copy Program(bcp)38

2.9 SQL Server Profiler38

2.10 sqlcmd39

2.11 PowerShell39

2.12 本章小结39

第3章 T-SQL基本语句41

3.1 基本SELECT语句42

3.1.1 SELECT语句与FROM子句42

3.1.2 WHERE子句46

3.1.3 ORDER BY子句48

3.1.4 使用GROUPBY子句聚合数据51

3.1.5 使用HAVING子句给分组设置条件59

3.1.6 使用FOR XML子句输出XML61

3.1.7 通过OPTION子句利用提示61

3.1.8 DISTINCT和ALL谓词61

3.2 使用INSERT语句添加数据64

3.2.1 多行插入69

3.2.2 INSERT INTO…SELECT语句69

3.3 用UPDATE语句更改获得的数据71

3.4 DELETE语句73

3.5 本章小结75

第4章 连接77

4.1 连接78

4.2 内部连接79

4.3 使用外部连接检索更多数据86

4.3.1 简单的外部连接86

4.3.2 处理更复杂的外部连接92

4.4 完全连接97

4.5 交叉连接98

4.6 JOIN语句的早期语法结构100

4.6.1 内部连接的早期语法结构100

4.6.2 外部连接的早期语法结构101

4.6.3 交叉连接的早期语法结构102

4.7 联合103

4.8 本章小结106

第5章 创建和修改数据表109

5.1 SQL Server中的对象名109

5.1.1 模式名(也称为所有权)110

5.1.2 数据库名112

5.1.3 通过服务器命名113

5.1.4 回顾默认值113

5.2 CREATE语句113

5.2.1 CREATE DATABASE114

5.2.2 构建数据库118

5.2.3 CREATE TABLE120

5.3 ALTER语句131

5.3.1 ALTER DATABASE131

5.3.2 ALTER TABLE135

5.4 DROP语句139

5.5 使用GUI工具139

5.5.1 使用Management Studio创建数据库140

5.5.2 回到代码:使用Management Studio创建脚本144

5.6 本章小结145

第6章 键和约束147

6.1 约束的类型148

6.1.1 域约束148

6.1.2 实体约束149

6.1.3 参照完整性约束149

6.2 约束命名149

6.3 键约束150

6.3.1 主键约束150

6.3.2 外键约束153

6.3.3 唯一约束164

6.4 CHECK约束165

6.5 DEFAULT约束166

6.5.1 在CREATE TABLE语句中定义DEFAULT约束167

6.5.2 在已存在的表中添加DEFAULT约束167

6.6 禁用约束168

6.6.1 在创建约束时忽略无效的数据168

6.6.2 临时禁用已存在的约束171

6.7 规则和默认值172

6.7.1 规则173

6.7.2 删除规则174

6.7.3 默认值174

6.7.4 删除默认值175

6.7.5 确定哪些表和数据类型使用给定的规则或默认值175

6.8 用于实现数据完整性的触发器176

6.9 如何选择176

6.10 本章小结177

第7章 更复杂的查询179

7.1 子查询的概念180

7.2 关联子查询184

7.2.1 关联子查询的工作原理184

7.2.2 处理NULL数据——ISNULL函数188

7.3 派生表189

7.4 使用通用表表达式(CTE)192

7.4.1 使用WITH关键字192

7.4.2 使用多个CTE194

7.4.3 递归CTE195

7.5 使用EXISTS运算符195

7.5.1 使用EXISTS筛选数据195

7.5.2 以其他方式使用EXISTS197

7.6 混合数据类型:CAST和CONVERT199

7.7 使用MERGE命令同步数据202

7.7.1 实际使用MERGE命令202

7.7.2 BY TARGET和BY SOURCE205

7.8 使用OUTPUT子句收集受影响的行206

7.9 研究窗口化函数208

7.9.1 ROW_NUMBER208

7.9.2 RANK、DENSE_RANK和NTILE211

7.10 一次一个数据块:特殊的查询分页212

7.11 性能方面的考虑213

7.11.1 测量性能214

7.11.2 JOIN、子查询和CTE的对比215

7.12 本章小结216

第8章 规范化和其他基本设计问题219

8.1 理解表219

8.2 保持数据“规范”220

8.2.1 准备工作221

8.2.2 第一范式222

8.2.3 第二范式225

8.2.4 第三范式226

8.2.5 其他范式228

8.3 理解关系229

8.3.1 一对一关系229

8.3.2 零或一对一关系230

8.3.3 一对一或一对多关系230

8.3.4 一对零、一对一或一对多关系231

8.3.5 多对多关系232

8.4 数据库关系图234

8.4.1 表236

8.4.2 在数据库关系图中创建关系242

8.5 反规范化245

8.6 超出规范化的一些规则245

8.6.1 保持简单245

8.6.2 选择数据类型246

8.6.3 尽量进行存储246

8.7 创建一个快速示例247

8.7.1 创建数据库247

8.7.2 添加数据库关系图和初始表247

8.7.3 添加关系251

8.7.4 添加一些约束253

8.8 本章小结253

第9章 SQL Server存储和索引结构255

9.1 SQL Server存储机制255

9.1.1 数据库255

9.1.2 区段256

9.1.3 页256

9.1.4 行257

9.1.5 稀疏列257

9.2 理解索引258

9.2.1 平衡树(B-树)259

9.2.2 SQL Server中的数据访问方式261

9.3 创建、修改和删除索引269

9.3.1 CREATE INDEX语句269

9.3.2 创建XML索引274

9.3.3 随约束创建的隐含索引275

9.3.4 在稀疏列和地理空间列上创建索引275

9.4 明智地选择——在何时何地使用何种索引276

9.4.1 选择性276

9.4.2 注意成本:少即是多279

9.4.3 选择群集索引279

9.4.4 列顺序问题281

9.4.5 覆盖索引282

9.4.6 过滤索引282

9.4.7 修改索引283

9.4.8 删除索引286

9.4.9 从查询计划中获取提示286

9.4.10 索引未被使用的原因286

9.4.11 使用数据库引擎调整向导287

9.5 维护索引287

9.5.1 碎片288

9.5.2 确定碎片和页拆分的可能性288

9.6 本章小结292

第10章 视图295

10.1 创建简单的视图295

10.2 使用T-SQL编辑视图307

10.3 删除视图307

10.4 在Management Studio中创建和编辑视图307

10.4.1 在Management Studio 中创建视图308

10.4.2 在Management Studio中编辑视图310

10.5 审查:显示现有的代码311

10.6 保护代码:加密视图312

10.7 关于模式绑定314

10.8 使用VIEW_METADATA使视图看起来像表一样314

10.9 索引(物化)视图314

10.10 索引聚集视图317

10.11 本章小结320

第11章 编写脚本和批处理323

11.1 脚本的基础知识324

11.1.1 使用USE语句选择数据库环境324

11.1.2 声明变量325

11.1.3 设置变量中的值326

11.1.4 系统函数回顾328

11.1.5 检索标识值329

11.1.6 生成序列333

11.1.7 使用@@ROWCOUNT336

11.2 将语句分组到批处理中337

11.2.1 自成一行338

11.2.2 每个批处理单独发送到服务器338

11.2.3 GO不是T-SQL命令339

11.2.4 批处理中的错误339

11.2.5 何时使用批处理339

11.3 从命令提示符运行:sqlcmd343

11.4 动态SQL:用EXEC命令动态生成代码347

11.4.1 动态生成代码347

11.4.2 理解动态SQL的危险性349

11.5 使用控制流语句353

11.5.1 IF…ELSE语句353

11.5.2 CASE语句357

11.5.3 用WHILE语句进行循环362

11.5.4 WAITFOR语句364

11.5.5 使用TRY/CATCH块处理错误364

11.6 本章小结367

第12章 存储过程369

12.1 创建存储过程:基本语法370

12.2 使用ALTER修改存储过程371

12.3 删除存储过程372

12.4 参数化存储过程372

12.4.1 声明参数372

12.4.2 通过返回值确认成功或失败378

12.4.3 如何使用RETURN378

12.5 错误处理380

12.5.1 处理内联错误381

12.5.2 利用@@ERROR382

12.5.3 在存储过程中使用@@ERROR383

12.5.4 在错误发生前处理错误386

12.5.5 手动引发错误392

12.5.6 重新抛出错误396

12.5.7 添加自定义的错误消息397

12.6 存储过程的优点399

12.6.1 创建可调用的进程399

12.6.2 为了安全性而使用存储过程399

12.6.3 存储过程和性能400

12.7 扩展存储过程(XP)402

12.8 递归简介402

12.9 调试404

12.9.1 启动调试器405

12.9.2 调试器的组成405

12.9.3 使用断点进行中断408

12.9.4 使用调试器410

12.10 理解.NET程序集413

12.11 使用存储过程的时机413

12.12 本章小结414

第13章 用户自定义函数417

13.1 UDF的定义417

13.2 返回标量值的UDF418

13.3 返回表的UDF424

13.3.1 内联UDF424

13.3.2 理解确定性430

13.4 调试用户自定义函数433

13.5 数据库中的.NET433

13.6 本章小结434

第14章 事务和锁435

14.1 事务435

14.1.1 ACID事务436

14.1.2 事务操作简介436

14.1.3 BEGIN TRAN437

14.1.4 COMMIT TRAN437

14.1.5 ROLLBACK TRAN437

14.1.6 SAVE TRAN437

14.2 SQL Server日志的工作方式439

14.2.1 失败和恢复440

14.2.2 激活隐式事务442

14.3 锁和并发442

14.3.1 锁的用途443

14.3.2 可以锁定的资源446

14.3.3 锁升级和锁对性能的影响446

14.3.4 锁定模式447

14.3.5 锁的兼容性448

14.3.6 指定一种特有的锁定类型——优化器提示449

14.4 设置隔离级别450

14.4.1 READ COMMITTED451

14.4.2 READ UNCOMM-ITTED451

14.4.3 REPEATABLE READ452

14.4.4 SERIALIZABLE452

14.4.5 SNAPSHOT452

14.5 处理死锁(1205错误)453

14.5.1 SQL Server判断死锁的方式453

14.5.2 选择死锁牺牲者的方式453

14.5.3 避免死锁453

14.6 本章小结456

第15章 触发器459

15.1 触发器的概念460

15.1.1 ON子句461

15.1.2 WITH ENCRYPTION选项461

15.1.3 FOR AFTER462

15.1.4 FOR AFTER 子句与INSTEAD OF子句463

15.1.5 NOT FOR REPLICATION选项464

15.1.6 AS子句464

15.2 使用触发器实施数据完整性规则464

15.2.1 处理来自于其他表的需求465

15.2.2 使用触发器来检查更新的变化466

15.2.3 将触发器用于自定义错误消息468

15.3 触发器的其他常见用途468

15.4 触发器的其他问题468

15.4.1 触发器可以嵌套469

15.4.2 触发器可以递归469

15.4.3 触发器不能防止体系结构的修改469

15.4.4 可以在不删除的情况下关闭触发器470

15.4.5 触发器的激活顺序470

15.5 INSTEAD OF触发器472

15.6 性能考虑472

15.6.1 触发器的被动性472

15.6.2 触发器与激活的进程之间不存在并发问题472

15.6.3 使用IF UPDATE()和COLUMNS_UPDATED()473

15.6.4 保持触发器短小精悍475

15.6.5 选择索引时不要忘记触发器475

15.6.6 不要在触发器中进行回滚475

15.7 删除触发器476

15.8 调试触发器476

15.9 本章小结477

第16章 初识XML479

16.1 XML基础480

16.1.1 XML文档的各个组成部分481

16.1.2 名称空间489

16.1.3 元素内容491

16.1.4 有效与格式良好——架构和DTD492

16.2 SQL Server提供的XML支持492

16.2.1 将列定义为XML类型493

16.2.2 XML架构集合494

16.2.3 创建、修改和删除XML架构集合496

16.2.4 XML数据类型方法498

16.2.5 强制执行架构集合之外的约束504

16.2.6 用XML格式检索关系数据505

16.2.7 RAW选项506

16.2.8 AUTO选项509

16.2.9 EXPLICIT选项510

16.2.10 PATH选项512

16.2.11 OPENXML函数517

16.3 XSLT简介521

16.4 本章小结523

第17章 商务智能基础525

17.1 商务智能的概念525

17.1.1 BI优于其他方案526

17.1.2 根据数据做出决策526

17.1.3 不同的专家有不同的观点528

17.1.4 通过过去的业绩预测未来的行为528

17.1.5 谁使用BI528

17.2 数据仓库528

17.2.1 数据仓库的目标529

17.2.2 OLTP与OLAP529

17.2.3 Kimball与Inmon530

17.3 维度建模:为什么是规范化的533

17.3.1 度量值和度量指标533

17.3.2 事实534

17.3.3 维度536

17.4 ETL542

17.4.1 提供数据542

17.4.2 强制一致性543

17.4.3 通过定义权威数据来解决冲突544

17.4.4 2个、3个或更多个阶段544

17.4.5 在ETL过程中处理并发545

17.4.6 缓存提取的内容——操作数据存储(ODS)546

17.5 使数据可操作:BI报表技术546

17.5.1 目标547

17.5.2 关键性能指示器547

17.5.3 仪表盘549

17.5.4 记分卡549

17.5.5 明细表549

17.5.6 下钻550

17.5.7 钻取550

17.5.8 临时报表551

17.6 本章小结551

第18章 BI存储和报表资源553

18.1 T-SQL中的BI554

18.1.1 AdventureWorks数据仓库554

18.1.2 使用T-SQL分析函数555

18.1.3 columnstore索引563

18.2 SQL Server Analysis Services564

18.3 建立第一个多维数据集565

18.3.1 数据源571

18.3.2 数据源视图572

18.3.3 多维数据集572

18.3.4 度量值组573

18.3.5 维度574

18.3.6 多维数据集的其他内容576

18.4 自助式BI:用户工具576

18.4.1 报表构建器577

18.4.2 PowerPivot:带有SharePoint和Excel的轻型BI577

18.4.3 Power View579

18.5 小结<span clas