图书目录

目    录

第1章  RDBMS基础: 

        SQL Server数据库的构成 1

1.1  数据库对象概述 1

1.1.1  数据库对象 2

1.1.2  事务日志 6

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

1.1.4  文件组 8

1.1.5  数据库关系图 8

1.1.6  视图 9

1.1.7  存储过程 10

1.1.8  用户自定义函数 10

1.1.9  用户和角色 10

1.1.10  规则 10

1.1.11  默认值 11

1.1.12  用户自定义数据类型 11

1.1.13  全文目录 11

1.2  SQL Server 数据类型 11

1.3  SQL Server 对象标识符 16

1.3.1  需要命名的对象 16

1.3.2  命名规则 17

1.4  本章小结 17

第2章  SQL Server管理工具 18

2.1  联机丛书 18

2.2  SQL Server配置管理器 19

2.2.1  服务管理 20

2.2.2  网络配置 20

2.2.3  协议 21

2.2.4  客户端 23

2.3  SQL Server Management

    Studio 25

2.3.1  启动Management Studio 25

2.3.2  “查询”窗口 28

2.4  SQL Server集成服务(SSIS) 32

2.5  Bulk Copy Program(bcp) 33

2.6  SQL Server Profiler 33

2.7  sqlcmd 34

2.8  PowerShell 34

2.9  本章小结 34

第3章  T-SQL基本语句 35

3.1  基本SELECT语句 36

3.1.1  SELECT语句

      与FROM子句 36

3.1.2  WHERE子句 39

3.1.3  ORDER BY子句 42

3.1.4  使用GROUP BY

子句聚合数据 44

3.1.5  使用HAVING子句

给分组设置条件 52

3.1.6  使用FOR XML

子句输出XML 53

3.1.7  通过OPTION子句

利用提示 54

3.1.8  DISTINCT和ALL谓词 54

3.2  使用INSERT语句添加数据 56

3.2.1  多行插入 60

3.2.2  INSERT INTO…SELECT语句 61

3.3  用UPDATE 语句更改数据 63

3.4  DELETE 语句 65

3.5  本章小结 66

3.6  练习 66

第4章  连接 67

4.1  连接 67

4.2  内部连接 69

4.3  外部连接 75

4.3.1  简单的外部连接 76

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

4.4  完全连接 85

4.5  交叉连接 86

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

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

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

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

4.7  联合 90

4.8  本章小结 94

4.9  练习 94

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

5.1  SQL Server中的对象名 95

5.1.1  模式名 95

5.1.2  数据库名 98

5.1.3  通过服务器命名 98

5.1.4  回顾默认值 98

5.2  CREATE语句 99

5.2.1  CREATE DATABASE 99

5.2.2  CREATE TABLE 104

5.3  ALTER语句 115

5.3.1  ALTER DATABASE 115

5.3.2  ALTER TABLE 119

5.4  DROP语句 122

5.5  使用GUI工具 123

5.5.1  使用Management Studio

创建数据库 123

5.5.2  回到代码:使用Management

 Studio创建脚本的基础知识 127

5.6  本章小结 128

5.7  练习 128

第6章  约束 129

6.1  约束的类型 130

6.1.1  域约束 130

6.1.2  实体约束 130

6.1.3  参照完整性约束 131

6.2  约束命名 131

6.3  键约束 132

6.3.1  主键约束 132

6.3.2  外键约束 134

6.3.3  唯一约束 144

6.4  CHECK约束 145

6.5  DEFAULT约束 146

6.5.1  在CREATE TABLE语句

中定义DEFAULT约束 147

6.5.2  在已存在的表中添加

DEFAULT约束 148

6.6  禁用约束 148

6.6.1  在创建约束时忽略

无效的数据 148

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

6.7  规则和默认值 152

6.7.1  规则 152

6.7.2  默认值 154

6.7.3  确定哪个表和数据类型使用

给定的规则或默认值 154

6.8  用于实现数据完整性的

    触发器 155

6.9  如何选择 155

6.10  本章小结 156

第7章  更复杂的查询 157

7.1  子查询的概念 158

7.2  关联子查询 161

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

7.2.2  在WHERE子句中的

关联子查询 162

7.2.3  处理NULL数据——

ISNULL函数 165

7.3  派生表 166

7.4  EXISTS运算符 168

7.5  混合数据类型:

CAST和CONVERT 171

7.6  MERGE命令 174

7.6.1  BY TARGET和BY SOURCE 177

