Oracle数据库管理、开发与实践 教学课件 作者 杨永健 刘尚毅 第5章 SQL语言基础及调优.pptVIP

Oracle数据库管理、开发与实践 教学课件 作者 杨永健 刘尚毅 第5章 SQL语言基础及调优.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5-1 要实现分组查询使用的是哪条语句。 5-2 Oracle数据库中有哪些处理数字的函数。 5-3 Oracle数据库中有哪些实现转换的函数。 5-4 常规SQL语句优化包含哪些内容? 5-5 如何优化表连接? 5-6 何时使用索引? 5-7 如何选择索引列? 5-8 Oracle调优顾问包含哪些内容? 习题 5.7.1 事务概述 当使用事务修改多个数据表时,如果在处理的过程中出现了某种错误,例如系统死机或突然断电等情况,则返回结果是数据全部没有被保存。因为事务处理的结果只有两种:一种是在事务处理的过程中,如果发生了某种错误则整个事务全部回滚,使所有对数据的修改全部撤销,事务对数据库的操作是单步执行的,当遇到错误时可以随时地回滚;另一种是如果没有发生任何错误且每一步的执行都成功,则整个事务全部被提交。从而可以看出,有效地使用事务不但可以提高数据的安全性,而且还可以增强数据的处理效率。 事务包含4种重要的属性,被统称为ACID(原子性、一致性、隔离性和持久性),一个事务必须通过ACID。 (1)原子性(Atomic):事务是一个整体的工作单元,事务对数据库所做的操作要么全部执行,要么全部取消。如果某条语句执行失败,则所有语句全部回滚。 (2)一致性(ConDemoltent):事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。如果事务成功,则所有数据将变为一个新的状态;如果事务失败,则所有数据将处于开始之前的状态。 (3)隔离性(Isolated):由事务所作的修改必须与其他事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。 (4)持久性(Durability):当事务提交后,对数据库所做的修改就会永久保存下来。 5.7.2 操作事务 Oracle 11g中的事务是隐式自动开始的,它不需要用户显示地执行开始事务语句。但对于事务的结束处理,则需要用户进行指定的操作,通常在以下情况时,Oracle认为一个事务结束了。 (1)执行COMMIT语句提交事务。 (2)指定ROLLBACK语句撤销事务。 (3)执行一条数据定义语句,比如,CREATE、DROP或ALTER等语句。如果该语句执行成功,那么Oracle系统会自动执行COMMIT命令;否则,则Oracle系统会自动执行ROLLBACK命令。 (4)执行一个数据控制命令,比如,GRANT、REVOKE等控制命令,这种操作执行完毕,Oracle系统会自动执行COMMIT命令。 (5)正常地断开数据库的连接、正常地退出SQL*Plus环境,则Oracle系统会自动执行COMMIT命令;否则,则Oracle系统会自动执行ROLLBACK命令。 综合上面5种情况可知,Oracle结束一个是事务归根结底要么执行COMMIT语句,要么执行ROLLBACK语句,下面对这两种语句进行介绍。 1.提交事务(COMMIT语句) 提交事务是指把对数据库进行的全部操作持久性地保存到数据库中,这种操作通常使用COMMIT语句来完成。在使用该语句提交事务时,Oracle系统内部会按照如下顺序进行处理。 (1)首先在回滚段内记录当前事务已提交,并且声称一个唯一的系统该编号(SCN),以唯一标识这个事务。 (2)然后启动后台的日志写入进程(LGWR),将SGA区的重做日志缓冲区中的数据和当前事物的SCN写入重做日志文件中。 (3)接着Oracle服务器开始释放事务处理所使用的系统资源。 (4)最后显示通知,告诉用户事务已经成功提交完毕。 【例5-65】 实现向scott模式下的emp表中添加数据,并提交事务,代码即运行结下: SQL insert into scott.emp(empno,ename,job) values(7901,LUCY,CLERK); 已创建 1 行。 SQL commit; 提交完成。 在上面的示例中,如果用户不使用commit提交事务,此时,再开启一个SQL*Plus环境(但要求当前的SQL*Plus环境不退出,若退出,Oracle系统会自动执行commit语句提交数据库),然后在HR模式下查询jobs_temp表,会发现新增加的记录不存在。若用户使用commit语句提交事务,则在另一个SQL*Plus环境下就能够查询到新增加的记录。 2.回滚事务(ROLLBACK语句) 回退事务是指撤销对数据库进行的全部操作,Oracle利用回退段来存储修改前的数据,通过重做日志来记录对数据所做的修改。如果要回退整个事务,Oracle系统内部将会执行如下操作过程。 (1)首先使

您可能关注的文档

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档