第一图书网

Oracle SQL高级编程

[美] Karen Morton,Kerry Osborne,Robyn Sands,Riyaj Shamsudeen,Jared Still 人民邮电出版社
出版时间:

2011-11  

出版社:

人民邮电出版社  

作者:

[美] Karen Morton,Kerry Osborne,Robyn Sands,Riyaj Shamsudeen,Jared Still  

页数:

502  

译者:

朱浩波  

Tag标签:

无  

内容概要

  Oracle
数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen
Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle
SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:
  掌握Oracle数据库中独有的SQL强大特征;
  读取并理解SQL执行计划;
  快速分析并改进表现欠佳的SQL;
  通过提示及配置文件等来控制执行计划;
  在程序中优化查询而无需改动代码。
作为Oracle
SQL经典著作之一,本书为SQL开发人员指明了前行的方向,赋予了他们不断开拓的动力。

作者简介

  KAREN MORTON
研究人员、教育家及顾问,Fidelity信息服务公司的资深数据库管理员和性能调优专家。她从20世纪90年代初就开始使用Oracle,从事
Oracle的教学工作也已经超过10年的时间。她是Oracle
ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还包括
Expert Oracle Practices和Beginning Oracle
SQL,博客主页是karenmorton.blogspot.com。
  KERRY OSBORNE
专注于Oracle咨询的Enkitec公司的创始人之一。从1982年开始使用Oracle(第2版)。他当过开发人员,也做过DBA,目前是
Oracle ACE总监和OakTable成员。最近几年,他专注于研究Oracle内部原理以及解决性能问题。他的博客主页是
kerryosborne.oracle-guy.com。
  ROBYN SANDS
思科公司的软件工程师,为思科的客户设计开发嵌入式Oracle数据库产品。从1996年开始使用Oracle,在应用开发、大型系统实现以及性能评估方面具有丰富的经验。她是OakTable的成员,同时是Expert
Oracle Practices (2010年 Apress出版)一书的合著者。
  RIYAJ SHAMSUDEEN
专注于性能/数据恢复/电子商务的咨询公司OraInternals的首席数据库管理员和董事长。有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle
ACE。
  JARED STILL
从1994年就开始使用Oracle。他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。

书籍目录

