第1章 数据库基础 1
1.1 数据库基础 1
1.1.1 数据与数据库 1
1.1.2 表、行、列和约束 2
1.1.3 在Microsoft SQL Server2008中创建表 4
1.1.4 创建表的步骤小结 7
1.1.5 设置列属性和约束 7
1.1.6 关系 8
1.1.7 其他SQL Server 2008数据库对象 14
1.2 SQL Server 2008概述 15
1.2.1 SQL Server 2008简介 15
1.2.2 SQL Server 2008的应用方式 16
1.2.3 SQL Server 2008的版本 17
1.2.4 SQL Server 2008的组件 17
1.2.5 SQL Server 2008管理工具 17
1.2.6 SQL Server 2008数据库引擎组件 20
1.2.7 SQL Server 2008的软硬件需求 21
第2章 T-SQL入门 22
2.1 T-SQL基础 22
2.1.1 T-SQL语句的种类 22
2.1.2 T-SQL查询工具 23
2.1.3 使用查询编辑器输入和运行T-SQL代码 24
2.2 T-SQL快速入门 25
2.2.1 创建数据库 25
2.2.2 创建表 25
2.2.3 插入和更新数据 26
2.2.4 读取表中的数据 27
2.2.5 创建登录名 28
2.2.6 授予访问数据库的权限 29
2.2.7 创建视图和存储过程 29
2.2.8 授予访问数据库对象的权限 30
2.2.9 删除数据库对象 31
2.3 Transact-SQL语法要素 32
2.3.1 批处理命令 32
2.3.2 注释语句 33
2.3.3 标识符 34
2.3.4 数据类型 35
2.3.5 变量 35
2.3.6 几个常用的系统函数 36
2.3.7 运算符 41
2.3.8 表达式 43
2.3.9 流控制的语言元素 43
2.3.10 保留的关键字 45
第3章 创建数据库和数据库文件 46
3.1 创建数据库 46
3.1.1 SQL Server数据库类型 46
3.1.2 数据库的文件组成 47
3.1.3 数据存储 47
3.1.4 创建数据库的注意事项 48
3.1.5 事务日志 49
3.1.6 数据库选项 51
3.1.7 数据压缩 51
3.1.8 演示:创建数据库 52
3.2 创建文件组 53
3.2.1 文件组 53
3.2.2 使用文件组提高数据库性能 54
3.2.3 演示:创建文件组 57
3.3 创建架构 57
3.3.1 架构 57
3.3.2 对象名称解析的工作方式 59
3.3.3 演示:创建架构 60
3.4 创建数据库快照 61
3.4.1 数据库快照的工作方式 61
3.4.2 何时使用数据库快照 62
3.4.3 演示:创建数据库快照 63
3.5 实验:创建数据库和数据库文件 63
3.5.1 实验3-1:创建数据库 64
3.5.2 实验3-2:创建架构 64
3.5.3 实验3-3:创建数据库快照 65
3.5.4 关闭虚拟机 65
3.6 习题 66
第4章 创建数据类型和表 67
4.1 创建数据类型 67
4.1.1 系统提供的数据类型 67
4.1.2 使用系统提供的数据类型 68
4.1.3 别名数据类型 69
4.1.4 演示:创建数据类型 70
4.2 创建表 71
4.2.1 SQL Server在行中如何组织数据 71
4.2.2 SQL Server如何组织大数据值 72
4.2.3 表的类型 73
4.2.4 创建表的注意事项 75
4.2.5 生成Transact-SQL脚本 76
4.2.6 演示:创建表 77
4.3 创建已分区表 78
4.3.1 已分区表 78
4.3.2 分区函数 79
4.3.3 分区方案 81
4.3.4 可对分区数据执行的操作 81
4.3.5 演示:创建已分区表 84
4.4 实验:创建数据类型和表 85
4.4.1 实验4-1:创建数据类型 85
4.4.2 实验4-2:使用新的日期和时间数据类型 86
4.4.3 实验4-3:创建表 86
4.4.4 实验4-4:创建已分区表 87
4.4.5 关闭虚拟机 87
4.5 习题 88
第5章 使用Transact-SQL查询数据库 91
5.1 检索数据 91
5.1.1 使用SELECT语句检索数据 91
5.1.2 使用WHERE子句 92
5.1.3 设置结果集格式 99
5.2 数据分组与汇总 102
5.2.1 使用TOP n列出前n个记录 102
5.2.2 使用聚合函数 103
5.2.3 GROUP BY的基础知识 105
5.2.4 联合使用 GROUP BY子句和HAVING子句 107
5.2.5 在结果集中生成汇总值 109
5.2.6 使用COMPUTE和COMPUTE BY子句 112
5.2.7 推荐操作 114
5.3 多表联接 114
5.3.1 使用表的别名 114
5.3.2 组合多个表中的数据 115
5.3.3 推荐操作 126
5.4 子查询 126
5.4.1 子查询介绍 126
5.4.2 把子查询用作派生表 127
5.4.3 把子查询用作表达式 128
5.4.4 使用子查询关联数据 128
5.4.5 推荐操作 133
5.5 修改数据 133
5.5.1 使用事务 133
5.5.2 插入数据 134
5.5.3 删除数据 137
5.5.4 更新数据 140
5.5.5 性能考虑 142
5.5.6 推荐操作 142
5.6 习题 142
第6章 创建和优化索引 145
6.1 规划索引 145
6.1.1 SQL Server如何访问数据 145
6.1.2 堆 146
6.1.3 聚集索引 148
6.1.4 非聚集索引 149
6.2 创建索引 151
6.2.1 创建索引概述 151
6.2.2 唯一索引 153
6.2.3 创建多列索引的注意事项 154
6.2.4 何时创建计算列的索引 155
6.2.5 已分区索引 155
6.2.6 在索引中并入可用空间的选项 156
6.2.7 获取索引信息的方法 157
6.2.8 演示:创建索引 158
6.3 优化索引 158
6.3.1 数据库引擎优化顾问 159
6.3.2 演示:使用数据库引擎优化顾问 159
6.3.3 索引碎片 160
6.3.4 索引碎片整理选项 162
6.3.5 演示:索引碎片整理 163
6.4 实验:创建和优化索引 163
6.4.1 实验6-1:创建索引 163
6.4.2 实验6-2:优化索引 164
6.4.3 关闭虚拟机 164
6.5 习题 164
第7章 使用约束和触发器实现数据完整性 168
7.1 数据完整性概述 168
7.1.1 数据完整性类型 168
7.1.2 强制数据完整性的选项 169
7.2 实现约束 170
7.2.1 约束 170
7.2.2 键约束 171
7.2.3 其他约束 173
7.2.4 级联引用完整性 175
7.2.5 约束检查注意事项 176
7.2.6 演示:创建约束 178
7.3 实现触发器 179
7.3.1 触发器 179
7.3.2 INSERT触发器的工作方式 181
7.3.3 DELETE触发器的工作方式 182
7.3.4 UPDATE触发器的工作方式 183
7.3.5 INSTEAD OF触发器的工作方式 184
7.3.6 嵌套触发器工作方式 185
7.3.7 递归触发器的注意事项 186
7.3.8 演示:创建触发器 187
7.4 实验:使用约束和触发器实现数据完整性 187
7.4.1 实验7-1:创建约束 187
7.4.2 实验7-2:禁用约束 188
7.4.3 实验7-3:创建触发器 189
7.4.4 关闭虚拟机 190
7.5 习题 190
第8章 使用XML 193
8.1 使用XML数据类型 193
8.1.1 XML 193
8.1.2 XML数据类型 194
8.1.3 Query、Value和Exist方法 195
8.1.4 Modify方法 196
8.1.5 Nodes方法 196
8.1.6 演示:使用XML数据类型 197
8.2 使用FOR XML检索XML 199
8.2.1 FOR XML子句简介 199
8.2.2 RAW模式查询 201
8.2.3 AUTO模式查询 203
8.2.4 EXPLICIT模式查询 205
8.2.5 PATH模式查询 207
8.2.6 检索嵌套XML的语法 208
8.2.7 演示:使用FOR XML 209
8.3 使用OPENXML分解XML 210
8.3.1 分解XML数据概述 210
8.3.2 管理内存中节点树的存储过程 211
8.3.3 OPENXML语法 213
8.3.4 处理XML命名空间的语法 215
8.3.5 演示:使用OPENXML分解XML 216
8.4 实验:使用XML 217
8.4.1 实验8-1:映射关系数据和XML 217
8.4.2 实验8-2:将XML本机存储在数据库中 221
8.5 XQuery简介 223
8.5.1 XQuery 223
8.5.2 XQuery基础知识 224
8.5.3 XQuery表达式 225
8.5.4 演示:使用XQuery 表达式 225
8.6 创建XML索引 226
8.6.1 XML索引 226
8.6.2 XML索引的优点 226
8.6.3 XML索引的类型 227
8.6.4 演示:创建XML索引 228
8.7 实现XML架构 229
8.7.1 XML架构 230
8.7.2 XML架构验证 232
8.7.3 XML架构集合 232
8.7.4 类型化和非类型化XML 234
8.7.5 演示:使用类型化XML 235
8.8 实验:使用XML 235
8.8.1 实验8-3:结合XML方法使用XQuery 236
8.8.2 实验8-4:创建XML索引 237
8.8.3 关闭虚拟机 238
8.9 习题 238
第9章 实现视图 243
9.1 视图简介 243
9.1.1 视图 243
9.1.2 视图类型 244
9.1.3 视图的优点 246
9.2 创建和管理视图 246
9.2.1 创建视图的语法 246
9.2.2 演示:创建视图 248
9.2.3 更改和删除视图的语法 249
9.2.4 视图加密 251
9.2.5 所有权链如何影响视图 252
9.2.6 视图信息来源 253
9.2.7 在视图中修改数据的注意事项 254
9.3 使用视图优化性能 255
9.3.1 视图的性能注意事项 255
9.3.2 索引视图的性能注意事项 256
9.3.3 分区视图 257
9.4 实验:实现视图 258
9.4.1 实验9-1:创建视图 258
9.4.2 实验9-2:创建索引视图 259
9.4.3 实验9-3:创建分区视图 260
9.4.4 关闭虚拟机 261
9.5 习题 261
第10章 实现存储过程 265
10.1 使用存储过程 265
10.1.1 什么是存储过程 265
10.1.2 创建存储过程的语法 267
10.1.3 创建存储过程的准则 271
10.1.4 演示:创建存储过程 272
10.1.5 更改存储过程的语法 273
10.1.6 删除存储过程的语法 274
10.1.7 演示:更改和删除存储过程 275
10.1.8 演示:切换执行上下文 275
10.2 创建带参数的存储过程 277
10.2.1 存储过程参数 277
10.2.2 演示:创建带参数的存储过程 280
10.2.3 表值参数 281
10.2.4 演示:使用表值参数 282
10.3 处理执行计划 283
10.3.1 执行计划 283
10.3.2 查看执行计划 284
10.3.3 执行计划缓存 285
10.3.4 查询编译 287
10.3.5 强制存储过程重新编译 288
10.3.6 演示:使用执行计划 288
10.4 处理异常 289
10.4.1 结构化异常处理的语法 289
10.4.2 异常处理准则 290
10.4.3 演示:处理异常 291
10.5 实验:实现存储过程 292
10.5.1 实验10-1:创建存储过程 292
10.5.2 实验10-2:处理执行计划 294
10.5.3 关闭虚拟机 294
10.6 习题 295
第11章 实现函数 297
11.1 函数简介 297
11.1.1 函数类型 297
11.1.2 标量函数 298
11.1.3 内联表值函数 299
11.1.4 多语句表值函数 300
11.1.5 演示:创建函数 302
11.2 使用函数 302
11.2.1 确定性函数和非确定性函数 303
11.2.2 创建函数的准则 304
11.2.3 将存储过程重写为函数 304
11.3 控制执行上下文 305
11.3.1 执行上下文 305
11.3.2 EXECUTE AS子句 307
11.3.3 扩展模拟上下文 308
11.4 实验:实现函数 310
11.4.1 实验11-1:创建函数 310
11.4.2 实验11-2:控制执行上下文 313
11.4.3 关闭虚拟机 316
11.5 习题 316
第12章 在数据库中实现托管代码 318
12.1 SQL Server公共语言运行时简介 318
12.1.1 .NET Framework简介 318
12.1.2 .NET公共语言运行时 324
12.1.3 托管代码的优点 325
12.1.4 CLR托管代码数据库对象 325
12.1.5 托管代码和Transact-SQL 326
12.2 导入和配置程序集 326
12.2.1 程序集 327
12.2.2 程序集信任级别 327
12.2.3 导入程序集的语法 328
12.2.4 演示:导入和配置程序集 328
12.3 创建托管数据库对象 329
12.3.1 托管数据库对象概述 329
12.3.2 托管存储过程、触发器和函数 330
12.3.3 托管聚合和用户定义类型 330
12.3.4 演示:创建托管数据库对象 331
12.4 实验:在数据库中实现托管代码 332
12.4.1 实验12-1:导入程序集 333
12.4.2 实验12-2:创建托管数据库对象 333
12.4.3 关闭虚拟机 335
12.5 习题 335
第13章 管理事务和锁 337
13.1 事务和锁概述 337
13.1.1 事务 337
13.1.2 锁 338
13.1.3 并发控制 339
13.1.4 演示:介绍事务 340
13.2 管理事务 341
13.2.1 自动提交事务 341
13.2.2 显式事务 342
13.2.3 隐式事务 345
13.2.4 事务恢复 347
13.2.5 使用事务的注意事项 348
13.2.6 受限语句 349
13.3 理解SQL Server锁定体系结构 350
13.3.1 可通过锁防止的并发问题 350
13.3.2 可锁定资源 351
13.3.3 锁类型 352
13.3.4 锁兼容性 354
13.4 管理锁 355
13.4.1 会话级锁定选项 355
13.4.2 锁升级 357
13.4.3 动态锁定 357
13.4.4 死锁 358
13.4.5 查看锁定信息的方法 359
13.4.6 演示:查看锁定信息 360
13.5 实验:管理事务和锁 361
13.5.1 实验13-1:使用事务 361
13.5.2 实验13-2:管理锁 362
13.5.3 关闭虚拟机 363
13.6 习题 363
第14章 使用Service Broker 366
14.1 Service Broker概述 366
14.1.1 Service Broker 366
14.1.2 Service Broker系统体系结构 367
14.1.3 Service Broker会话体系结构 368
14.1.4 Service Broker会话过程 369
14.1.5 Service Broker会话优先级 371
14.1.6 Service Broker安全体系架构 374
14.1.7 Management Studio增强功能 376
14.2 创建Service Broker对象 376
14.2.1 启用Service Broker 377
14.2.2 外部激活支持 378
14.2.3 创建消息类型的语法 379
14.2.4 创建约定的语法 381
14.2.5 创建队列的语法 383
14.2.6 创建服务的语法 387
14.2.7 演示:创建Service Broker对象 388
14.3 发送和接收消息 389
14.3.1 发送消息的语法 389
14.3.2 接收消息的语法 392
14.3.3 演示:发送和接收消息 395
14.3.4 发送/接收消息的诊断工具 396
14.4 实验:使用Service Broker 397
14.4.1 实验14-1:创建Service Broker对象 397
14.4.2 实验14-2:实现起始服务 399
14.4.3 实验14-3:实现目标服务 400
14.4.4 关闭虚拟机 401
14.5 习题 401