《数据库程序设计:SQL Server2000数据库程序设计》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:微软公司著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2007
  • ISBN:978704014106X
  • 页数:601 页
图书介绍:

第1章 SQL Server概述 1

1.1 SQL Server 1

1.1.1 SQL Server简介 1

1.1.2 客户端—服务器组件 4

1.1.3 客户端—服务器通信过程 8

1.1.4 SQL Server服务 10

1.2 SQL Server集成 11

1.2.1 SQL Server和操作系统的集成 11

1.2.2 SQL Server和Windows 2000的集成 12

1.2.3 SQL Server和其他Microsoft服务器应用程序的集成 13

1.3 SQL Server数据库 13

1.3.1 数据库类型 14

1.3.2 数据库对象 15

1.3.3 引用SQL Server对象 15

1.3.4 系统表 17

1.3.5 元数据检索 17

1.4 SQL Server安全性 19

1.4.1 登录身份验证 19

1.4.2 数据库用户账户和角色 20

1.4.3 角色类型 20

1.4.4 权限验证 21

1.5 使用SQL Server 22

1.5.1 管理SQL Server数据库 22

1.5.2 实现SQL Server数据库 24

1.5.3 为SQL Server选择应用程序架构 25

1.5.4 使用数据库API设计应用程序 26

实验 SQL Server概述 27

练习1 使用SQL Server联机丛书 28

练习2 创建数据库关系图 29

习题 31

第2章 创建和管理数据库 33

2.1 创建数据库 33

2.1.1 定义数据库 33

2.1.2 事务日志的工作过程 36

2.1.3 设置数据库选项 37

2.1.4 检索数据库信息 38

2.2 创建文件组 39

2.3 管理数据库 41

2.3.1 管理数据文件和日志文件的增长 41

2.3.2 监视和扩展事务日志 42

2.3.3 收缩数据库或文件 43

2.4 分离和附加数据库 45

2.5 删除数据库 46

2.6 数据结构介绍 47

2.6.1 数据存储方式 47

2.6.2 页和扩展盘区类型 48

2.6.3 管理文件空间的页 49

2.6.4 跟踪表和索引的页 51

2.7 推荐操作 52

实验 创建和管理数据库 52

练习1 创建ClassNorthwind数据库 53

练习2 管理ClassNorthwind事务日志文件的增长 54

练习3 设置数据库恢复模型 55

习题 55

第3章 创建数据类型和表 58

3.1 创建数据类型 58

3.1.1 系统提供的数据类型 58

3.1.2 创建和删除用户定义的数据类型 64

3.1.3 选择数据类型的指导原则 66

3.2 创建表 67

3.2.1 SQL Server在行中组织数据的方式 67

3.2.2 SQL Server组织text、ntext和image数据的方式 68

3.2.3 创建和删除表 70

3.2.4 添加和删除列 75

3.3 生成列值 79

3.3.1 使用标识属性 79

3.3.2 使用NEWID函数和uniqueidentifier数据类型 81

3.4 生成脚本 81

3.4.1 以Transact-SQL脚本方式生成架构 81

3.4.2 生成脚本文件 81

3.5 推荐操作 82

实验 创建数据类型和表 82

练习1 创建用户自定义数据类型 83

练习2 在ClassNorthwind数据库中创建表 84

练习3 添加和删除列 86

练习4 生成Transact-SQL脚本 86

练习5 在ClassNorthwind数据库中加载数据 87

习题 87

第4章 实现数据完整性 89

4.1 数据完整性的类型 89

4.1.1 域完整性 90

4.1.2 实体完整性 90

4.1.3 引用完整性 90

4.2 强制数据完整性 90

4.2.1 由声明保证的数据完整性 90

4.2.2 由代码保证的数据完整性 90

4.3 定义约束 90

4.3.1 决定使用何种约束 91

4.3.2 创建约束 91

4.3.3 使用约束的注意事项 93

4.4 约束的类型 93

4.4.1 DEFAULT约束 93

4.4.2 CHECK约束 95

4.4.3 PRIMARY KEY约束 97

4.4.4 UNIQUE约束 98

4.4.5 FOREIGN KEY约束 102

4.4.6 级联引用完整性 103

4.5 禁用约束 108

4.5.1 禁用在现有数据上的约束检查 108

4.5.2 在加载新数据时禁用约束检查 108

4.6 使用默认值和规则 109

4.7 决定使用何种强制方法 112

4.8 推荐操作 112

实验 实现数据完整性 113

练习1 定义DEFAULT约束 114

练习2 定义CHECK约束 115

练习3 定义PRIMARY KEY约束 116