第1 章 SQL 核心  
1.1 SQL 语言  
1.2 数据库的接口  
1.3 SQL*Plus 回顾  
1.3.1 连接到数据库  
1.3.2 配置SQL*Plus 环境  
1.3.3 执行命令  
1.4 5 个核心的SQL 语句  
1.5 SELECT 语句  
1.5.1 FROM 子句  
1.5.2 WHERE 子句  
1.5.3 GROUP BY 子句  
1.5.4 HAVING 子句  
1.5.5 SELECT 列表  
1.5.6 ORDER BY 子句  
1.6 INSERT 语句  
1.6.1 单表插入  
1.6.2 多表插入  
1.7 UPDATE 语句  
1.8 DELETE 语句  
1.9 MERGE 语句  
1.10 小结  
第2 章 SQL 执行  
2.1 Oracle 架构基础  
2.2 SGA-共享池  
2.3 库高速缓存  
2.4 完全相同的语句  
2.5 SGA-缓冲区缓存  
2.6 查询转换  
2.7 视图合并  
2.8 子查询解嵌套  
2.9 谓语前推  
2.10 使用物化视图进行查询重写  
2.11 确定执行计划  
2.12 执行计划并取得数据行  
2.13 SQL 执行——总览  
2.14 小结  
第3 章 访问和联结方法  
3.1 全扫描访问方法  
3.1.1 如何选择全扫描操作  
3.1.2 全扫描与舍弃  
3.1.3 全扫描与多块读取  
3.1.4 全扫描与高水位线  
3.2 索引扫描访问方法  
3.2.1 索引结构  
3.2.2 索引扫描类型  
3.2.3 索引唯一扫描  
3.2.4 索引范围扫描  
3.2.5 索引全扫描  
3.2.6 索引跳跃扫描  
3.2.7 索引快速全扫描  
3.3 联结方法  
3.3.1 嵌套循环联结  
3.3.2 排序—合并联结  
3.3.3 散列联结  
3.3.4 笛卡儿联结  
3.3.5 外联结  
3.4 小结  
第4 章 SQL 是关于集合的  
4.1 以面向集合的思维方式来思考  
4.1.1 从面向过程转变为基于集合的思维方式  
4.1.2 面向过程vs.基于集合的思维方式:一个例子  
4.2 集合运算  
4.2.1 UNION 和UNION ALL  
4.2.2 MINUS  
4.2.3 INTERSECT   
4.3 集合与空值  
4.3.1 空值与非直观结果  
4.3.2 集合运算中的空值行为  
4.3.3 空值与GROUP BY 和ORDER BY   
4.3.4 空值与聚合函数  
4.4 小结  
第5 章 关于问题  
5.1 问出好的问题  
5.2 提问的目的  
5.3 问题的种类  
5.4 关于问题的问题  
5.5 关于数据的问题  
5.6 建立逻辑表达式  
5.7 小结  
第6 章 SQL 执行计划  
6.1 解释计划  
6.1.1 使用解释计划  
6.1.2 理解解释计划可能达不到目的的方式  
6.1.3 阅读计划  
6.2 执行计划  
6.2.1 查看最近生成的SQL 语句  
6.2.2 查看相关执行计划  
6.2.3 收集执行计划统计信息  
6.2.4 标识SQL 语句以便以后取回计划  
6.2.5 深入理解DBMS_XPLAN 的细节  
6.2.6 使用计划信息来解决问题  
6.3 小结  
第7 章 高级分组  
7.1 基本的GROUP BY 用法  
7.2 HAVING 子句  
7.3 GROUP BY 的“新”功能  
7.4 GROUP BY 的CUBE 扩展  
7.5 CUBE 的实际应用  
7.6 通过GROUPING()函数排除空值  
7.7 用GROUPING()来扩展报告  
7.8 使用GROUPING_ID()来扩展报告  
7.9 GROUPING SETS 与ROLLUP()   
7.10 GROUP BY 局限性  
7.11 小结  
第8 章 分析函数  
8.1 示例数据  
8.2 分析函数剖析  
8.3 函数列表  
8.4 聚合函数  
8.4.1 跨越整个分区的聚合函数  
8.4.2 细粒度窗口声明  
8.4.3 默认窗口声明  
8.5 Lead 和Lag   
8.5.1 语法和排序  
8.5.2 例1:从前一行中返回一个值  
8.5.3 理解数据行的位移  
8.5.4 例2:从下一行中返回一个值  
8.6 First_value 和Last_value   
8.6.1 例子:使用First_value 来计算最大值  
8.6.2 例子:使用Last_value 来计算最小值  
8.7 其他分析函数  
8.7.1 Nth_value (11gR2)   
8.7.2 Rank   
8.7.3 Dense_rank   
8.7.4 Row_number   
8.7.5 Ratio_to_report   
8.7.6 Percent_rank   
8.7.7 Percentile_cont   
8.7.8 Percentile_disc   
8.7.9 NTILE  
8.7.10 Stddev   
8.7.11 Listagg   
8.8 性能调优  
8.8.1 执行计划  
8.8.2 谓语  
8.8.3 索引  
8.9 高级话题  
8.9.1 动态SQL   
8.9.2 嵌套分析函数  
8.9.3 并行  
8.9.4 PGA 大小  
8.10 组织行为  
8.11 小结  
第9 章 Model 子句  
9.1 电子表格  
9.2 通过Model 子句进行跨行引用  
9.2.1 示例数据  
9.2.2 剖析Model 子句  
9.2.3 规则  
9.3 位置和符号引用  
9.3.1 位置标记  
9.3.2 符号标记  
9.3.3 FOR 循环  
9.4 返回更新后的行  
9.5 求解顺序  
9.5.1 行求解顺序  
9.5.2 规则求解顺序  
9.6 聚合  
9.7 迭代  
9.7.1 一个例子  
9.7.2 PRESENTV与空值  
9.8 查找表  
9.9 空值  
9.10 使用Model子句进行性能调优  
9.10.1 执行计划  
9.10.2 谓语前推  
9.10.3 物化视图  
9.10.4 并行  
9.10.5 Model 子句执行中的分区  
9.10.6 索引  
9.11 子查询因子化  
9.12 小结  
第10 章 子查询因子化  
10.1 标准用法  
10.2 SQL 优化  
10.2.1 测试执行计划  
10.2.2 跨多个执行的测试  
10.2.3 测试查询改变的影响  
10.2.4 寻找其他优化机会  
10.2.5 将子查询因子化应用到PL/SQL 中  
10.3 递归子查询  
10.3.1 一个CONNECT BY 的例子  
10.3.2 使用RSF 的例子  
10.3.3 RSF 的限制条件  
10.3.4 与CONNECT BY 的不同点  
10.4 复制CONNECT BY 的功能  
10.4.1 LEVEL 伪列  
10.4.2 SYS_CONNECT_BY_PATH 函数  
10.4.3 CONNECT_BY_ROOT 运算符  
10.4.4 CONNECT_BY_ISCYCLE伪列和NOCYCLE 参数  
10.4.5 CONNECT_BY_ISLEAF 伪列  
10.5 小结  
第11 章 半联结和反联结  
11.1 半联结  
11.2 半联结执行计划  
11.3 控制半联结执行计划  
11.3.1 使用提示控制半联结执行计划  
11.3.2 在实例级控制半联结执行计划  
11.4 半联结限制条件  
11.5 半联结必要条件  
11.6 反联结  
11.7 反联结执行计划  
11.8 控制反联结执行计划  
11.8.1 使用提示控制反联结执行计划  
11.8.2 在实例级控制反联结执行计划  
11.9 反联结限制条件  
11.10 反联结必要条件  
11.11 小结  
第12 章 索引  
12.1 理解索引  
12.1.1 什么时候使用索引  
12.1.2 列的选择  
12.1.3 空值问题  
12.2 索引结构类型  
12.2.1 B-树索引  
12.2.2 位图索引  
12.2.3 索引组织表  
12.3 分区索引  
12.3.1 局部索引  
12.3.2 全局索引  
12.3.3 散列分区与范围分区  
12.4 与应用特点相匹配的解决方案  
12.4.1 压缩索引  
12.4.2 基于函数的索引  
12.4.3 反转键索引  
12.4.4 降序索引  
12.5 管理问题的解决方案  
12.5.1 不可见索引  
12.5.2 虚拟索引  
12.5.3 位图联结索引  
12.6 小结  
第13 章 SELECT 以外的内容  
13.1 INSERT  
13.1.1 直接路径插入  
13.1.2 多表插入  
13.1.3 条件插入  
13.1.4 DML 错误日志  
13.2 UPDATE  
13.3 DELETE  
13.4 MERGE   
13.4.1 语法和用法  
13.4.2 性能比较  
13.5 小结  
第14 章 事务处理  
14.1 什么是事务  
14.2 事务的ACID 属性  
14.3 事务隔离级别  
14.4 多版本读一致性  
14.5 事务控制语句  
14.5.1 Commit(提交)  
14.5.2 Savepoint(保存点)   
14.5.3 Rollback(回滚)   
14.5.4 Set Transaction(设置事务)   
14.5.5 Set Constraints(设置约束)   
14.6 将运算分组为事务  
14.7 订单录入模式  
14.8 活动事务  
14.9 使用保存点  
14.10 序列化事务  
14.11 隔离事务  
14.12 自治事务  
14.13 小结  
第15 章 测试与质量保证  
15.1 测试用例  
15.2 测试方法  
15.3 单元测试  
15.4 回归测试  
15.5 模式修改  
15.6 重复单元测试  
15.7 执行计划比较  
15.8 性能测量  
15.9 在代码中加入性能测量  
15.10 性能测试  
15.11 破坏性测试  
15.12 通过性能测量进行系统检修  
15.13 小结  
第16 章 计划稳定性与控制  
16.1 计划不稳定性:理解这个问题  
16.1.1 统计信息的变化  
16.1.2 运行环境的改变  
16.1.3 SQL 语句的改变  
16.1.4 绑定变量窥视  
16.2 识别执行计划的不稳定性  
16.2.1 抓取当前所运行查询的数据  
16.2.2 查看一条语句的性能历史  
16.2.3 按照执行计划聚合统计信息  
16.2.4 寻找执行计划的统计方差  
16.2.5 在一个时间点附近检查偏差  
16.3 执行计划控制:解决问题  
16.3.1 调整查询结构  
16.3.2 适当使用常量  
16.3.3 给优化器一些提示  
16.4 执行计划控制:不能直接访问代码  
16.4.1 选项1:改变统计信息  
16.4.2 选项2:改变数据库参数  
16.4.3 选项3:增加或移除访问路径  
16.4.4 选项4:应用基于提示的执行计划控制机制  
16.4.5 大纲  
16.4.6 SQL 概要文件  
16.4.7 SQL 执行计划基线  
16.4.8 基于提示的执行计划控制机制总结  
16.5 结论 

