标题：Oracle SQL高级编程
出版信息
  Oracle SQL高级编程ISBN：9787115266149
定价：89.00元
作者：[美]Karen Morton　Kerry Osborne Robyn Sands　Riyaj Shamsudeen　Jared Still 著
译者：朱浩波
出版社：人民邮电出版社
出版时间：2011年11月
版次：1.1
开本：16开
装帧：平装
字数：756千字 
页数：502页
内容简介
作者以精炼、风趣的语言揭开了Oracle SQL高级编程的神秘面纱。书中所涵盖的内容涉及SQL核心、SQL执行、分析函数、联结、测试与质量保证等，并提供大量实用性建议，且总结出方方面面的“技巧”帮助读者在阅读过程中快速消化所看内容。
内容推荐
Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一，而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢？Karen Morton及其团队在本书中提供了专业的方案：先掌握语言特性，再学习Oracle为提升语言效率而加入的支持特性，进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验，与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在，内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧：　　掌握Oracle数据库中独有的SQL强大特征；　　读取并理解SQL执行计划；　　快速分析并改进表现欠佳的SQL；　　通过提示及配置文件等来控制执行计划；　　在程序中优化查询而无需改动代码。　　作为Oracle SQL经典著作之一，本书为SQL开发人员指明了前行的方向，赋予了他们不断开拓的动力。
目录
第1章 SQL核心　1 
1.1 SQL语言　1 
1.2 数据库的接口　2 
1.3 SQL*Plus 回顾　3 
1.3.1 连接到数据库　3 
1.3.2 配置SQL*Plus环境　4 
1.3.3 执行命令　6 
1.4 5 个核心的SQL语句　8 
1.5 SELECT语句　8 
1.5.1 FROM子句　9 
1.5.2 WHERE子句　11 
1.5.3 GROUP BY子句　11 
1.5.4 HAVING子句　12 
1.5.5 SELECT列表　12 
1.5.6 ORDERBY子句　13 
1.6 INSERT语句　14 
1.6.1 单表插入　14 
1.6.2 多表插入　15 
1.7 UPDATE语句　17 
1.8 DELETE语句　20 
1.9 MERGE语句　22 
1.10 小结　24 
第2章 SQL执行　25 
2.1 Oracle架构基础　25 
2.2 SGA-共享池　27 
2.3 库高速缓存　28 
2.4 完全相同的语句　29 
2.5 SGA-缓冲区缓存　32 
2.6 查询转换　35 
2.7 视图合并　36 
2.8 子查询解嵌套　39 
2.9 谓语前推　42 
2.10 使用物化视图进行查询重写　44 
2.11 确定执行计划　46 
2.12 执行计划并取得数据行　50 
2.13 SQL执行——总览　52 
2.14 小结　53 
第3章 访问和联结方法　55 
3.1 全扫描访问方法　55 
3.1.1 如何选择全扫描操作　56 
3.1.2 全扫描与舍弃　59 
3.1.3 全扫描与多块读取　60 
3.1.4 全扫描与高水位线　60 
3.2 索引扫描访问方法　65 
3.2.1 索引结构　66 
3.2.2 索引扫描类型　68 
3.2.3 索引唯一扫描　71 
3.2.4 索引范围扫描　72 
3.2.5 索引全扫描　74 
3.2.6 索引跳跃扫描　77 
3.2.7 索引快速全扫描　79 
3.3 联结方法　80 
3.3.1 嵌套循环联结　81 
3.3.2 排序-合并联结　83 
3.3.3 散列联结　84 
3.3.4 笛卡儿联结　87 
3.3.5 外联结　88 
3.4 小结　94 
第4章 SQL是关于集合的　95 
4.1 以面向集合的思维方式来思考　95 
4.1.1 从面向过程转变为基于集合的思维方式　96 
4.1.2 面向过程vs.基于集合的思维方式：一个例子　100 
4.2 集合运算　102 
4.2.1 UNION和UNION ALL　103 
4.2.2 MINUS　106 
4.2.3 INTERSECT　107 
4.3 集合与空值　108 
4.3.1 空值与非直观结果　108 
4.3.2 集合运算中的空值行为　110 
4.3.3 空值与GROUP BY和ORDER BY　112 
4.3.4 空值与聚合函数　114 
4.4 小结　114 
第5章 关于问题　116 
5.1 问出好的问题　116 
5.2 提问的目的　117 
5.3 问题的种类　117 
5.4 关于问题的问题　119 
5.5 关于数据的问题　121 
5.6 建立逻辑表达式　126 
5.7 小结　136 
第6章 SQL执行计划　137 
6.1 解释计划　137 
6.1.1 使用解释计划　137 
6.1.2 理解解释计划可能达不到目的的方式　143 
6.1.3 阅读计划　146 
6.2 执行计划　148 
6.2.1 查看最近生成的SQL语句　149 
6.2.2 查看相关执行计划　149 
6.2.3 收集执行计划统计信息　151 
6.2.4 标识SQL语句以便以后取回计划　153 
6.2.5 深入理解DBMS_XPLAN的细节　156 
6.2.6 使用计划信息来解决问题　161 
6.3 小结　169 
第7章 高级分组　170 
7.1 基本的GROUP BY用法　171 
7.2 HAVING子句　174 
7.3 GROUP BY的“新”功能　175 
7.4 GROUP BY的CUBE扩展　175 
7.5 CUBE的实际应用　179 
7.6 通过GROUPING()函数排除空值　185 
7.7 用GROUPING()来扩展报告　186 
7.8 使用GROUPING_ID()来扩展报告　187 
7.9 GROUPING SETS与ROLLUP()　191 
7.10 GROUP BY局限性　193 
7.11 小结　196 
第8章 分析函数　197 
8.1 示例数据　197 
8.2 分析函数剖析　198 
8.3 函数列表　199 
8.4 聚合函数　200 
8.4.1 跨越整个分区的聚合函数　201 
8.4.2 细粒度窗口声明　201 
8.4.3 默认窗口声明　202 
8.5 Lead和Lag　202 
8.5.1 语法和排序　202 
8.5.2 例1：从前一行中返回一个值　203 
8.5.3 理解数据行的位移　204 
8.5.4 例2：从下一行中返回一个值　204 
8.6 First_value和Last_value　205 
8.6.1 例子：使用First_value来计算最大值　206 
8.6.2 例子：使用Last_value来计算最小值　207 
8.7 其他分析函数　207 
8.7.1 Nth_value(11gR2)　207 
8.7.2 Rank　209 
8.7.3 Dense_rank　210 
8.7.4 Row_number　211 
8.7.5 Ratio_to_report　211 
8.7.6 Percent_rank　212 
8.7.7 Percentile_cont　213 
8.7.8 Percentile_disc　215 
8.7.9 NTILE　215 
8.7.10 Stddev　216 
8.7.11 Listagg　217 
8.8 性能调优　218 
8.8.1 执行计划　218 
8.8.2 谓语　219 
8.8.3 索引　220 
8.9 高级话题　221 
8.9.1 动态SQL　221 
8.9.2 嵌套分析函数　222 
8.9.3 并行　223 
8.9.4 PGA大小　224 
8.10 组织行为　224 
8.11 小结　224 
第9章 Model子句　225 
9.1 电子表格　225 
9.2 通过Model子句进行跨行引用　226 
9.2.1 示例数据　226 
9.2.2 剖析Model子句　227 
9.2.3 规则　228 
9.3 位置和符号引用　229 
9.3.1 位置标记　229 
9.3.2 符号标记　230 
9.3.3 FOR循环　231 
9.4 返回更新后的行　232 
9.5 求解顺序　233 
9.5.1 行求解顺序　233 
9.5.2 规则求解顺序　235 
9.6 聚合　237 
9.7 迭代　237 
9.7.1 一个例子　238 
9.7.2 PRESENTV与空值　239 
9.8 查找表　240 
9.9 空值　242 
9.10 使用Model子句进行性能调优　243 
9.10.1 执行计划　243 
9.10.2 谓语前推　246 
9.10.3 物化视图　247 
9.10.4 并行　249 
9.10.5 Model子句执行中的分区　250 
9.10.6 索引　251 
9.11 子查询因子化　252 
9.12 小结　253 
第10章 子查询因子化　254 
10.1 标准用法　254 
10.2 SQL优化　257 
10.2.1 测试执行计划　257 
10.2.2 跨多个执行的测试　260 
10.2.3 测试查询改变的影响　263 
10.2.4 寻找其他优化机会　266 
10.2.5 将子查询因子化应用到PL/SQL中　270 
10.3 递归子查询　273 
10.3.1 一个CONNECT BY的例子　274 
10.3.2 使用RSF的例子　275 
10.3.3 RSF的限制条件　276 
10.3.4 与CONNECT BY的不同点　276 
10.4 复制CONNECT BY的功能　277 
10.4.1 LEVEL伪列　278 
10.4.2 SYS_CONNECT_BY_PATH函数　279 
10.4.3 CONNECT_BY_ROOT运算符　281 
10.4.4 CONNECT_BY_ISCYCLE伪列和NOCYCLE参数　284 
10.4.5 CONNECT_BY_ISLEAF伪列　287 
10.5 小结　291 
第11章 半联结和反联结　292 
11.1 半联结　292 
11.2 半联结执行计划　300 
11.3 控制半联结执行计划　305 
11.3.1 使用提示控制半联结执行计划　305 
11.3.2 在实例级控制半联结执行计划　308 
11.4 半联结限制条件　310 
11.5 半联结必要条件　312 
11.6 反联结　312 
11.7 反联结执行计划　317 
11.8 控制反联结执行计划　326 
11.8.1 使用提示控制反联结执行计划　326 
11.8.2 在实例级控制反联结执行计划　327 
11.9 反联结限制条件　330 
11.10 反联结必要条件　333 
11.11 小结　333 
第12章 索引　334 
12.1 理解索引　335 
12.1.1 什么时候使用索引　335 
12.1.2 列的选择　337 
12.1.3 空值问题　338 
12.2 索引结构类型　339 
12.2.1 B-树索引　339 
12.2.2 位图索引　340 
12.2.3 索引组织表　341 
12.3 分区索引　343 
12.3.1 局部索引　343 
12.3.2 全局索引　345 
12.3.3 散列分区与范围分区　346 
12.4 与应用特点相匹配的解决方案　348 
12.4.1 压缩索引　348 
12.4.2 基于函数的索引　350 
12.4.3 反转键索引　353 
12.4.4 降序索引　354 
12.5 管理问题的解决方案　355 
12.5.1 不可见索引　355 
12.5.2 虚拟索引　356 
12.5.3 位图联结索引　357 
12.6 小结　359 
第13章 SELECT以外的内容　360 
13.1 INSERT　360 
13.1.1 直接路径插入　360 
13.1.2 多表插入　363 
13.1.3 条件插入　364 
13.1.4 DML错误日志　364 
13.2 UPDATE　371 
13.3 DELETE　376 
13.4 MERGE　380 
13.4.1 语法和用法　380 
13.4.2 性能比较　383 
13.5 小结　385 
第14章 事务处理　386 
14.1 什么是事务　386 
14.2 事务的ACID属性　387 
14.3 事务隔离级别　388 
14.4 多版本读一致性　390 
14.5 事务控制语句　391 
14.5.1 Commit(提交)　391 
14.5.2 Savepoint(保存点)　391 
14.5.3 Rollback(回滚)　391 
14.5.4 Set Transaction(设置事务)　391 
14.5.5 Set Constraints(设置约束)　392 
14.6 将运算分组为事务　392 
14.7 订单录入模式　393 
14.8 活动事务　399 
14.9 使用保存点　400 
14.10 序列化事务　403 
14.11 隔离事务　406 
14.12 自治事务　409 
14.13 小结　413 
第15章 测试与质量保证　415 
15.1 测试用例　416 
15.2 测试方法　417 
15.3 单元测试　418 
15.4 回归测试　422 
15.5 模式修改　422 
15.6 重复单元测试　425 
15.7 执行计划比较　426 
15.8 性能测量　432 
15.9 在代码中加入性能测量　432 
15.10 性能测试　436 
15.11 破坏性测试　437 
15.12 通过性能测量进行系统检修　439 
15.13 小结　442 
第16章 计划稳定性与控制　443 
16.1 计划不稳定性：理解这个问题　443 
16.1.1 统计信息的变化　444 
16.1.2 运行环境的改变　446 
16.1.3 SQL语句的改变　447 
16.1.4 绑定变量窥视　448 
16.2 识别执行计划的不稳定性　450 
16.2.1 抓取当前所运行查询的数据　451 
16.2.2 查看一条语句的性能历史　452 
16.2.3 按照执行计划聚合统计信息　454 
16.2.4 寻找执行计划的统计方差　454 
16.2.5 在一个时间点附近检查偏差　456 
16.3 执行计划控制：解决问题　458 
16.3.1 调整查询结构　459 
16.3.2 适当使用常量　459 
16.3.3 给优化器一些提示　459 
16.4 执行计划控制：不能直接访问代码　466 
16.4.1 选项1：改变统计信息　467 
16.4.2 选项2：改变数据库参数　469 
16.4.3 选项3：增加或移除访问路径　469 
16.4.4 选项4：应用基于提示的执行计划控制机制　470 
16.4.5 大纲　470 
16.4.6 SQL概要文件　481 
16.4.7 SQL执行计划基线　496 
16.4.8 基于提示的执行计划控制机制总结　502 
16.5 结论　502