练习4 定义FOREIGN KEY约束 116

可选 创建默认值和规则 117

习题 118

第5章 Transact-SQL介绍 121

5.1 Transact-SQL编程语言 121

5.2 Transact-SQL语句的种类 122

5.2.1 数据定义语言(DDL)语句 123

5.2.2 数据控制语言(DCL)语句 124

5.2.3 数据操作语言(DML)语句 125

5.3 Transact-SQL语法的要素 125

5.3.1 批处理命令 125

5.3.2 注释语句 126

5.3.3 标识符 127

5.3.4 标识符的命名原则 129

5.3.5 数据类型 129

5.3.6 变量 130

5.3.7 函数 132

5.3.8 系统函数示例 140

5.3.9 运算符 141

5.3.10 表达式 143

5.3.11 流控制的语言元素 143

5.3.12 保留的关键字 145

实验 使用SQL Server联机丛书 145

练习 使用SQL Server联机丛书 146

习题 148

第6章 使用Transact-SQL查询工具 150

6.1 SQL查询分析器 150

6.2 使用SQL查询分析器中的对象浏览器工具 151

6.3 使用SQL查询分析器中的模板 151

6.4 使用osql实用工具 152

6.4.1 启动osql命令行实用工具 152

6.4.2 使用交互模式 152

6.4.3 使用脚本执行模式 152

6.4.4 使用扩展的osql脚本命令 153

6.5 执行Transact-SQL语句 153

6.5.1 动态构造语句 153

6.5.2 使用批处理 155

6.5.3 使用脚本 159

6.6 推荐操作 159

实验 创建并执行Transact-SQL脚本 159

练习1 编写基本SELECT语句 160

练习2 修改脚本文件 161

练习3 使用osql实用工具执行脚本 162

习题 162

第7章 检索数据 164

7.1 使用SELECT语句检索数据 164

7.1.1 使用SELECT语句 164

7.1.2 指定列 165

7.1.3 使用WHERE子句指定行 166

7.2 过滤数据 167

7.2.1 使用比较运算符 167

7.2.2 使用字符串比较符 168

7.2.3 使用逻辑运算符 170

7.2.4 检索一定范围内的值 171

7.2.5 使用值列表作为搜索条件 172

7.2.6 检索未知值 174

7.3 设置结果集格式 174

7.3.1 对数据进行排序 174

7.3.2 消除重复行 176

7.3.3 改变列名 178

7.3.4 使用字面值 179

7.4 查询处理 179

7.5 自动地缓存查询 180

7.6 需要考虑的性能问题 183

7.7 推荐操作 183

实验 检索数据并操作结果集 184

练习1 检索数据 185

练习2 操作结果集 189

练习3 使用系统函数 192

习题 193

第8章 数据分组与汇总 196

8.1 使用TOPn列出前n个记录 196

8.2 使用聚合函数 197

8.3 GROUP BY的基础知识 202

8.3.1 使用GROUP BY子句 202

8.3.2 联合使用GROUP BY子句和HAVING子句 204

8.4 在结果集中生成汇总值 206

8.4.1 使用带有ROLLUP运算符的GROUP BY子句 206

8.4.2 使用带有CUBE运算符的GROUP BY子句 209

8.4.3 使用GROUPING函数 210

8.5 使用COMPUTE和COMPUTE BY子句 213

8.5.1 生成某一列的明细值和汇总值的报表 213

8.5.2 为组中的子集生成明细值和汇总值的报表 214

8.6 推荐操作 215

实验 数据分组和汇总 216

练习1 使用TOPn关键字 217

练习2 使用GROUP BY子句和HAVING子句 219

练习3 使用ROLLUP子句和CUBE运算符 222

练习4 使用COMPUTE和COMPU-TE BY子句 224

习题 227

第9章 多表联接 229

9.1 使用表的别名 229

9.2 命名列 230

9.3 组合多个表中的数据 230

9.3.1 联接概述 230

9.3.2 使用内联接 232

9.3.3 使用外联接 235

9.3.4 使用交叉联接 237

9.3.5 联接两个以上的表 239

9.3.6 自联接(Self-Join) 241

9.4 合并多个结果集 245

9.5 推荐操作 246

实验 查询多个表 247

练习1 联接表 248

练习2 使用UNION运算符合并结果集 251

习题 253

第10章 子查询 256

10.1 子查询介绍 256

10.1.1 使用子查询的原因 256

10.1.2 使用联接查询而不使用子查询的原因 256

10.1.3 子查询的使用方法 256

10.2 把子查询用做派生表 257

10.3 把子查询用做表达式 257