章节摘录

版权页:插图:SQL的目的就是简单地提供一个到数据库的接口,在本书指的是Oracle数据库。每一条SQL语句对于数据库来说就是一条命令或指令。SQL与其他编程语言(如C或Java)的区别就在于它是要处理数据集合而不是一行一行的数据。语言本身也不需要你提供如何导航到数据的指令——这是在后台透明地进行的。但你将在后面的章节中看到,如果想在Oracle中写出高效的SQL语句,了解数据及其在数据库中的存储方式与存储位置是很重要的。由于不同的供应商(例如甲骨文、IBM和微软)实现SQL核心功能的机制相差无几,所以基于某一种数据库所学的技巧同样可以应用到其他类型的数据库上。你基本上可以利用同样的SQL语句来进行数据的查询、插入、更新和删除,以及创建、修改和删除对象,而不必管数据库的供应商是哪家。尽管SQL是各种关系型数据库管理系统的标准语言,但实际上它并不一定是关系型的。在本书后面我将就这一点稍作扩展。如果想要了解更多的细节,我推荐大家阅读C.J.Date的SQL and Relational Theory一书。需要铭记于心的一点是SQL语言并不总是严格遵守关系模型的——它根本就没有实现关系模型的某些要素,同时还不恰当地实现了一些要素。事实上,既然SQL是基于关系模型的,那么要想写出尽可能正确高效的SQL语句,你不仅必须要理解SQL语言,还要理解关系模型。

