《《处理数据》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《处理数据》PPT课件.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、8版权所有 2006,Oracle。保留所有权利。处理数据处理数据版权所有 2006,Oracle。保留所有权利。8-2 课程目标课程目标 学完本课后,应能完成以下工作:学完本课后,应能完成以下工作:描述各个数据操纵语言描述各个数据操纵语言(DML)语句语句 在表中插入行在表中插入行 更新表中的行更新表中的行 从表中删除行从表中删除行 控制事务处理控制事务处理 版权所有 2006,Oracle。保留所有权利。8-3 数据操纵语言数据操纵语言 在进行以下操作时,会执行在进行以下操作时,会执行 DML 语句:语句:在表中添加新行在表中添加新行 修改表中现有的行修改表中现有的行 从表中删除现有的行从
2、表中删除现有的行 事务处理由事务处理由 DML 语句的集合组成,这些语句构成一个语句的集合组成,这些语句构成一个逻辑工作单元。逻辑工作单元。版权所有 2006,Oracle。保留所有权利。8-4 在表中添加新行在表中添加新行 DEPARTMENTS在在 DEPARTMENTS 表中插入新行表中插入新行新行新行版权所有 2006,Oracle。保留所有权利。8-5 INSERT 语句语法语句语法 使用使用 INSERT 语句在表中添加新行:语句在表中添加新行:使用此语法一次只能插入一行。使用此语法一次只能插入一行。INSERT INTOtable(column,column.)VALUES(va
3、lue,value.);版权所有 2006,Oracle。保留所有权利。8-6 插入新行插入新行 插入一个新行,此行的每一列都含有值插入一个新行,此行的每一列都含有值按照表中列的默认顺序列出这些值按照表中列的默认顺序列出这些值(可选)在可选)在 INSERT 子句中列出列子句中列出列 将字符和日期值包含在单引号中将字符和日期值包含在单引号中INSERT INTO departments(department_id,department_name,manager_id,location_id)VALUES(70,Public Relations,100,1700);1 row created.版
4、权所有 2006,Oracle。保留所有权利。8-7 插入带有空值的行插入带有空值的行 隐式方法:在列的列表中省略该列隐式方法:在列的列表中省略该列显式方法:在显式方法:在 VALUES 子句中指定子句中指定 NULL 关键字关键字INSERT INTOdepartments(department_id,department_name )VALUES(30,Purchasing);1 row created.INSERT INTOdepartmentsVALUES(100,Finance,NULL,NULL);1 row created.版权所有 2006,Oracle。保留所有权利。8-8
5、插入特殊值插入特殊值 SYSDATE 函数记录当前日期和时间函数记录当前日期和时间INSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,commission_pct,manager_id,department_id)VALUES (113,Louis,Popp,LPOPP,515.124.4567,SYSDATE,AC_ACCOUNT,6900,NULL,205,100);1 row created.版权所有 2006,Oracle。保留所有权利。8-9
6、 插入特定日期值插入特定日期值 添加新雇员添加新雇员 确认添加的内容确认添加的内容INSERT INTO employeesVALUES (114,Den,Raphealy,DRAPHEAL,515.127.4561,TO_DATE(FEB 3,1999,MON DD,YYYY),AC_ACCOUNT,11000,NULL,100,30);1 row created.版权所有 2006,Oracle。保留所有权利。8-10 INSERT INTO departments (department_id,department_name,location_id)VALUES (&department
7、_id,&department_name,&location);创建脚本创建脚本 在在 SQL 语句中使用语句中使用&替代来提示用户输入值替代来提示用户输入值&是变量值的占位符是变量值的占位符1 row created.版权所有 2006,Oracle。保留所有权利。8-11 从其它表中复制行从其它表中复制行 编写带有子查询的编写带有子查询的 INSERT 语句:语句:不要使用不要使用 VALUES 子句。子句。使使 INSERT 子句中的列数与子查询中的列数匹配。子句中的列数与子查询中的列数匹配。INSERT INTO sales_reps(id,name,salary,commission
8、_pct)SELECT employee_id,last_name,salary,commission_pct FROM employees WHERE job_id LIKE%REP%;4 rows created.版权所有 2006,Oracle。保留所有权利。8-12 更改表中的数据更改表中的数据 EMPLOYEES 更新更新 EMPLOYEES 表中的行:表中的行:版权所有 2006,Oracle。保留所有权利。8-13 UPDATE 语句语法语句语法 使用使用 UPDATE 语句修改现有的行:语句修改现有的行:如果需要如果需要,可以一次更新多行。,可以一次更新多行。UPDATEtab
9、leSETcolumn=value,column=value,.WHERE condition;版权所有 2006,Oracle。保留所有权利。8-14 更新表中的行更新表中的行 如果指定了如果指定了 WHERE 子句,则可以修改特定的一行或子句,则可以修改特定的一行或多行:多行:如果省略如果省略 WHERE 子句,则会修改表中的所有行:子句,则会修改表中的所有行:UPDATE employees SET department_id=70 WHERE employee_id=113;1 row updated.UPDATEcopy_emp SETdepartment_id=110;22 row
10、s updated.版权所有 2006,Oracle。保留所有权利。8-15 使用子查询更新两个列使用子查询更新两个列 更新雇员更新雇员 114 的职务和薪金,使其与雇员的职务和薪金,使其与雇员 205 的职务和薪的职务和薪金相匹配。金相匹配。UPDATE employeesSET job_id =(SELECT job_id FROM employees WHERE employee_id=205),salary =(SELECT salary FROM employees WHERE employee_id=205)WHERE employee_id =114;1 row updated.
11、版权所有 2006,Oracle。保留所有权利。8-16 根据另一个表更新行根据另一个表更新行 根据另一个表中的值,在根据另一个表中的值,在 UPDATE 语句中使用子查询来更语句中使用子查询来更新表中的行:新表中的行:UPDATE copy_empSET department_id =(SELECT department_id FROM employees WHERE employee_id=100)WHERE job_id =(SELECT job_id FROM employees WHERE employee_id=200);1 row updated.版权所有 2006,Oracle
12、。保留所有权利。8-17 从从 DEPARTMENTS 表中删除一行:表中删除一行:从表中删除行从表中删除行 DEPARTMENTS 版权所有 2006,Oracle。保留所有权利。8-18 DELETE 语句语句 使用使用 DELETE 语句,可以从表中删除现有的行:语句,可以从表中删除现有的行:DELETE FROM table WHERE condition;版权所有 2006,Oracle。保留所有权利。8-19 从表中删除行从表中删除行 如果指定如果指定 WHERE 子句,则可以删除特定的行:子句,则可以删除特定的行:如果省略如果省略 WHERE 子句,则会删除表中的所有行:子句,则
13、会删除表中的所有行:DELETE FROM departments WHERE department_name=Finance;1 row deleted.DELETE FROM copy_emp;22 rows deleted.版权所有 2006,Oracle。保留所有权利。8-20 根据另一个表删除行根据另一个表删除行 根据另一个表中的值在根据另一个表中的值在 DELETE 语句中使用子查询来删除语句中使用子查询来删除表中的行:表中的行:DELETE FROM employeesWHERE department_id=(SELECT department_id FROM departmen
14、ts WHERE department_name LIKE%Public%);1 row deleted.版权所有 2006,Oracle。保留所有权利。8-21 TRUNCATE 语句语句 从表中删除所有行,使表为空并保留表结构不变从表中删除所有行,使表为空并保留表结构不变 是数据定义语言是数据定义语言(DDL)语句而不是语句而不是 DML 语句,无法轻语句,无法轻易地将其还原。易地将其还原。语法:语法:示例:示例:TRUNCATE TABLE table_name;TRUNCATE TABLE copy_emp;版权所有 2006,Oracle。保留所有权利。8-22 在在 INSERT
15、语句中使用子查询语句中使用子查询 INSERT INTO (SELECT employee_id,last_name,email,hire_date,job_id,salary,department_id FROM employees WHERE department_id=50)VALUES(99999,Taylor,DTAYLOR,TO_DATE(07-JUN-99,DD-MON-RR),ST_CLERK,5000,50);1 row created.版权所有 2006,Oracle。保留所有权利。8-23 在在 INSERT 语句中使用子查询语句中使用子查询 验证结果:验证结果:SELE
16、CT employee_id,last_name,email,hire_date,job_id,salary,department_idFROM employeesWHERE department_id=50;版权所有 2006,Oracle。保留所有权利。8-24 数据库事务处理数据库事务处理 数据库事务处理由以下语句之一组成:数据库事务处理由以下语句之一组成:对数据进行一次一致更改的对数据进行一次一致更改的 DML 语句语句 一条一条 DDL 语句语句 一条数据控制语言一条数据控制语言(DCL)语句语句 版权所有 2006,Oracle。保留所有权利。8-25 数据库事务处理数据库事务处理
17、 在执行第一条在执行第一条 DML SQL 语句时开始语句时开始 在发生下列事件之一时结束:在发生下列事件之一时结束:发出发出 COMMIT 或或 ROLLBACK 语句语句执行执行 DDL 或或 DCL 语句(自动提交)语句(自动提交)用户退出用户退出 iSQL*Plus系统崩溃系统崩溃版权所有 2006,Oracle。保留所有权利。8-26 COMMIT 和和 ROLLBACK 语句的优点语句的优点 使用使用 COMMIT 和和 ROLLBACK 语句,您可以:语句,您可以:确保数据的一致性确保数据的一致性 在使更改变成永久性更改之前预览数据更改在使更改变成永久性更改之前预览数据更改 按逻
18、辑关系对相关操作进行分组按逻辑关系对相关操作进行分组 版权所有 2006,Oracle。保留所有权利。8-27 控制事务处理控制事务处理 SAVEPOINT B SAVEPOINT A DELETE INSERT UPDATE INSERT COMMIT 时间时间 事务处理事务处理 ROLLBACK to SAVEPOINT B ROLLBACK to SAVEPOINT A ROLLBACK 版权所有 2006,Oracle。保留所有权利。8-28 将更改回退到某个标记将更改回退到某个标记 使用使用 SAVEPOINT 语句在当前事务处理中创建一个标记语句在当前事务处理中创建一个标记使用使用
19、 ROLLBACK TO SAVEPOINT 语句回退到该标记语句回退到该标记UPDATE.SAVEPOINT update_done;Savepoint created.INSERT.ROLLBACK TO update_done;Rollback complete.版权所有 2006,Oracle。保留所有权利。8-29 隐式事务处理隐式事务处理 在下列情况下将发生自动提交:在下列情况下将发生自动提交:发出发出 DDL 语句语句 发出发出 DCL 语句语句 从从 iSQL*Plus 中正常退出,而没有显式发出中正常退出,而没有显式发出 COMMIT 或或 ROLLBACK 语句语句 在在
20、iSQL*Plus 异常终止或出现系统故障的情况下会发异常终止或出现系统故障的情况下会发生自动回退。生自动回退。版权所有 2006,Oracle。保留所有权利。8-31 执行执行 COMMIT 或或 ROLLBACK 操作之前的数据状态操作之前的数据状态 可以将数据还原到以前的状态。可以将数据还原到以前的状态。当前用户可以使用当前用户可以使用 SELECT 语句查看语句查看 DML 操作的结果。操作的结果。其他用户不能查看当前用户的其他用户不能查看当前用户的 DML 语句的结果。语句的结果。受影响的行将被锁定,其他用户不能更改受影响的行中受影响的行将被锁定,其他用户不能更改受影响的行中的数据。
21、的数据。版权所有 2006,Oracle。保留所有权利。8-32 执行执行 COMMIT 操作之后的数据状态操作之后的数据状态 数据库中的数据更改将变成永久性的更改。数据库中的数据更改将变成永久性的更改。以前的数据状态将永久丢失。以前的数据状态将永久丢失。所有用户都可以查看结果。所有用户都可以查看结果。受影响的行上的锁将被释放,其他用户可以对这些行进受影响的行上的锁将被释放,其他用户可以对这些行进行处理。行处理。所有保存点都将被清除。所有保存点都将被清除。版权所有 2006,Oracle。保留所有权利。8-33 提交数据提交数据 进行更改:进行更改:提交更改:提交更改:DELETE FROM
22、employees WHERE employee_id=99999;1 row deleted.INSERT INTO departments VALUES(290,Corporate Tax,NULL,1700);1 row created.COMMIT;Commit complete.版权所有 2006,Oracle。保留所有权利。8-34 执行执行 ROLLBACK 操作之后的数据状态操作之后的数据状态 使用使用 ROLLBACK 语句放弃所有待定更改之后,会有如下结果:语句放弃所有待定更改之后,会有如下结果:数据更改将被还原数据更改将被还原数据将还原到以前的状态数据将还原到以前的状态受
23、影响的行上的锁将被释放受影响的行上的锁将被释放DELETE FROM copy_emp;20 rows deleted.ROLLBACK;Rollback complete.版权所有 2006,Oracle。保留所有权利。8-35 执行执行 ROLLBACK 操作之后的数据状态操作之后的数据状态 DELETE FROM test;25,000 rows deleted.ROLLBACK;Rollback complete.DELETE FROM test WHERE id=100;1 row deleted.SELECT*FROM test WHERE id=100;No rows selec
24、ted.COMMIT;Commit complete.版权所有 2006,Oracle。保留所有权利。8-36 语句级回退语句级回退 如果在执行期间单个如果在执行期间单个 DML 语句失败,则只需回退该语句。语句失败,则只需回退该语句。Oracle 服务器将实现隐式保存点。服务器将实现隐式保存点。将保留其它所有更改。将保留其它所有更改。用户应通过执行用户应通过执行 COMMIT 或或 ROLLBACK 语句显式终止事语句显式终止事务处理。务处理。版权所有 2006,Oracle。保留所有权利。8-37 读一致性读一致性 读一致性可以确保用户所看到的数据始终是一致的。读一致性可以确保用户所看到的
25、数据始终是一致的。一个用户进行的更改不会与另一个用户进行的更改相冲突。一个用户进行的更改不会与另一个用户进行的更改相冲突。读一致性可以确保对于同一数据:读一致性可以确保对于同一数据:读取者不必等待写入者完成操作即可进行读取读取者不必等待写入者完成操作即可进行读取 写入者不必等待读取者完成操作即可进行写入写入者不必等待读取者完成操作即可进行写入 版权所有 2006,Oracle。保留所有权利。8-38 实现读一致性实现读一致性 SELECT *FROM userA.employees;UPDATE employeesSET salary=7000 WHERE last_name=Grant;数据
26、块数据块 还原段还原段 已更改的和已更改的和未更改的数据未更改的数据 在更改在更改(“旧旧”数据)数据)之前之前 用户用户 A 用户用户 B 读一致镜像读一致镜像版权所有 2006,Oracle。保留所有权利。8-39 小结小结 在本课中,您应该已经学会如何使用以下语句:在本课中,您应该已经学会如何使用以下语句:语句语句 说明说明 INSERT 在表中添加新行在表中添加新行 UPDATE 修改表中现有的行修改表中现有的行 DELETE 从表中删除现有的行从表中删除现有的行 COMMIT 使所有待定的更改变成永久性的使所有待定的更改变成永久性的 SAVEPOINT 用于回退到保存点标记用于回退到保存点标记 ROLLBACK 放弃所有待定的数据更改放弃所有待定的数据更改 版权所有 2006,Oracle。保留所有权利。8-40 练习练习 8:概览:概览 本练习包含以下主题:本练习包含以下主题:在表中插入行在表中插入行 更新和删除表中的行更新和删除表中的行 控制事务处理控制事务处理