首页 第8章 数据操作与事务控制

第8章 数据操作与事务控制

举报
开通vip

第8章 数据操作与事务控制 © 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice 第八章 数据操作与事物控制 目标 • 数据操作语句 • 事务控制语句 本章要点 • INSERT语句 • UPDATE语句 • DELETE语句 • COMMIT命令 • ROLLBACK命令 • 管理锁 数据操作 主要包括下列语句: • –INSERT •...

第8章 数据操作与事务控制
© 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice 第八章 数据操作与事物控制 目标 • 数据操作语句 • 事务控制语句 本章要点 • INSERT语句 • UPDATE语句 • DELETE语句 • COMMIT命令 • ROLLBACK命令 • 管理锁 数据操作 主要包括下列语句: • –INSERT • –UPDATE • –DELETE • –MERGE INSERT语法结构 • 语法如下: • –一次只插入一行 • –NULL的使用,连续的单引号(‘’)也可以 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示空值。 • –插入日期型数据 • –插入特殊字符 • –插入多行数据 • –按列的默认顺序列出各个列的值 • –在Insert子句中可以随意列出列名和他们的值 • –字符和日期型数据应该包含在单引号中 INSERT INTO 表名[(列名1[,列名2,…,列名n])] VALUES (值1[,值2,…,值n]); INSERT语句插入单行数据1/2 INSERT INTO departments VALUES(300,'Operations',110,1500); INSERT语句插入单行数据 2/2 • 显示默认值概述 –使用Default表示默认值 –符合SQL:1999 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 –可以使用显示默认值控制默认值的使用 –显示默认值可以在insert和update语句中使用 INSERT语句插入空值(NULL) 将一个新成立部门的信息写入departments中 ,其 中管理者未知。 或 或 INSERT INTO departments VALUES(310,'Operations', NULL,1500); INSERT INTO departments VALUES(310,'Operations', '',1500); INSERT INTO departments (department_id,department_name,location_id) VALUES(310,'Operations',1500); INSERT语句插入日期型数据 将一新入职员工信息写入employees表 或 INSERT INTO employees(employee_id,last_name,email,hire_date,j ob_id) VALUES(210,’Wang’,’SWANG’,’ 10-9月- 06’,’IT_PROG’); INSERT INTO employees(employee_id,last_name,email,hire_date,j ob_id) VALUES(210,’Wang’,’SWANG’,TO_DATE(’2006-9- 10’,’YYYY-MM-DD’),’IT_PROG’); UPDATE语法结构 • UPDATE语法结构 • UPDATE简单修改 UPDATE 表名 SET 列名=表达式[,列名=表达式, ···] [WHERE 条件表达式]; UPDATE employees SET salary=salary*(1+0.2); UPDATE employees SET salary=salary+200,manager_id=103 WHERE department_id=60; UPDATE嵌入子查询修改1/2 除基于表自身实现嵌入子查询的方式实现修改操作 外,也可以在子查询中基于其他表实现修改操作。 UPDATE employees SET department_id=10, salary=500+(SELECT AVG(salary) FROM employees) WHERE job_id=(SELECT job_id FROM employees WHERE employee_id=110) AND employee_id<>110; UPDATE嵌入子查询修改2/2 UPDATE employees a SET salary = salary+(SELECT AVG(salary) FROM employees b WHERE b.department_id = a.department_id) DELETE语法结构 • DELETE语法结构 • DELETE删除数据 DELETE [FROM] 表名 [WHERE 条件表达式]; DELETE FROM departments WHERE department_id=210; DELETE删除数据 1/3 删除管理者编号(manager_id)为205的部门,相应 部门的员工予以解聘,不包括205号员工。 • DELETE语句不能删除被其他表引用了的记录值。 DELETE FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE manager_id =205) AND employee_id<>205; DELETE删除数据 2/3 • 删除数据 (完整性错误) • –delete from departments where department_id = 100; • –ORA-02292: 违反完整约束条件 (NEU.EMP_DEPT_FK) - 已找到子记录日志 DELETE删除数据 3/3 • 删除数据 (相关子查询) –delete emp_copy a –where exists (select '1' from employees b where b.employee_id = a.employee_id) ROWID介绍 1/2 • ROWID: –伪列,是表中虚拟的列,是系统自动产生的。 –每一行记录中都包含ROWID,表示这一行的唯一地址。 –ROWID标识了Oracle如何定位行,通过 ROWID 能快速定位一行记录。 SELECT rowid,cname FROM dossier; ROWID介绍 2/2 • ROWID的格式: –ROWID中包含该行数据的物理位置信息,所以能快速的定位记录 使用ROWID进行数据操作 • ROWID的应用: –快速定位单行记录,DML语句可以使用ROWID操作数据,效率最快 –作为表行的唯一标识 事务控制 1/8 • 事务的控制分为:显式控制及隐式控制。 • 显示控制: –显示提交:Commit –显示回滚:Rollback • 隐式控制: –隐式提交:当下列任意一种情况发生时,会发生隐式提交 a.执行一个DDL 语句 b.执行一个DCL 语句 c.从 SQL*Plus正常退出(即使用EXIT或QUIT命令退出) –隐式回滚:当下列任意一种情况发生时,会发生隐式回滚 a.从SQL*Plus中强行退出 b.客户端连接到服务器端异常中断 c.系统崩溃 注意:PL/Sql developer工具和Sqlplus略有不同。 事务控制 2/8 • 事务控制的命令主要有以下三个: –事务提交:COMMIT –事务回滚:ROLLBACK –设立保存点:SAVEPOINT(作为辅助命令使用) • 设置保存点语法: –SAVEPOINT 保存点名称; ——定义保存点 –ROLLBACK TO保存点名称; ——回滚到已定义 保存点 事务控制 3/8 • 开始:事务开始于上一个事务结束后执行的第一个 DML语句 • 结束:事务结束于下面的任一种情况的发生: –执行了COMMIT 或者ROLLBACK命令 –隐式提交(单个的DDL或DCL语句)或自动提交 –用户退出 –系统崩溃 事务控制 4/8 • 事务自动提交 • 设置格式: • SQL*Plus自动提交的应用示例 SET AUTOCOMMIT [ON|OFF]; SHOW AUTOCOMMIT; ——查看AUTOCOMMIT变量状态 autocommit OFF SET AUTOCOMMIT ON; ——把变量状态设置为ON INSERT INTO test VALUES (‘TEST’); 已创建 1 行 提交完成 ——已经自动提交 事务控制 5/8 • 事务控制示例 DELETE FROM test; ROLLBACK; ——撤消DELETE操作 INSERT INTO test VALUES(’A’); SAVEPOINT insert_a; ——定义insert_a保存点 INSERT INTO test VALUES(’B’); SAVEPOINT insert_b; ——定义insert_b保存点 INSERT INTO test VALUES(’C’); ROLLBACK TO insert_b; ——撤消操作到insert_b保存点 DELETE FROM test WHERE test_str = ‘A’; COMMIT; ——将所有修改写入数据库 ROLLBACK; ——所有操作已经COMMIT提交,不能回滚 事务控制 6/8 • 执行Commit或Rollback前的数据状态 –数据变化前的状态可以被恢复 –当前会话可以使用SELECT语句来验证 DML操作 后的结果 –其它会话不能查看由当前用户的DML操作结果 –受影响记录被锁定,也就是其它用户不能改变 受影响记录中的数据 事务控制 7/8 •Commit后的状态 –在数据库中数据变化成为永久性的 –先前的数据状态永久性的消失 –所有用户/会话都可以查询提交后的结果 –锁定的记录被释放,可以有效地被其他用户操 作 –所有的存储节点被清除 事务控制 8/8 • Rollback后的数据状态 –使用ROLLBACK 可以放弃所有悬而未决的变化。 –数据变化是可以撤销的 –先前的数据状态被恢复 –锁定的记录被释放 –所有的存储节点被清除 • 读一致性 1/2 • 读一致性保证了不同会话在同一时间查看数据时, 数据一致。 • ORACLE在两个不同级别上提供读一致性:语句级读 一致性和事务级一致性。 • 事务级一致性,当一个会话正在修改数据时,其它 的会话将看不到该会话未提交的修改。 • 语句级读一致性,保证单个查询所返回的数据与该 查询开始时刻相一致。所以一个查询从不会看到在 查询执行过程中提交的其它事务所作的任何修改。 读一致性 2/2 • 本章小结 • INSERT语句 • UPDATE语句 • DELETE语句 • 事务的概念及事务控制 练习1 1.向departments表中的部门编号、部门名称、区域编号三列插入两条纪 录,分别为:300,‘QQQ’,1500和310,‘TTT’,1700。观察执行结 果。 2.使用两种 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 完成下列操作,试在新部门的管理者和工作地区编号还 没有确定的情况下,向部门表中插入新部门信息如下:部门编号320及 330,部门名称F1及F2。 3.按顺序执行下列操作: ①、插入一个新的部门信息,开始事务。部门编号350,名称 人力资源 管理者100 区域编号1700。 ②、建立保存点a。 练习2 3、查询插入的数据是否存在。 4、删除所有部门编号大于200的部门。 5、建立保存点b。 6、查询还有哪些部门信息存在。 7、更新部门编号为10的部门的管理者的编号为110。 8、查询当前部门信息。 9、执行回滚操作,但不回滚到事务的最开始,而是回滚 到保存点b。 10、提交事务,提交后事务已结束。 11、查看最终数据修改结果。 © 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Thanks!
本文档为【第8章 数据操作与事务控制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_542206
暂无简介~
格式:pdf
大小:324KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2013-07-20
浏览量:15