第1章 数据库系统 1
1.1 数据库系统基础 1
1.1.1 数据库的定义 2
1.1.2 数据建模 3
1.1.3 数据库环境的组件 5
1.2 三层数据库系统架构 7
1.2.1 概念层 8
1.2.2 外部层 9
1.2.3 内部层 10
1.3 数据库架构 10
1.3.1 三层数据库架构 11
1.3.2 数据库架构之间的映射 13
1.3.3 实体与逻辑数据独立 14
1.4 数据库管理系统 15
1.5 数据库管理员 16
1.6 数据库系统的处理架构 18
1.6.1 集中式处理架构 18
1.6.2 分布式处理架构 19
1.7 习题 20
第2章 关系数据库模型 21
2.1 数据库模型基础 21
2.1.1 层级式数据库模型 22
2.1.2 网络式数据库模型 23
2.1.3 关系数据库模型 25
2.2 数据结构 25
2.2.1 关系表架构 25
2.2.2 关系表实例 27
2.2.3 定义域 28
2.2.4 属性值 29
2.2.5 空值 29
2.2.6 关系表的特性 30
2.3 数据操作或运算 30
2.3.1 关系型算术 30
2.3.2 关系型计算 31
2.3.3 SQL语言与关系型算术与
计算 32
2.4 完整性约束 32
2.4.1 键约束 32
2.4.2 定义域约束 36
2.4.3 实体完整性 36
2.4.4 引用完整性 37
2.4.5 其他完整性约束 39
2.5 习题 40
第3章 实体关系模型与规范化 41
3.1 实体关系模型与实体关系图 41
3.1.1 实体关系模型的基础 41
3.1.2 实体关系图的基础 42
3.1.3 实体类型 44
3.1.4 关系类型 44
3.1.5 关系约束 45
3.1.6 属性 48
3.1.7 弱实体类型 49
3.2 将实体关系图转换成
关系表架构 50
3.2.1 将强实体类型转换成
关系表 50
3.2.2 将关系类型转换成外键 50
3.2.3 转换多关系类型 53
3.2.4 多值属性转换成关系表 53
3.2.5 弱实体类型转换成关系表 54
3.3 关系表的规范化 55
3.3.1 规范化的基础 55
3.3.2 第一范式(1NF) 56
3.3.3 第二范式(2NF) 58
3.3.4 第三范式(3NF) 59
3.3.5 Boyce-Codd范式(BCNF) 61
3.4 习题 62
第4章 SQL Server数据库管理系统 63
4.1 SQL Server基础 63
4.1.1 SQL Server的版本演进 64
4.1.2 SQL Server的组成元素 64
4.1.3 SQL Server 2012的版本 66
4.2 安装SQL Server 2012 66
4.2.1 SQL Server 2012的
软硬件需求 67
4.2.2 SQL Server实例的安装 68
4.3 SQL Server管理工具的使用 72
4.3.1 SQL Server配置管理器 72
4.3.2 启动Management Studio
集成管理工具 76
4.3.3 Management Studio的
使用界面 77
4.4 查看SQL Server数据库对象 78
4.4.1 系统数据库 78
4.4.2 数据库对象 79
4.5 新增SQL Server用户账户 81
4.5.1 SQL Server用户管理的
基础 81
4.5.2 新增登录 82
4.5.3 新增数据库用户 83
4.6 SQL Server联机丛书 84
4.7 习题 86
第5章 数据库设计工具的使用 87
5.1 数据库设计基础 87
5.1.1 数据库系统开发的
生命周期 87
5.1.2 数据库设计方法论 88
5.1.3 安装数据库设计工具 90
5.2 启动设计工具与新增模型 91
5.2.1 启动与结束
Toad Data Modeler 91
5.2.2 新增模型 92
5.3 新建实体 93
5.3.1 实体的图形符号 93
5.3.2 新建与删除实体 94
5.3.3 新建属性和指定主键 96
5.3.4 编辑属性 98
5.3.5 创建索引 98
5.4 创建关系性 99
5.4.1 关系性的图形符号 100
5.4.2 创建关系性 102
5.4.3 编辑关系性 104
5.4.4 设置引用完整性规则 105
5.4.5 指定新的外键 106
5.5 生成报告和SQL命令 106
5.5.1 生成数据库设计文件 107
5.5.2 生成SQL的DDL命令 109
5.6 习题 110
第6章 SQL语言与数据库创建 111
6.1 SQL语言基础 111
6.1.1 SQL结构化查询语言 111
6.1.2 SQL语言的基本语法 112
6.1.3 SQL语言的命令种类 113
6.1.4 在Management Studio中
执行SQL脚本文件 114
6.2 SQL Server的数据库结构 116
6.2.1 数据库文件与文件组 116
6.2.2 分页 118
6.2.3 范围 118
6.3 创建用户数据库 119
6.3.1 在Management Studio中
创建数据库 119
6.3.2 使用T-SQL命令
创建数据库 121
6.3.3 创建多文件组的数据库 122
6.4 修改用户数据库 124
6.4.1 使用Management Studio修改
用户数据库 125
6.4.2 数据库选项 126
6.4.3 使用T-SQL命令
修改用户数据库 128
6.5 删除用户数据库 130
6.6 数据库的分离与附加 131
6.6.1 分离数据库 131
6.6.2 附加数据库 132
6.6.3 使用T-SQL命令分离与
附加数据库 134
6.7 习题 135
第7章 创建数据表与完整性约束 137
7.1 数据类型 137
7.1.1 数值数据类型 137
7.1.2 日期数据类型 139
7.1.3 字符与位串流数据类型 140
7.1.4 其他数据类型 142
7.1.5 用户自定义数据类型 143
7.2 数据表的创建 143
7.2.1 使用Management Studio
创建数据表 144
7.2.2 使用T-SQL命令
创建数据表 146
7.2.3 创建计算列 148
7.2.4 稀疏字段的使用 149
7.3 创建完整性约束 149
7.3.1 约束的基础 149
7.3.2 创建PRIMARY KEY
约束 150
7.3.3 创建CHECK约束 151
7.3.4 创建数据表的关系性 152
7.4 修改与删除数据表 155
7.4.1 修改数据表名称 156
7.4.2 修改数据表字段 156
7.4.3 修改约束 157
7.4.4 删除数据表 158
7.5 创建SQL Server数据库
关系图 159
7.6 临时表的创建 161
7.7 习题 162
第8章 SELECT语句的基本查询 163
8.1 SELECT查询命令 163
8.2 SELECT子句 164
8.2.1 数据表的字段 164
8.2.2 字段别名 166
8.2.3 计算值字段 166
8.2.4 删除重复记录 168
8.2.5 查询前几笔记录 169
8.3 FROM子句 170
8.4 WHERE子句 170
8.4.1 比较运算符 171
8.4.2 逻辑运算符 172
8.4.3 算术运算符 178
8.5 聚合函数的摘要查询 179
8.5.1 COUNT()函数 179
8.5.2 AVG()函数 180
8.5.3 MAX()函数 181
8.5.4 MIN()函数 181
8.5.5 SUM()函数 182
8.6 分组查询GROUP BY子句 183
8.6.1 GROUP BY子句 183
8.6.2 HAVING子句 184
8.6.3 WITHROLLUP和
WITH CUBE 185
8.6.4 GROUPING SETS子句 187
8.7 排序ORDER BY子句 187
8.8 习题 189
第9章 SELECT语句的高级查询 191
9.1 SQL的多数据表查询 191
9.2 连接查询 192
9.2.1 连接查询的种类 192
9.2.2 内连接查询 194
9.2.3 外连接查询 198
9.2.4 交叉连接查询 201
9.3 集合运算查询 202
9.3.1 集合运算查询的种类 202
9.3.2 UNION并集查询 203
9.3.3 INTERSECT交集查询 204
9.3.4 EXCEPT差集查询 204
9.4 子查询 205
9.4.1 子查询的基础 205
9.4.2 比较运算符的子查询 206
9.4.3 逻辑运算符的子查询 206
9.5 T-SQL高级查询技巧 210
9.5.1 OFFSET和FETCH NEXT的
分页查询 210
9.5.2 NULL空值的处理 212
9.5.3 CTE一般数据表表达式 213
9.6 使用Management Studio设计
SQL查询 216
9.6.1 使用查询设计工具 216
9.6.2 编写数据表的脚本 220
9.7 习题 221
第10章 新增、更新和删除数据 223
10.1 使用Management Studio
编辑记录数据 223
10.2 新增记录 225
10.2.1 INSERT命令 225
10.2.2 行构造器 227
10.2.3 INSERT/SELECT
命令 227
10.2.4 SELECT INTO命令 228
10.3 更新记录 229
10.3.1 UPDATE命令 229
10.3.2 在UPDATE命令
使用子查询 230
10.3.3 合并更新 231
10.4 删除记录 232
10.4.1 DELETE命令 232
10.4.2 子查询与合并删除 233
10.4.3 TRUNCATE TABLE
命令 234
10.5 MERGE命令 235
10.6 DML命令的OUTPUT
子句 238
10.7 习题 240
第11章 视图的创建 241
11.1 视图基础 241
11.1.1 SQL Server视图 241
11.1.2 视图的种类 242
11.1.3 视图的优缺点 242
11.2 创建视图 243
11.2.1 使用Management Studio
创建视图 243
11.2.2 使用T-SQL命令
创建视图 246
11.2.3 从其他视图创建视图 251
11.3 修改与删除视图 251
11.3.1 修改视图 251
11.3.2 删除视图 253
11.4 编辑视图的内容 254
11.4.1 在视图中添加记录 255
11.4.2 在视图中更新记录 256
11.4.3 在视图中删除记录 257
11.5 习题 258
第12章 规划与创建索引 259
12.1 索引基础 259
12.1.1 索引简介 260
12.1.2 索引的种类 260
12.1.3 M路搜索树与B树 261
12.1.4 SQL Server的
索引结构 262
12.2 数据表的索引规划 263
12.2.1 索引的优缺点 264
12.2.2 创建索引的注意事项 264
12.2.3 选择索引字段 265
12.3 SQL Server自动创建的
索引 265
12.3.1 PRIMARY KEY字段的
索引 265
12.3.2 UNIQUE字段的索引 267
12.4 创建数据表的索引 267
12.4.1 使用Management Studio
创建索引 268
12.4.2 使用T-SQL命令
创建索引 271
12.5 修改、重新生成与
删除索引 272
12.5.1 使用Management Studio
修改与重新生成数据表的
索引 272
12.5.2 使用T-SQL命令修改与
重新生成索引 274
12.5.3 删除数据表的索引 275
12.6 查看SQL Server的
执行计划 275
12.7 创建视图与计算列的
索引 276
12.7.1 创建计算列的索引 276
12.7.2 创建视图索引 278
12.8 筛选索引与列存放区
索引 281
12.8.1 筛选索引 281
12.8.2 列存放区索引 282
12.9 习题 284
第13章 Transact-SQL程序设计 285
13.1 Transact-SQL语言基础 285
13.1.1 Transact-SQL
数据库语言 286
13.1.2 Transact-SQL
脚本文件 286
13.2 批处理的使用 287
13.2.1 批处理的基础 287
13.2.2 使用GO命令
定义批处理 287
13.3 批注与自定义信息 288
13.3.1 批注 288
13.3.2 PRINT命令输出
自定义信息 289
13.3.3 USE命令转换数据库 289
13.4 变量的声明与使用 290
13.4.1 声明变量与变量初值 290
13.4.2 指定变量值 291
13.4.3 变量的范围 295
13.4.4 SQL Server的
系统函数 295
13.5 表达式与运算符 296
13.5.1 运算符的优先级 296
13.5.2 T-SQL的运算符 297
13.5.3 简洁的T-SQL表达式 298
13.5.4 类型转换运算符 299
13.6 流程控制结构 299
13.6.1 BEGIN/END命令块 300
13.6.2 IF/ELSE条件
控制命令 300
13.6.3 RETURN中断
查询命令 302
13.6.4 CASE多条件函数 303
13.6.5 WHILE循环控制 305
13.6.6 GOTO跳转至
指定标签 307
13.6.7 WAITFOR暂停执行 308
13.6.8 IIF与CHOOSE函数 309
13.7 错误处理 311
13.7.1 错误处理结构 311
13.7.2 使用RAISERROR()
函数产生错误信息 312
13.7.3 THROW命令语句 314
13.8 生成SQL Server脚本 315
13.8.1 编写数据库的脚本 315
13.8.2 生成SQL Server
脚本向导 317
13.9 习题 320
第14章 存储过程与序列对象 321
14.1 存储过程基础 321
14.1.1 存储过程简介 321
14.1.2 存储过程的优点 322
14.2 创建与执行存储过程 323
14.2.1 创建存储过程 323
14.2.2 执行存储过程 325
14.2.3 创建临时存储过程 327
14.3 存储过程的参数传递 328
14.3.1 创建拥有参数的
存储过程 328
14.3.2 默认值参数 330
14.3.3 嵌套调用 331
14.4 存储过程的返回值 332
14.4.1 使用RETURN
关键词 332
14.4.2 使用OUTPUT
关键词 334
14.5 修改与删除存储过程 335
14.5.1 修改存储过程 335
14.5.2 删除存储过程 336
14.6 系统存储过程 336
14.7 创建与使用序列对象 338
14.7.1 创建序列对象 338
14.7.2 使用序列对象 341
14.7.3 修改与删除序列对象 342
14.8 习题 343
第15章 自定义函数与数据游标 345
15.1 自定义函数基础 345
15.2 创建自定义函数 346
15.2.1 标量值函数 347
15.2.2 内联表值函数 349
15.2.3 多语句数据表值函数 351
15.3 自定义函数的使用 352
15.3.1 使用在条件约束或
字段属性 352
15.3.2 创建计算字段 354
15.3.3 使用在流程控制与
表达式 355
15.3.4 替换视图和临时表 355
15.4 修改与删除自定义函数 356
15.4.1 修改自定义函数 356
15.4.2 删除自定义函数 357
15.5 使用数据游标 357
15.5.1 数据游标的基础 357
15.5.2 使用数据游标的步骤 358
15.5.3 数据游标的系统函数 361
15.5.4 使用数据游标更新与删除
数据 363
15.5.5 数据游标变量与参数 365
15.6 习题 366
第16章 触发器 367
16.1 触发器基础 367
16.2 DML触发器 368
16.2.1 创建DML触发器 369
16.2.2 DML触发器与约束 371
16.2.3 创建AFTER触发器 372
16.2.4 创建INSTEAD OF
触发器 376
16.2.5 使用UPDATE()函数 379
16.3 修改、禁用与删除DML
触发器 380
16.3.1 修改触发器 381
16.3.2 禁用触发器 382
16.3.3 删除触发器 383
16.4 DDL触发器 383
16.5 习题 384
第17章 事务处理与锁定 387
17.1 事务基础 387
17.1.1 事务简介 387
17.1.2 事务状态 388
17.1.3 事务停止执行的原因 389
17.1.4 事务的四大特性 390
17.2 事务处理 390
17.2.1 SQL Server的
事务模式 390
17.2.2 T-SQL语言的
事务处理 391
17.2.3 嵌套事务 393
17.2.4 事务储存点 394
17.3 并发控制 395
17.3.1 并发控制的三种问题 395
17.3.2 并发控制机制 396
17.3.3 事务的隔离性等级 397
17.4 数据锁定 398
17.4.1 锁定层级 399
17.4.2 锁定模式 399
17.4.3 锁定模式兼容性 400
17.5 死锁问题 401
17.5.1 死锁的基础 401
17.5.2 指定死锁的优先级 401
17.5.3 预防死锁的程序技巧 401
17.6 习题 402
第18章 SQL Server客户端
程序开发与LINQ 403
18.1 数据库程序设计基础 403
18.1.1 数据库程序设计的
程序语言 403
18.1.2 数据库程序设计的
操作 404
18.2 中间件与ADO.NET组件 404
18.2.1 微软的中间件 404
18.2.2 ADO.NET的基础 405
18.3 Visual Basic创建客户端
程序 407
18.3.1 DataSet对象与数据
绑定 407
18.3.2 事务处理 411
18.4 LINQ基础 416
18.5 使用LINQ to SQL 417
18.5.1 创建LINQ to SQL
项目 417
18.5.2 实现LINQ to SQL 419
18.6 LINQ查询字句 421
18.6.1 Select子句 422
18.6.2 Where子句 422
18.6.3 Order By子句 423
18.6.4 Join子句 423
18.7 习题 424
第19章 FILESTREAM、FileTable
与XML 425
19.1 FILESTREAM文件
数据流 425
19.1.1 FILESTREAM文件
数据流的基础 425
19.1.2 启用FILESTREAM文件
数据流的支持 426
19.1.3 创建FILESTREAM
文件组 427
19.1.4 创建FILESTREAM
数据表 428
19.1.5 访问FILESTREAM
数据 429
19.2 FileTable文件数据表 430
19.2.1 FileTable文件数据表的
基础 430
19.2.2 创建FileTable文件
数据表 431
19.2.3 在FileTable文件数据表
新增数据 433
19.3 使用XML数据类型 435
19.3.1 创建拥有XML字段的
数据表 436
19.3.2 XML对象的相关方法 438
19.4 XML查询语言 439
19.4.1 XPath语言 439
19.4.2 XQuery语言 445
19.4.3 XQuery基本语法 447
19.4.4 XQuery的FLWOR
表达式 448
19.4.5 XQuery的条件表达式 450
19.4.6 XQuery函数 451
19.5 XML-DML操作语言 452
19.5.1 插入XML元素 452
19.5.2 更新XML元素 453
19.5.3 删除XML元素 453
19.6 习题 454
第20章 SQL Server全文搜索 455
20.1 SQL Server全文搜索概述 455
20.1.1 全文搜索的基础 456
20.1.2 SQL Server整合全文
搜索架构 456
20.1.3 启用SQL Server的
全文搜索 457
20.2 全文目录的创建 458
20.2.1 使用Management Studio
创建全文目录 458
20.2.2 使用T-SQL命令创建
全文目录 460
20.3 创建全文索引 460
20.3.1 使用Management Studio
创建全文索引 460
20.3.2 使用T-SQL命令
创建全文索引 464
20.4 修改与删除全文目录与
索引 465
20.4.1 修改全文目录 466
20.4.2 修改与禁用全文索引 467
20.4.3 删除全文索引 468
20.4.4 删除全文目录 469
20.5 填充的使用 469
20.5.1 在SQL Server中
执行填充 469
20.5.2 创建填充计划 471
20.6 使用全文搜索 473
20.6.1 使用FREETEXT
执行搜索 473
20.6.2 使用CONTAINS
执行单词搜索 474
20.6.3 全文检索的符合
程度搜索 477
20.7 习题 479