10.4 使用子查询关联数据 258

10.4.1 计算一个相关子查询 258

10.4.2 模拟JOIN子句 261

10.4.3 模拟HAVING子句 263

10.5 使用EXISTS和NOT EXISTS子句 264

10.5.1 和关联子查询一起使用 264

10.5.2 判断某个值是否存在于值的列表中 264

10.5.3 SQL Server进程 264

10.6 推荐操作 265

实验 使用子查询 266

练习1 把子查询用做派生表 267

练习2 把子查询用做表达式 270

练习3 使用子查询关联数据 273

习题 274

第11章 修改数据 276

11.1 使用事务 276

11.1.1 启动事务 276

11.1.2 结束事务 276

11.2 插入数据 277

11.2.1 用Values子句插入一行数据 277

11.2.2 使用INSERT...SELECT语句 278

11.2.3 使用SELECT INTO语句创建表 279

11.2.4 插入部分数据 281

11.2.5 使用列缺省值插入数据 282

11.3 删除数据 283

11.3.1 使用DELETE语句 283

11.3.2 使用TRUNCATE TABLE语句 284

11.3.3 删除基于其他表的行 285

11.4 更新数据 286

11.4.1 根据表中数据更新行 286

11.4.2 根据其他表更新行 287

11.5 性能考虑 289

11.6 推荐操作 289

实验修改数据 289

练习1 使用INSERT语句 291

练习2 使用包含DEFAULT关键字的INSERT语句 292

练习3 使用包含DEFAULT VALUES关键字的INSERT语句 294

练习4 使用DELETE语句 295

练习5 使用UPDATE语句 296

练习6 根据其他表的数据修改现有表 297

习题 299

第12章 全文索引查询 301

12.1 Microsoft Search服务介绍 301

12.2 Microsoft Search服务组件 301

12.2.1 搜索服务结构 301

12.2.2 搜索服务功能 302

12.3 获取全文索引的信息 302

12.4 编写全文查询 304

12.4.1 CONTAINS谓词 304

12.4.2 FREETEXT谓词 306

12.4.3 CONTAINSTABLE和FREETEXTTABLE函数 306

12.4.4 使用全文关键字 307

12.5 推荐操作 308

12.6 全文索引的性能考虑事项 308

实验 全文索引查询 309

练习1 获得关于全文索引的信息 311

练习2 编写全文查询 312

习题 314

第13章 规划索引 316

13.1 索引介绍 316

13.1.1 SQL Server存储和访问数据的方法 316

13.1.2 使用索引的场合 317

13.2 索引架构 318

13.2.1 使用堆 318

13.2.2 使用聚集索引 318

13.2.3 使用非聚集索引 319

13.3 SQL Server检索存储的数据的方法 319

13.3.1 SQL Server中sysindexes表的使用 319

13.3.2 不使用索引查找行 320

13.3.3 使用非聚集索引在堆中查找行 320

13.3.4 在聚集索引中查找行 321

13.3.5 使用基于聚集索引的非聚集索引查找行 322

13.4 SQL Server维护索引和堆结构的方法 323

13.4.1 索引中的页拆分 323

13.4.2 堆中的转向指针 324

13.4.3 SQL Server更新行的方法 325

13.4.4 SQL Server删除行的方法 325

13.5 决定需要索引的列 326

13.5.1 数据 326

13.5.2 使用索引的指导原则 327

13.5.3 选择合适的聚集索引 327

13.5.4 使用索引以支持查询 328

13.5.5 决定选择性 328

13.5.6 决定密度 330

13.5.7 决定数据分布 331

13.6 推荐操作 332

实验 决定一个表的索引 332

练习1 使用sp_help识别索引 334

练习2 查看sysindexes表中的项 334

习题 335

第14章 创建和维护索引 337

14.1 创建索引 337

14.1.1 创建和删除索引 337

14.1.2 创建惟一索引 338

14.1.3 创建组合索引 340

14.1.4 在计算列上创建索引 341

14.1.5 获得现有索引的信息 342

14.2 创建索引时的选项 342

14.2.1 使用FILLFACTOR选项 342

14.2.2 使用PAD_INDEX选项 344

14.3 维护索引 344

14.3.1 数据碎片 344

14.3.2 DBCC SHOWCONTIG语句 345

14.3.3 DBCC INDEXDEFRAG语句 347

14.3.4 DROP_EXISTING选项 348

实验A 创建和维护索引 349

练习1 创建索引 350

练习2 检查索引结构 352

14.4 统计信息介绍 354

14.4.1 统计信息的收集方法 355

