第一版前言 1
第二版前言 6
第三版前言 8
第1章 做好准备 9
1.1 对于关系模型的严重误解 10
1.2 有关术语的一些说明 11
1.3 原理而非产品 13
1.4 原始模型回顾 14
1.4.1 结构特征 14
1.4.2 完整性特征 17
1.4.3 操作特征 18
1.4.4 示例 20
1.5 模型与实现 22
1.6 关系的性质 26
1.7 基关系与导出关系 30
1.8 关系与关系变量 32
1.9 值与变量 34
1.10 小结 35
1.11 练习题 37
1.12 练习题答案 38
第2章 类型和域 47
2.1 类型和关系 47
2.2 相等性比较 49
2.3 数据值的原子性 55
2.4 类型是什么? 58
2.5 标量类型与非标量类型 62
2.6 SQL中的标量类型 65
2.7 SQL中的类型检查和隐式类型转换 67
2.8 SQL中的字符序 69
2.9 SQL中的行类型和表类型 71
2.10 小结 73
2.11 练习题 74
2.12 练习题答案 76
第3章 元组、关系、行、表 85
3.1 元组是什么 85
3.2 SQL中的行 90
3.3 关系是什么 93
3.4 关系及其主体 94
3.5 关系是n维的 96
3.6 关系比较 96
3.7 TABLE_DUM与TABLE_DEE 98
3.8 SQL中的表 99
3.9 SQL中的列命名 101
3.10 小结 104
3.11 练习题 104
3.12 练习题答案 106
第4章 不要重复,不要null 113
4.1 重复有什么问题? 113
4.2 重复:深入讨论 118
4.3 在SQL中避免重复 120
4.4 NULL有什么问题? 122
4.5 在SQL中避免NULL 126
4.6 有关外连接的说明 128
4.7 小结 129
4.8 练习题 130
4.9 练习题答案 135
第5章 基关系变量和基表 143
5.1 更新是集合级别的 145
5.1.1 触发操作 146
5.1.2 约束检查 146
5.1.3 最后一点说明 147
5.2 关系赋值 147
5.2.1 D_INSERT和I_DELETE 148
5.2.2 SQL中的表赋值 150
5.2.3 赋值原理 151
5.3 关于候选键的更多内容 152
5.4 关于外键的更多内容 155
5.5 关系变量和谓词 159
5.6 关系和类型 161
5.7 练习题 164
5.8 练习题答案 166
第6章 SQL和关系代数Ⅰ:原始运算符 175
6.1 预备知识 175
6.2 更多有关闭包的内容 179
6.3 限制 182
6.4 投影 183
6.5 连接 184
6.6 并、交和差 189
6.6.1 并 189
6.6.2 交 192
6.6.3 差 192
6.7 哪些运算符是基本的运算符? 193
6.8 逐步形成表达式 193
6.9 关系表达式到底表示什么? 196
6.10 计算表表达式 197
6.11 表达式变换 198
6.12 属性名依赖 202
6.13 练习题 204
6.14 练习题答案 207
第7章 SQL和关系代数Ⅱ:附加运算符 217
7.1 排他并 218
7.2 半连接和半差 219
7.3 扩展 221
7.4 映像关系 223
7.5 除 227
7.6 聚集运算符 229
7.7 空实参 234
7.8 再议映像关系 235
7.9 汇总 237
7.10 再议汇总 243
7.11 分组、解组和关系值属性 246
7.11.1 有RVA则无需外连接 248
7.11.2 基关系变量中的RVA 250
7.11.3 关系比较中RVA不可或缺 251
7.11.4 聚集运算符 252
7.12 “WHAT IF”查询 252
7.13 关于递归的说明 254
7.14 ORDER BY是怎么回事 259
7.15 练习题 260
7.16 练习题答案 264
第8章 SQL与约束 279
8.1 类型约束 280
8.1.1 选择运算符和THE_运算符 281
8.1.2 更多关于类型约束的讨论 283
8.2 SQL中的类型约束 284
8.3 数据库约束 285
8.4 SQL中的数据库约束 291
8.5 事务 293
8.6 为什么说数据库约束必须立即检查 294
8.7 不是有些检查必须延迟进行吗? 297
8.8 约束与谓词 299
8.9 其他问题 302
8.10 练习题 304
8.11 练习题答案 308
第9章 SQL与视图 319
9.1 视图是关系变量 320
9.1.1 互换性原理 321
9.1.2 关系常量 323
9.2 视图和谓词 324
9.3 检索运算 325
9.4 视图和约束 327
9.5 更新运算 332
9.5.1 CHECK选项 336
9.5.2 关于SQL的更多内容 338
9.5.3 S JOIN P的示例 340
9.6 视图的作用 345
9.7 视图和快照 346
9.8 练习题 348
9.9 练习题答案 350
第10章 SQL与逻辑 357
10.1 为什么需要逻辑 358
10.2 简单命题和复合命题 360
10.2.1 联结词 361
10.2.2 关于交换性的说明 364
10.2.3 逆否命题 364
10.3 简单谓词和复合谓词 366
10.4 量词化 368
10.5 关系演算 373
10.5.1 关于区间变元的更多内容 376
10.5.2 更多样例查询 377
10.5.3 样例约束 379
10.6 关于量词化的更多内容 381
10.6.1 不必同时使用两个量词 381
10.6.2 空区间 383
10.6.3 定义EXISTS和FORALL 384
10.6.4 其他量词类型 385
10.7 一些等价关系 389
10.7.1 关系完备性 391
10.7.2 一致性的重要性 392
10.8 小结 393
10.9 练习题 394
10.10 练习题答案 396
第11章 使用逻辑表述SQL表达式 405
11.1 一些变换法则 406
11.2 示例1:逻辑蕴涵 409
11.3 示例2:全称量词化 409
11.4 示例3:蕴涵和全称量词化 411
11.5 示例4:相关子查询 413
11.6 示例5:命名子表达式 415
11.7 示例6:关于命名子表达式的更多内容 418
11.8 示例7:处理模糊性 419
11.9 示例8:使用COUNT 422
11.10 示例9:连接查询 423
11.11 示例10:唯一量词化 423
11.12 示例11:ALL或ANY比较 426
11.13 示例12:GROUY BY和HAVING 430
11.14 练习题 432
11.15 练习题答案 433
第12章 关于SQL的其他主题 437
12.1 SELECT* 438
12.2 显式表 438
12.3 名称限定 439
12.4 区间变元 440
12.5 子查询 443
12.6 “可能非确定性”表达式 446
12.7 空集合 447
12.8 简化的BNF语法 448
12.8.1 表表达式 449
12.8.2 布尔表达式 451
12.9 练习题 452
12.10 练习题答案 454
附录A 关系模型 457
附录B SQL背离关系模型之处 481
附录C 处理信息丢失的关系方法 485
附录D TutorialD语法 503
附录E 本书建议汇总 507
附录F NoSQL与关系理论 511
附录G 深入阅读建议 523