第一部分 SQL概述 2
第1章 简介 2
1.1 SQL语言 2
1.2 SQL的定位 3
1.3 SQL取得成功的因素 5
第2章 SQL快速入门 10
2.1 一个简单的数据库 10
2.2 检索数据 11
2.3 汇总数据 12
2.4 向数据库中添加数据 13
2.5 删除数据 13
2.6 更新数据库 13
2.7 保护数据 14
2.8 创建数据库 14
2.9 小结 15
第3章 SQL剖析 16
3.1 SQL与数据库管理的演化 16
3.2 SQL简史 16
3.3 SQL标准 19
3.4 SQL和网络 23
3.5 SQL的衍生 26
3.6 小结 31
第4章 关系数据库 32
4.1 早期的数据模型 32
4.2 关系数据模型 36
4.3 Codd关于关系数据库的12条原则 40
4.4 小结 42
第二部分 检索数据 44
第5章 SQL基础知识 44
5.1 语句 44
5.2 名称 49
5.3 数据类型 50
5.4 常量 53
5.5 表达式 55
5.6 内嵌函数 56
5.7 NULL值 57
5.8 小结 57
第6章 简单查询 59
6.1 SELECT语句 59
6.2 查询结果 61
6.3 简单查询 62
6.4 选择所有字段(SELECT*) 65
6.5 重复的记录(DISTINCT) 65
6.6 选择记录(WHERE) 66
6.7 搜索条件 67
6.8 排序查询结果(ORDER BY) 77
6.9 单表查询处理的原则 78
6.10 小结 82
第7章 多表查询(连接) 83
7.1 一个两表查询的范例 83
7.2 简单连接(等连接) 84
7.3 不等连接 93
7.4 SQL对多表查询考虑的因素 93
7.5 多表查询的性能 98
7.6 连接的结构 98
7.7 外连接 100
7.8 连接和SQL标准 106
7.9 小结 111
第8章 汇总查询 115
8.1 字段函数 115
8.2 分组查询(GROUP BY) 122
8.3 分组搜索条件(HAVING) 128
8.4 小结 131
第9章 子查询和查询表达式 132
9.1 使用子查询 132
9.2 子查询搜索条件 135
9.3 子查询和连接 143
9.4 嵌套的子查询 144
9.5 关联子查询 145
9.6 HAVING子句中的子查询 146
9.7 子查询小结 148
9.8 SQL2中的高级查询 149
9.9 小结 159
第三部分 更新数据 162
第10章 数据库更新 162
10.1 向数据库中添加数据 162
10.2 从数据库中删除数据 167
10.3 修改数据库中的数据 170
10.4 小结 173
第11章 数据完整性 174
11.1 什么是数据完整性 174
11.2 要求的数据 175
11.3 简单有效性检查 175
11.4 实体完整性 177
11.5 引用完整性 179
11.6 高级约束功能 188
11.7 商业规则 191
11.8 小结 194
第12章 事务处理 196
12.1 什么是事务 196
12.2 ANSI/ISO SQL事务模型 197
12.3 事务原理 201
12.4 事务和多用户处理 202
12.5 锁定 207
12.6 版本化 214
12.7 小结 217
第四部分 数据库结构第13章 创建数据库 220
13.1 数据定义语言 220
13.2 创建数据库 221
13.3 表定义 222
13.4 约束定义 232
13.5 别名和匿名(CREATE/DROP ALIAS) 233
13.6 索引(CREATE/DROP INDEX) 234
13.7 管理其他数据库对象 236
13.8 数据库结构 238
13.9 数据库结构与ANSI/ISO标准 242
13.10 小结 246
第14章 视图 247
14.1 什么是视图 247
14.2 创建视图(CREATE VIEW) 249
14.3 更新视图 254
14.4 删除视图(DROP VIEW) 258
14.5 物化视图 258
14.6 小结 260
第15章 SQL安全 261
15.1 SQL安全的概念 261
15.2 视图和SQL安全 267
15.3 授予权限(GRANT) 268
15.4 取消权限(REVOKE) 271
15.5 基于角色的安全 275
15.6 小结 276
第16章 系统目录 277
16.1 什么是系统目录 277
16.2 表信息 280
16.3 字段信息 282
16.4 视图信息 284
16.5 注释 285
16.6 关系信息 286
16.7 用户信息 287
16.8 权限信息 288
16.9 SQL信息模式 289
16.10 其他目录信息 293
16.11 小结 294
第五部分 使用SQL编程第17章 嵌入式SQL 296
17.1 程序化SQL技术 296
17.2 简单的嵌入式SQL语句 302
17.3 嵌入式SQL中的数据检索 314
17.4 基于游标的删除和更新 324
17.5 游标和事务处理 327
17.6 小结 327
第18章 动态SQL 329
18.1 静态SQL的局限性 329
18.2 动态SQL概念 330
18.3 动态语句执行(EXECUTE IMMEDIATE) 331
18.4 两步动态执行 333
18.5 动态查询 340
18.6 动态SQL方言 348
18.7 动态SQL和SQL标准 350
18.8 小结 358
第19章 SQL API 359
19.1 API概念 359
19.2 dblib API(SQL Server) 360
19.3 ODBC和SQL/CLI标准 379
19.4 ODBC API 400
19.5 Oracle调用接口(OCI) 405
19.6 Java数据库连接(JDBC) 409
19.7 小结 424
第六部分 SQL的今天和明天第20章 数据库处理和存储过程SQL 426
20.1 存储过程概念 426
20.2 基本示例 427
20.3 使用存储过程 428
20.4 存储过程的优点 445
20.5 存储过程的性能 445
20.6 系统定义的存储过程 446
20.7 外部存储过程 446
20.8 触发器 447
20.9 存储过程、函数、触发器和SQL标准 452
20.10 小结 460
第21章 SQL和数据仓库 461
21.1 数据仓库概念 461
21.2 数据仓库的数据库架构 464
21.3 数据仓库性能 468
21.4 小结 469
第22章 SQL和应用服务器 471
22.1 SQL和网站:早期实现 471
22.2 应用服务器和三层网站结构 472
22.3 从应用服务器访问数据库 473
22.4 应用服务器高速缓存 480
22.5 小结 482
第23章 SQL网络和分布式数据库 483
23.1 分布式数据管理的挑战 483
23.2 分布数据:实用方法 486
23.3 分布式数据库访问 497
23.4 两阶段提交协议 500
23.5 网络应用程序和数据库架构 502
23.6 小结 506
第24章 SQL与对象 507
24.1 面向对象数据库 507
24.2 对象关系数据库 509
24.3 抽象(结构化)数据类型 513
24.4 继承 516
24.5 组合、数组和集合 519
24.6 用户自定义数据类型 525
24.7 方法和存储过程 526
24.8 SQL标准中的对象支持 527
24.9 小结 528
第25章 SQL和XML 529
25.1 什么是XML 529
25.2 XML基础知识 530
25.3 XML对数据的处理 532
25.4 在数据库中使用XML 534
25.5 XML和元数据 542
25.6 XML和查询 548
25.7 XML数据库 551
25.8 小结 551
第26章 专用数据库 552
26.1 甚低时延和内存数据库 552
26.2 内存数据库实现 554
26.3 复杂事件处理和流数据库 555
26.4 嵌入式数据库 557
26.5 移动数据库 558
26.6 小结 559
第27章 SQL的未来 561
27.1 数据库市场的趋势 561
27.2 未来10年的SQL 565
27.3 小结 569
第七部分 附录 572
附录A 示例数据库 572
附录B 数据库供应商概述 576
附录C SQL语法参考 587