14.4.2 统计信息的存储方法 355

14.4.3 创建统计信息 356

14.4.4 更新统计信息 357

14.4.5 查看统计信息 358

14.5 查询sysindexes表 359

14.6 用索引优化向导设置索引 360

14.6.1 确定何时使用索引优化向导 360

14.6.2 确定怎样使用索引优化向导 360

14.7 性能考虑 361

14.8 推荐操作 361

实验B 查看索引统计信息 362

练习1 检查索引的使用 363

练习2 查看索引统计信息和评估索引选择性 366

习题 367

第15章 实现视图 370

15.1 视图介绍 370

15.2 视图的优点 371

15.3 定义视图 372

15.3.1 创建视图 372

15.3.2 示例:联接表的视图 374

15.3.3 更改和删除视图 375

15.3.4 避免破坏所有权链 376

15.3.5 查找视图定义信息 377

15.3.6 隐藏视图定义 377

15.4 通过视图修改数据 378

15.5 使用视图优化性能 379

15.5.1 性能考虑 379

15.5.2 使用索引视图 380

15.5.3 使用视图来分区数据 382

15.6 推荐操作 382

实验 实现视图 383

练习1 创建和测试视图 384

练习2 加密视图的定义 386

练习3 通过视图修改数据 387

练习4 查找视图定义 387

习题 388

第16章 实现存储过程 390

16.1 存储过程介绍 390

16.1.1 定义存储过程 390

16.1.2 存储过程的初始处理 391

16.1.3 存储过程的后续处理 392

16.1.4 存储过程的优点 394

16.2 创建、执行、修改和删除存储过程 395

16.2.1 创建存储过程 395

16.2.2 创建存储过程的指导原则 396

16.2.3 执行存储过程 398

16.2.4 修改和删除存储过程 399

实验A 创建存储过程 401

练习1 编写和执行存储过程 402

练习2 查找存储过程的信息 403

16.3 在存储过程中使用参数 404

16.3.1 使用输入参数 404

16.3.2 使用输入参数执行存储过程 405

16.3.3 使用输出参数返回值 406

16.3.4 显式地重新编译存储过程 407

16.4 执行扩展存储过程 408

16.5 错误信息处理 409

16.6 性能考虑 413

16.7 推荐操作 414

实验B 创建带参数的存储过程 414

练习1 使用创建存储过程向导 416

练习2 在存储过程中使用错误处理 417

练习3 定制错误信息 418

可选 使用返回代码 419

习题 420

第17章 实现用户定义函数 423

17.1 用户定义函数 423

17.2 用户定义函数的定义 424

17.2.1 创建用户定义函数 424

17.2.2 创建架构绑定函数 426

17.2.3 为用户定义函数设置权限 426

17.2.4 更改和删除用户定义函数 426

17.3 用户定义函数示例 427

17.3.1 使用标量用户定义函数 427

17.3.2 标量用户定义函数示例 428

17.3.3 使用多语句表值函数 429

17.3.4 多语句表值函数示例 429

17.3.5 使用内嵌表值函数 430

17.3.6 内嵌表值函数示例 430

17.4 推荐操作 431

实验 创建用户定义函数 432

练习1 创建标量用户定义函数 434

练习2 创建多语句表值用户定义函数 435

练习3 创建内嵌表值用户定义函数 435

习题 436

第18章 实现触发器 437

18.1 触发器介绍 437

18.1.1 触发器 437

18.1.2 触发器的使用 438

18.1.3 使用触发器的考虑事项 439

18.2 定义触发器 441

18.2.1 创建触发器 441

18.2.2 更改和删除触发器 442

18.3 触发器的工作过程 444

18.3.1 INSERT触发器的工作过程 444

18.3.2 DELETE触发器的工作过程 445

18.3.3 UPDATE触发器的工作过程 445

18.3.4 INSTEAD OF触发器的工作过程 446

18.3.5 嵌套触发器的工作过程 447

18.3.6 递归触发器 449

18.4 触发器示例 450

18.4.1 强制数据完整性 450

18.4.2 强制业务规则 451

18.5 性能考虑 451

18.6 推荐操作 452

实验 创建触发器 452

练习1 创建触发器 453

练习2 创建触发器以更新派生数据 454

练习3 创建触发器以维护复杂的业务规则 455

练习4 测试约束和触发器的触发顺序 456

习题 456

第19章 多服务器编程 458

19.1 分布式查询介绍 458

19.2 在远程数据源上执行特殊查询 459

19.3 设置链接服务器环境 461

19.3.1 链接到远程数据源 462

19.3.2 建立链接服务器安全性 463