7.6.2  OUTPUT子句 177

7.7  性能方面的考虑 180

7.8  本章小结 181

7.9  练习 181

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

8.1  表 182

8.2  保持数据“规范” 193

8.2.1  准备工作 184

8.2.2  第一范式 185

8.2.3  第二范式 188

8.2.4  第三范式 189

8.2.5  其他范式 191

8.3  关系 192

8.3.1  一对一关系 192

8.3.2  一对一或一对多关系 193

8.3.3  多对多关系 195

8.4  数据库关系图 198

8.4.1  表 200

8.4.2  添加和删除表 200

8.4.3  关系 205

8.5  反规范化 207

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

8.6.1  保持简单 208

8.6.2  选择数据类型 208

8.6.3  尽量进行存储 209

8.7  创建一个快速示例 209

8.7.1  创建数据库 209

8.7.2  添加数据库关系图

和初始表 210

8.7.3  添加关系 213

8.7.4  添加一些约束 215

8.8  本章小结 216

8.9  练习 216

第9章  SQL Server存储

        和索引结构 217

9.1  SQL Server存储机制 217

9.1.1  数据库 217

9.1.2  区段 218

9.1.3  页 218

9.1.4  行 219

9.1.5  稀疏列 219

9.2  理解索引 219

9.2.1  平衡树(B-树) 220

9.2.2  SQL Server中访问

      数据的方式 223

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

9.3.1  CREATE INDEX语句 230

9.3.2  创建XML索引 234

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

9.3.4  在稀疏列和地理空间

      列上创建索引 236

9.4  明智地选择—— 在何时何地

    使用何种索引 236

9.4.1  选择性 236

9.4.2  注意成本 236

9.4.3  选择群集索引 237

9.4.4  列顺序问题 239

9.4.5  修改索引 239

9.4.6  删除索引 241

9.4.7  从查询计划中获取提示 242

9.4.8  使用数据库引擎调整向导 242

9.5  维护索引 242

9.5.1  碎片 242

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

9.6  本章小结 246

9.7  练习 247

第10章  视图 248

10.1  简单的视图 248

10.2  更加复杂的视图 253

10.3  使用T-SQL编辑视图 259

10.4  删除视图 260

10.5  在Management Studio中

     创建和编辑视图 260

10.6  审查:显示现有的代码 263

10.7  保护代码:加密视图 264

10.8  关于模式绑定 265

10.9  使用VIEW_METADATA

     使视图看起来像表一样 266

10.10  索引(物化)视图 266

10.11  本章小结 268

10.12  练习 269

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

11.1  脚本的基础知识 270

11.1.1  USE语句 271

11.1.2  声明变量 271

11.1.3  使用@@IDENTITY 275

11.1.4  使用@@ROWCOUNT 278

11.2  批处理 279

11.2.1  批处理中的错误 281

11.2.2  何时使用批处理 281

11.3  sqlcmd 284

11.4  动态SQL:用EXEC命令

     动态生成代码 288

11.5  控制流语句 293

11.5.1  IF…ELSE语句 293

11.5.2  CASE语句 297

11.5.3  用WHILE语句进行循环 302

11.5.4  WAITOR语句 303

11.5.5  TRY/CATCH块 303

11.6  本章小结 306

11.7  练习 306

第12章  存储过程 307

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

12.2  使用ALTER修改存储过程 309

12.3  删除存储过程 309

12.4  参数化 310

12.5  通过返回值确认成功

     或失败 315

12.6  错误处理 317

12.6.1  以前的方式 318

12.6.2  在错误发生前处理错误 323

12.6.3  手动引发错误 328

12.6.4  添加自定义的错误消息 331

12.7  存储过程的优点 333

12.7.1  创建可调用的进程 333

12.7.2  为了安全性使用存储过程 333

12.7.3  存储过程和性能 334

12.8  扩展存储过程(XP) 336

12.9  递归简介 336

12.10  调试 338

12.10.1  启动调试器 339

12.10.2  调试器的组成 339

12.10.3  使用调试器 342

12.11  .NET程序集 343

12.12  本章小结 344

第13章  用户自定义函数 345

13.1  UDF的定义 345

13.2  返回标量值的UDF 346

13.3  返回表的UDF 350

13.4  调试用户自定义函数 358

13.5  数据库中的.NET 358

13.6  本章小结 358

13.7  练习 358

第14章  事务和锁 359

14.1  事务 359

14.1.1  BEGIN TRAN 360

