




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第八章数据操作与事务控制,东软IT人才实训中心,Copyright2008ByNeusoftGroup.Allrightsreserved,学时:4学时教学方法:讲授ppt上机练习点评,目标:本章旨在向学员介绍数据操作与事务的应用,通过本课的学习,学员应该掌握如下知识:1)数据操作语句2)事务控制语句,本章要点,INSERT语句UPDATE语句DELETE语句9i新增MERGE语句COMMIT命令ROLLBACK命令管理锁,数据操作语言,数据操作语言(DML:DataManipulationLanguage)主要包括以下语句:INSERTUPDATEDELETEMERGE事务是一组相关的DML语句的逻辑组合。事务控制主要包括下列命令:COMMITROLLBACKSAVEPOINT,插入数据,语法如下:一次只插入一行NULL的使用,连续的单引号()也可以表示空值。插入日期型数据插入特殊字符插入多行数据按列的默认顺序列出各个列的值在Insert子句中可以随意列出列名和他们的值字符和日期型数据应该包含在单引号中,INSERTINTO表名(列名1,列名2,列名n)VALUES(值1,值2,值n);,插入单行数据,例8-1将一个新成立部门的信息写入departments表,INSERTINTOdepartmentsVALUES(300,Operations,110,1500);,插入空值,例8-2将一个新成立部门的信息写入departments中,其中管理者未知。或或,INSERTINTOdepartmentsVALUES(310,Operations,NULL,1500);,INSERTINTOdepartments(department_id,department_name,location_id)VALUES(310,Operations,1500);,INSERTINTOdepartmentsVALUES(310,Operations,1500);,插入日期型数据,例8-5将一新入职员工信息写入employees表或,INSERTINTOemployees(employee_id,last_name,email,hire_date,job_id)VALUES(210,Wang,SWANG,10-9月-06,IT_PROG);,INSERTINTOemployees(employee_id,last_name,email,hire_date,job_id)VALUES(210,Wang,SWANG,TO_DATE(2006-9-10,YYYY-MM-DD),IT_PROG);,插入多行数据,语法例8-7将受雇日期在“1995-1-1”之前的员工信息复制到hemployees表中。,INSERTINTO表名(列名1,列名2,列名n)子查询;,INSERTINTOhemployeesSELECT*FROMemployeesWHEREhire_dateTO_DATE(1995-1-1,YYYY-MM-DD);,不必书写values子句INSERT子句中列的数量和类型必须和子查询中列的数量和类型相匹配,修改数据,UPDATE语法结构UPDATE简单修改,UPDATEemployeesSETsalary=salary+200,manager_id=103WHEREdepartment_id=60;,UPDATE表名SET列名=表达式,列名=表达式,WHERE条件表达式;,UPDATEemployeesSETsalary=salary*(1+0.2);,修改数据(续),嵌入子查询修改除基于表自身实现嵌入子查询的方式实现修改操作外,也可以在子查询中基于其他表实现修改操作。,UPDATEemployeesSETdepartment_id=10,salary=500+(SELECTAVG(salary)FROMemployees)WHEREjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id=110)ANDemployee_id110;,修改数据-完整性错误,updateemployeessetdepartment_id=55wheredepartment_id=100;ORA-02291:违反完整约束条件(NEU.EMP_DEPT_FK)-未找到父项关键字,修改数据-相关子查询,updateemployeesasetsalary=salary+(selectavg(salary)fromemployeesbwhereb.department_id=a.department_id),删除数据,DELETE语法结构DELETE删除数据,DELETEFROM表名WHERE条件表达式;,DELETEFROMdepartmentsWHEREdepartment_id=210;,删除数据(续),例8-12删除管理者编号(manager_id)为205的部门,相应部门的员工予以解聘,不包括205号员工。DELETE语句不能删除被其他表引用了的记录值。,DELETEFROMemployeesWHEREdepartment_idIN(SELECTdepartment_idFROMdepartmentsWHEREmanager_id=205)ANDemployee_id205;,删除数据完整性错误,deletefromdepartmentswheredepartment_id=100;ORA-02292:违反完整约束条件(NEU.EMP_DEPT_FK)-已找到子记录日志,删除数据相关子查询,deleteemp_copyawhereexists(select1fromemployeesbwhereb.employee_id=a.employee_id),显示默认值概述,使用Default表示默认值符合SQL:1999标准可以使用显示默认值控制默认值的使用显示默认值可以在insert和update语句中使用,合并数据,根据指定的条件执行插入或者更新操作如果满足条件的行存在,执行更新操作,否则执行插入操作优点:避免独立的数据更新提高效率而且使用方便在数据仓库应用中经常使用,合并数据,MERGE语法结构,MERGEINTOtable_namet_aliasUSINGtable|view|subqueryt_aliasON(joincondition)WHENMATCHEDTHENUPDATESETcol1=col1_val,col2=col2_valWHENNOTMATCHEDTHENINSERT(column_list)VALUES(column_values);,合并数据,INTO子句:指定更新或插入的目标表USING子句:指定更新或插入的数据源,它可以是表、视图、子查询ON子句:合并操作的条件判断语句,合并数据示例,MERGEINTOempaUSINGemployeesbON(a.employee_id=b.employee_id)WHENMATCHEDTHENUPDATESETa.email=b.email,a.phone_number=b.phone_number,a.salary=b.salary,a.manager_id=b.manager_id,a.department_id=b.department_idWHENNOTMATCHEDTHENINSERT(employee_id,email,phone_number,salary,manager_id,department_id)VALUES(b.employee_id,b.email,b.phone_number,b.salary,b.manager_id,b.department_id);,该例子显示匹配employees表中的employee_id列与emp表中的employee_id列。如果找到了一个匹配,用employees表中匹配行的列值更新emp表中匹配的列值。如果相匹配行没有找到,employees表中的列值被插入到emp表中。,事务处理,概念:事务(Transaction)也称工作单元,是一个或多个SQL语句所组成的序列,这些SQL操作作为一个完整的工作单元,要么全部执行,要么全部不执行。通过事务的使用,能够使一系列相关操作关联起来,防止出现数据不一致现象。事务的组成:在ORACLE数据库中,事务由以下语句组成:一组相关的DML语句,修改的数据在该组语句中保持一致一个DDL语句或者一个DCL语句或者一个TCL语句,事务的特征,可用四个字母的缩写表示:即ACID原子性(Atomicity)事务就像一个独立的工作单元。原子性保证要么所有的操作都成功,要不全都失败。如果所有的动作都成功了,我们就说这个事务成功了,不然就是失败的,然后回滚。一致性(Consistency)一旦事务完成了(不管是成功的,还是失败的),整个系统处于操作规则的统一状态,也就是说,数据不会损坏。,事务的特征(续),隔离性(Isolation)事务的隔离性是指数据库中一个事务的执行不能被其它事务干扰。所以,事务应该隔离起来,目的为了防止同时的读和写操作。这就需要事务与锁同时使用。持久性(Durability)事务的持久性也称为永久性(Permanence),指事务一旦提交,则其对数据库中数据的改变就是永久的。,事务控制,事务的控制分为:显式控制及隐式控制。显示控制:显示提交:Commit显示回滚:Rollback隐式控制:隐式提交:当下列任意一种情况发生时,会发生隐式提交执行一个DDL语句执行一个DCL语句从SQL*Plus正常退出(即使用EXIT或QUIT命令退出)隐式回滚:当下列任意一种情况发生时,会发生隐式回滚从SQL*Plus中强行退出客户端连接到服务器端异常中断系统崩溃注意:PL/Sqldeveloper工具和Sqlplus略有不同。,事务控制(续),事务控制的命令主要有以下三个:事务提交:COMMIT事务回滚:ROLLBACK设立保存点:SAVEPOINT(作为辅助命令使用)设置保存点语法:SAVEPOINT保存点名称;定义保存点ROLLBACKTO保存点名称;回滚到已定义保存点,事务控制(续),开始:事务开始于上一个事务结束后执行的第一个DML语句结束:事务结束于下面的任一种情况的发生:执行了COMMIT或者ROLLBACK命令隐式提交(单个的DDL或DCL语句)或自动提交用户退出系统崩溃,事务自动提交,设置格式:例8-14SQL*Plus自动提交的应用示例,SETAUTOCOMMITON|OFF;,SHOWAUTOCOMMIT;查看AUTOCOMMIT变量状态autocommitOFFSETAUTOCOMMITON;把变量状态设置为ONINSERTINTOtestVALUES(TEST);已创建1行提交完成已经自动提交,事务控制示例,DELETEFROMtest;ROLLBACK;撤消DELETE操作INSERTINTOtestVALUES(A);SAVEPOINTinsert_a;定义insert_a保存点INSERTINTOtestVALUES(B);SAVEPOINTinsert_b;定义insert_b保存点INSERTINTOtestVALUES(C);ROLLBACKTOinsert_b;撤消操作到insert_b保存点DELETEFROMtestWHEREtest_str=A;COMMIT;将所有修改写入数据库ROLLBACK;所有操作已经COMMIT提交,不能回滚,数据变化前的状态可以被恢复当前会话可以使用SELECT语句来验证DML操作后的结果其它会话不能查看由当前用户的DML操作结果受影响记录被锁定,也就是其它用户不能改变受影响记录中的数据,执行Commit或Rollback前的数据状态,Commit后的状态,在数据库中数据变化成为永久性的先前的数据状态永久性的消失所有用户/会话都可以查询提交后的结果锁定的记录被释放,可以有效地被其他用户操作所有的存储节点被清除,Rollback后的数据状态,使用ROLLBACK可以放弃所有悬而未决的变化。数据变化是可以撤销的先前的数据状态被恢复锁定的记录被释放所有的存储节点被清除,读一致性,读一致性保证了不同会话在同一时间查看数据时,数据一致。ORACLE在两个不同级别上提供读一致性:语句级读一致性和事务级一致性。事务级一致性,当一个会话正在修改数据时,其它的会话将看不到该会话未提交的修改。语句级读一致性,保证单个查询所返回的数据与该查询开始时刻相一致。所以一个查询从不会看到在查询执行过程中提交的其它事务所作的任何修改。,读一致性的实现,UPDATEempSETsal=2000WHEREename=SCOTT;,数据块,回滚段,发生变化及未发生变化的数据,变化前的老数据,用户A,用户B,读取一致的镜像,SELECT*FROMemp;,锁的概念,锁用来在多用户并发访问和操作数据库时保证数据的一致性。锁由Oracle自动管理。如一个DML操作,ORACLE默认的机制是在DML操作涉及到的行上加锁(行级别),但不会在更高的级别(表级别)上加更严格的锁,比如只改某行的数据不会锁住整个表。这提供了很好的并发性,因为整个表没有锁定,只是某些行被锁定了,其他用户可以修改其他行数据。查询不需要任何锁。,锁的概念(续),锁的生命周期,锁在被相关的操作申请并持有后,会一直保持到事务的结束。事务结束后,锁才会被释放。锁的内部维护机制是采用排队机制(enqueue),一个对象的排它锁被持有后,该对象相同级别的锁被其他事务申请时候,所有等待该锁的事务都在一个等待队列中排队,其他事务处于等待状态。直到该锁被释放,等待的事务才重新竞争使用该资源。锁的模式排它锁模式(Exclusive)排它锁在被释放之前,会阻止其锁住的资源被其他任何事务共享。共享模式(Share),锁的分类,两种类型的锁,DML锁和DDL锁。DML锁,也称数据锁,用于在数据被多个不同的用户改变时,保证数据的完整性。DDL锁,也称为数据字典锁,执行DDL语句时,DDL语句涉及到的对象获得DDL锁。由于被持有的时间很短,因此很少看到冲突的DDL锁,并且以nowait方式被请求。,锁的分类(续),3种DDL锁类型:排它的DDL锁,很多对象的创建、修改和删除定义时候都需要获得该锁。比如执行CreateTable、DropTable等时会获得表上的排它DDL锁。共享的DDL锁。在执行Grant、CreateProcedure等命令时,会获得命令相关操作对象的共享DDL锁。Bre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安宁地基基础施工方案
- 项目管理风险识别与控制方案模板
- 传统制造的营销方案模板
- 2019年一级建造师机电实务核心知识点
- 缓解初中生考试焦虑的心理指导
- 建筑设计院项目管理标准体系
- 三年级快乐读书吧阅读测试题
- 教育先进典型人物事迹汇编
- 北京市2019年初三物理期末试卷及解析
- 学习项目一 从古希腊到古典主义教学设计-2025-2026学年初中艺术·音乐人教版简谱2024七年级上册-人教版简谱2024
- 场景速写课件
- GPS的课件教学课件
- 2026年高考作文备考之抗日战争胜利80周年(九三阅兵)主题素材积累与运用
- 肺栓塞考试题及答案
- 2025年运动员:体育与健康知识试题及答案
- 综合实践 探索年月日的秘密(教案)北师大版数学三年级上册
- 2025年医师三基考试试题及答案(上半年)
- 2025年调酒师职业资格考试模拟试题集锦及答案
- 基孔肯雅热主题班会课件
- 2025年北京市公务员考试行测真题及答案详解(全优)
- 锁骨下盗血综合征伴锁骨下动脉闭塞的护理查房
评论
0/150
提交评论