19.3.3 配置链接服务器选项 464

19.3.4 获得关于链接服务器的信息 466

19.4 在链接服务器上执行查询 467

19.4.1 使用链接服务器 467

19.4.2 执行链接服务器查询 468

19.4.3 执行直接传递查询 469

19.5 在链接服务器上执行存储过程 469

19.6 管理分布式事务 470

19.6.1 使用MS DTC管理分布式事务 470

19.6.2 通过使用组件服务管理分布式事务 470

19.6.3 分布式数据处理 470

19.7 修改链接服务器上的数据 471

19.8 使用分区视图 472

19.8.1 分区视图的要求 472

19.8.2 分区视图的工作原理 473

19.8.3 实现分布式分区视图 474

19.8.4 分区数据的考虑事项 474

19.9 推荐操作 475

实验 使用分布式数据 475

练习1 设置链接服务器 476

练习2 查询远程数据 478

可选 管理分布式事务 481

习题 483

第20章 优化查询性能 485

20.1 查询优化器介绍 485

20.1.1 查询优化器的功能 485

20.1.2 查询优化器使用基于成本的优化 486

20.1.3 查询优化器工作过程 488

20.1.4 查询优化阶段 488

20.1.5 缓存执行计划 490

20.1.6 设置成本限制 492

20.2 获得执行计划信息 493

20.2.1 查看STATISTICS语句输出 493

20.2.2 查看SHOWPLAN_ALL和SHOWPLAN_TEXT输出 494

20.2.3 以图形方式查看执行计划 495

20.3 使用索引来覆盖查询 498

20.3.1 覆盖查询的索引介绍 498

20.3.2 使用覆盖查询的索引定位数据 499

20.3.3 识别可以用来覆盖查询的索引 501

20.3.4 确定是否使用索引覆盖查询 502

20.3.5 创建覆盖查询的索引的指导原则 502

20.4 索引策略 503

20.4.1 估算访问一定范围数据的查询所使用的I/O数量 503

20.4.2 多查询的索引 504

20.4.3 创建索引的指导原则 505

20.5 替代查询优化器 506

20.5.1 确定何时替代查询优化器 506

20.5.2 使用提示和SET FORCEPLAN语句 506

20.5.3 替代查询优化器之后确认查询性能 508

20.6 推荐操作 509

实验 优化查询性能 509

练习1 使用图形执行计划确定如何解析查询 511

练习2 比较索引覆盖的查询与索引未覆盖的查询之间的I/O 512

练习3 比较检索一定范围内数据的查询所需的I/O数量 514

可选 利用优化程序提示强制使用索引或联接 517

习题 518

第21章 分析查询 521

21.1 使用AND运算符的查询 521

21.1.1 处理AND运算符 521

21.1.2 索引定义的原则和性能考虑 522

21.2 使用OR运算符的查询 522

实验A 分析使用AND和OR运算符的查询 522

练习1 评估使用部分索引的查询 524

练习2 评估使用全部索引的查询 528

练习3 评估使用IN关键字的查询 533

练习4 评估包含嵌套SELECT语句的查询 535

练习5 评估包含OR运算符的查询 538

21.3 使用联接操作的查询 542

21.3.1 JOIN子句的选择性和密度 542

21.3.2 联接的处理 544

21.3.3 嵌套循环联接的处理 545

21.3.4 使用合并联接的考虑事项 547

21.3.5 哈希联接的处理 549

21.4 推荐操作 551

实验B 分析使用不同联接策略的查询 551

练习1 处理嵌套循环联接 552

练习2 处理合并联接 554

练习3 处理哈希联接 556

习题 557

第22章 管理事务和锁 560

22.1 事务和锁介绍 560

22.2 管理事务 561

22.2.1 SQL Server事务 562

22.2.2 事务恢复和检查点 563

22.2.3 使用事务的考虑事项 563

22.2.4 设定隐性事务选项 565

22.2.5 用户定义事务的限制 566

22.3 SQL Server的锁定 567

22.3.1 锁防止的并发问题 567

22.3.2 可锁定的资源 567

22.3.3 锁的类型 568

22.3.4 锁的兼容性 571

22.4 管理锁 572

22.4.1 会话级锁定选项 573

22.4.2 动态锁定架构 574

22.4.3 表级锁定选项 575

22.4.4 死锁 576

22.4.5 显示锁定信息 578

22.5 推荐操作 579

实验 管理事务和锁 580

练习1 创建和执行事务 581

练习2 回滚事务 582

练习3 查看锁定信息 582

练习4 设置锁定选项 583

习题 584

词汇表 586