14.1.2  COMMIT TRAN 360

14.1.3  ROLLBACK TRAN 361

14.1.4  SAVE TRAN 361

14.2  SQL Server日志的工作方式 361

14.2.1  失败和恢复 362

14.2.2  隐式事务 364

14.3  锁和并发 364

14.3.1  通过锁可以防止的问题 365

14.3.2  可以锁定的资源 368

14.3.3  锁升级和锁对性能

       的影响 368

14.3.4  锁定模式 369

14.3.5  锁的兼容性 370

14.3.6  指定一种特有的锁定

       类型—— 优化器提示 371

14.4  设置隔离级别 372

14.5  处理死锁(1205错误) 375

14.5.1  SQL Server判断

       死锁的方式 375

14.5.2  选择死锁牺牲者

       的方式 375

14.5.3  避免死锁 375

14.6  本章小结 377

第15章  触发器 379

15.1  触发器的概念 380

15.1.1  ON子句 381

15.1.2  WITH ENCRYPTION

       选项 381

15.1.3  FOR | AFTER 子句与

       INSTEAD OF子句 381

15.1.4  WITH APPEND选项 384

15.1.5  NOT FOR REPLICATION

       选项 384

15.1.6  AS子句 384

15.2  使用触发器实施数据

     完整性规则 384

15.2.1  处理来自于其他

       表的需求 385

15.2.2  使用触发器来检查更新

       的变化 386

15.2.3  将触发器用于自定义

       错误消息 388

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

15.4  触发器的其他问题 388

15.4.1  触发器可以嵌套 389

15.4.2  触发器可以递归 389

15.4.3  触发器不能防止体系

       结构的修改 389

15.4.4  可以在不删除的情况下

       关闭触发器 390

15.4.5  触发器的激活顺序 390

15.5  INSTEAD OF触发器 392

15.6  性能考虑 392

15.6.1  触发器的被动性 392

  

15.6.2  触发器与激活的进程

       之间不存在并发问题 392

15.6.3  使用IF UPDATE()和

       COLUMNS_UPDATED() 393

15.6.4  保持触发器短小精悍 395

15.6.5  选择索引时不要

       忘记触发器 395

15.6.6  不要在触发器中

       进行回滚 395

15.7  删除触发器 395

15.8  调试触发器 396

15.9  本章小结 397

第16章  初识XML 398

16.1  XML基础 399

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

16.1.2  名称空间 407

16.1.3  元素内容 408

16.1.4  有效与格式良好——

       架构和DTD 409

16.2  SQL Server提供的XML支持 410

16.2.1  将列定义为XML类型 410

16.2.2  XML架构集合 411

16.2.3  创建、修改和删除XML

       架构集合 413

16.2.4  XML数据类型方法 415

16.2.5  强制执行架构集合

       之外的约束 421

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

16.2.7  RAW选项 422

16.2.8  AUTO选项 424

16.2.9  EXPLICIT选项 426

16.2.10  PATH选项 427

16.2.11  OPENXML函数 432

16.3  XSLT简介 436

16.4  本章小结 438

第17章  Reporting Services概述 439

17.1  Reporting Services 101 439

17.2  创建简单的报表模型 440

17.2.1  数据源视图 443

17.2.2  建立数据模型 447

17.2.3  创建报表 450

17.3  报表服务器项目 454

17.4  本章小结 459

第18章  使用Integration Services

         进行集成 460

18.1  理解问题 460

18.2  使用导入/导出向导生成

     基本的程序包 461

18.3  程序包基础知识 466

18.3.1  “连接管理器”面板 467

18.3.2  程序包编辑器面板 468

18.4  执行程序包 472

18.4.1  在Development Studio中

       运行程序包 472

18.4.2  使用执行包实用工具 472

18.4.3  使用SQL Server Agent

       执行程序包 475

18.4.4  从程序中执行程序包 475

18.5  关于程序包的补充说明 475

18.6  本章小结 475

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

第19章  扮演管理员的角色 476

19.1  调度作业 477

19.1.1  创建操作员 477

19.1.2  创建作业和任务 479

19.2  备份和恢复 487

19.2.1  创建备份—— 转储 488

19.2.2  恢复模式 491

19.2.3  还原 491

19.3  索引维护 493

19.4  数据归档 495

19.5  基于策略的管理 496

19.6  本章小结 496

19.7  练习 497

附录A  系统函数 498

附录B  非常简单的连接示例 550

附录C  学习资源 558