媒体关注与评论

本书作者全部是OakTable的成员,且具有15-29年丰富的Oracle开发经验。在研究一些被其他专门讨论Oracle SQL语言的参考书直接忽略的问题时,这种对Oracle数据库的长期钻研无疑是一个巨大的优势。  ——亚马逊读者评论


编辑推荐

《Oracle SQL高级编程》:资深Oracle专家力作,OakTable团队推荐,全面、独到、翔实,题材丰富,Oracle开发人员和DBA必备。

图书封面

图书标签Tags

广告

下载页面


Oracle SQL高级编程 PDF格式下载



现在刚看完第二章,对oracle 执行sql机制讲解的很清晰,能从根本解释为什么这样写是比较好的,比如为什么要让sql语句尽量可共享就能提高共享池的使用效率,锁存器 ,查询转换,视图合并等…… 目前就看了这么多,个人感觉这本书很经典,适合初学或者高手使用。


本书是对oracle的SQL语言详细介绍,不能浅易select语句还是深入分析函数的介绍,一一详细说明,好书。


作为ORACLE SQL生手,能看懂大部分内容。有些内容对我来说有点困难,但相信仔细研读之后应该能够掌握。


Oracle SQL高级编程


可作为Oracle SQl的一个提升。。


内容翔实、深刻。是学习Oracle的必读书籍,无论是刚入门的还是有工作经验的高手都应该买一本放在案头。


最好的Oracle DBA手册,不会有比这本更好的了,细致全面,有深度


太深入了,主要讲oracle的内核部分,执行语句的效率什么的。个人感觉不太适合初学者。


资深ORACLE数据员的必备用品。


帮同事购买,同事最近想学习oracle


书很不错,值得想学习ORACLE的朋友购买。


学习Oracle必读的书


对用了几年oracle的人来说,适合总结进阶


努力钻研。。好书。。喜欢Oracle


sql语句详细解读。作为dba或是数据库开发人员,了解sql语句的执行过程是水平的一大升华。值得细读的好书。推荐给新老dba。


数据库SQL的原理写了还行,看看有所帮助.


工作中要用到统计这一块,以前只是很粗浅地学了一些sql语句,写出来的东西又长又臭,执行效率太低了,这本书的对sql的编程技巧介绍得很详尽,对照各种demo,把原来的sql进行优化


这本书比较深入,适合进阶的sql学习!例子很丰富,比较生动!执行计划也都贴出来了,也你能方便学习看执行计划!~


适合SQL开发人员阅读


值得一读,帮助理解SQL执行的过程


书很不错,比较全面的介绍了一些高级SQL应用。翻译的还行,个别语句拗口


深入浅出,学习SQL的必备专业书籍。


sql优化讲的挺好的一本书。。。绝对值得一读。


这本书sql的内容挺丰富


内容有深度,适合有一定SQL基础的人来学习


sql学习的进阶学习,适合一定基础的人看!


正需要,买来看看,对提高sql编写有帮助


sql提高的必读之作,很受用,多学习有助提高。


如果你想深入地了解SQL编程,了解他们的运行等等,这本绝对是值得入手的好书


适合数据库开发人员


还不错,强化一下数据库学习


大体上看了下。对于我来说,毕业快两年了,有进两年没有接触数据库。这次重拾大学所学,看这本书,在一定程度上,触近知识的回顾。挺好的,有做数据库的同仁,可以好好看看。


tk的书有两本,比较适合偏DBA方向看;现在这边,侧重于开发方向。
偏开发的书,自己动手做测试方便些;偏DBA的,环境比较重要。
总的来说,这本书还是很不错的


书的质量不粗,纸质摸起来很爽啊,呵呵 。 书的内容需要花时间去好好的研究,有好多内容都是其它书都没有介绍的,有的都是第一次见到;能把这本书的知识点都掌握了,会对自己有一个质的提升,呵呵...


内容挺全面,适合初学者入门使用,也可以作为工具参考书。


适合高阶研读,对DBA的用处还是有的。


非常详细,有深度,是开发必备书


我喜欢买外国人写的书
不是因为我不爱国,国内那些什么砖家叫兽啊
都会给你来一段软件安装,书本内容都是东拼西凑来的
这本书,实在!


内容丰富,详细
纸质还行
实例多,适合学习只用


物流很快,货到付款,书纸张质量不错,内容还在学习中


这是一本真正有意义的书,没有花哨,没有模棱两可的言辞,字里行间到处流露智慧。它不是一本工具书,不适合于放在书架上陈列,只有当你遇到问题时才去查阅,它绝对不是。它需要你每天去阅读,仔细品味,做足功课才能吃透,每句话都有可能意义重大,绝无浪费。所以对于一本502页的非工具书而言,看起来显然有点累,不过你会发现这一切对于它带给你的惊喜来说简直无足挂齿。当你完全吃透它,将它的智慧融入到你的思维里时,可以说,你将会像明星一样闪耀。


不错哈,正在学习,典型的老外写的书,比较详细易懂.


非常适合晋级使用


学习,正在用。看了前几章,暂时作为工具书用,后面抽时间细看。


刚拿到外观不错,挺厚实对,纸张不错,内容先慢慢研读,以后再作评论。


适合有经验的,不适合初学者,书的质量差了些!


很多细节讲得很清楚,要全部理解的花些时间,毕竟是pro级别的!
还得多看看~


已经收到了商品,非常满意,书中知识点介绍的也蛮详细的,值得购买


书很不错,学习了


书到手了,看了目录,得慢慢学习了!


书的内容不错,看了喜欢的,全面


不错,很实用,接近实际工作需要。


书很好,很强大,很喜欢,就是好。


如题,这是一本非常不错的适合自学的教材。但适合有一定基础想要深入学习的自学者。没有一点基础的学起来会有点吃力


感觉还不错 努力学习 fighting!


要好好学习一下。。哈哈。。


非常不错的一本书,需要好好消化消化了。


借用作者一句话,只有了解汽车的原理,才能更好地驾驭它!


能学到很多技巧


很好,很强大的,认真读读,有好处。


一如既往的强大。。。。。。


是sql优化的好书


书是挺好的,不小心跟另外一本书买重了,现在两本书都被宝贝画的满满的了


先收藏了,还未来得急细读~~


很经典的书,学后收获很大


很快就收到书本了,但是自己基础有限,目前看起来还是有点生涩,借给我师傅看,他觉得挺好用的


已经读了一半,非常好,值!


已经读完,感觉受益匪浅。


我帮我老公买的,他很喜欢这,本书比书店便宜。


很好的一本书,值的一看


这本书对初学者来说有点难,所以我又在网上找了好多资料


这本书不错,很有用,而且价格还算合适


很好的一本书 看了一下很详细


正品,书的内容和纸一样好。


书的内容不错,是值得一买的好书


阅读完了,同事也在看,内容很不错,适合有基础的人


好书值得一看,内容适合学过基本知识的人


经过很长时间的对比才买此书的,很适合有点基础的看


还没时间细读,应该很好


做工具书不错,够厚做枕头也不错


工具书继续研究工具书继续研究工具书继续研究


在哪里评价都高的很,虽然自己还没研究明白... 另当当价格稍高


书挺好的,挺适合小孩子的


书还没看 ,期待


如果不想自己的水平仅仅局限于增删改查,这是一本很值得看的书。


书还没看,纸张还行,当当送货速度快,不错


不错的书,只是下错单了。


书还不错,不适合刚入行的读,


书很好,只是快递收费太高


刚收到书,还不错没有损坏,是正品


书不错在看中


收到了 书质量很好是正版 就是物流慢了点


很快就拿到书了,质量很好,没有损坏。


大概翻了一下,书还不错。


美妙,我正缺少这样的书!


发货速度超快,下午拍下第二天上午10点送达,速度好快!太好了,一个月,慢慢啃!


刚收到 大概看了一下 很不错 适合有一点基础的人提高


适合各个级别的人。


买来翻阅了一下,纸张不错,内容还没看完··


书包装精美,质量好,内容充实完整,很实用


相关图书