1、处理数据1精选课件ppt目标通过本章学习,您将可以:使用 DML 语句向表中插入数据更新表中数据从表中删除数据控制事务2精选课件ppt数据控制语言DML 可以在下列条件下执行:向表中插入数据修改现存数据删除现存数据事务是由完成若干项工作的DML语句组成的。3精选课件ppt插入数据DEPARTMENTS New rowinsert a new row into the DEPARMENTS table4精选课件pptINSERT 语句语法使用 INSERT 语句向表中插入数据。使用这种语法一次只能向表中插入一条数据。INSERT INTOtable(column,column.)VALUES(v
2、alue,value.);5精选课件ppt插入数据为每一列添加一个新值。按列的默认顺序列出各个列的值。在 INSERT 子句中随意列出列名和他们的值。字符和日期型数据应包含在单引号中。INSERT INTO departments(department_id,department_name,manager_id,location_id)VALUES (70,Public Relations,100,1700);1 row created.6精选课件pptINSERT INTOdepartmentsVALUES(100,Finance,NULL,NULL);1 row created.1 row
3、 created.INSERT INTOdepartments(department_id,department_name )VALUES(30,Purchasing);1 row created.1 row created.向表中插入空值隐式方式:在列名表中省略该列的值。显示方式显示方式:在在VALUES 子句中指定空值。子句中指定空值。7精选课件pptINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,commission_pct,manager_
4、id,department_id)VALUES (113,Louis,Popp,LPOPP,515.124.4567,SYSDATE,AC_ACCOUNT,6900,NULL,205,100);1 row created.1 row created.插入指定的值SYSDATE 记录当前系统的日期和时间。8精选课件pptINSERT 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 crea
5、ted.1 row created.插入指定的值加入新员工检查插入的数据9精选课件pptINSERT INTO departments (department_id,department_name,location_id)VALUES (&department_id,&department_name,&location);创建脚本 在SQL 语句中使用&变量指定列值。&变量放在VALUES子句中。1 1 row created.row created.10精选课件ppt在 INSERT 语句中加入子查询。不必书写 VALUES 子句。子查询中的值列表应于 INSERT 子句中的列名对应。INS
6、ERT INTO sales_reps(id,name,salary,commission_pct)SELECT employee_id,last_name,salary,commission_pct FROM employees WHERE job_id LIKE%REP%;4 rows created.4 rows created.从其它表中拷贝数据11精选课件ppt更新数据EMPLOYEESUpdate rows in the EMPLOYEES table.12精选课件pptUPDATE 语句语法使用 UPDATE 语句更新数据。可以一次更新多条数据。UPDATEtableSETcol
7、umn=value,column=value,.WHERE condition;13精选课件pptUPDATE employeesSET department_id=70WHERE employee_id=113;1 row updated.1 row updated.使用 WHERE 子句指定需要更新的数据。如果省略WHERE子句,则表中的所有数据都将被更新。更新数据UPDATE copy_empSET department_id=110;22 rows updated.22 rows updated.14精选课件pptUPDATE employeesSET job_id =(SELECT
8、job_id FROM employees WHERE employee_id=205),salary =(SELECT salary FROM employees WHERE employee_id=205)WHERE employee_id =114;1 row updated.1 row updated.在UPDATE语句中使用子查询更新 114号员工的工作和工资使其与 205号员工相同。15精选课件pptUPDATE copy_empSET department_id =(SELECT department_id FROM employees WHERE employee_id=100
9、)WHERE job_id =(SELECT job_id FROM employees WHERE employee_id=200);1 row updated.1 row updated.在UPDATE语句中使用子查询在 UPDATE 中使用子查询,使更新基于另一个表中的数据。16精选课件pptUPDATE employees *ERROR at line 1:ORA-02291:integrity constraint(HR.EMP_DEPT_FK)violated-parent key not foundUPDATE employeesSET department_id=55WHERE
10、 department_id=110;更新中的数据完整性错误Department number 55 does not exist17精选课件ppt从表从表DEPARTMENTS 中删除一条记录。中删除一条记录。删除数据 DEPARTMENTS 18精选课件pptDELETE 语句使用 DELETE 语句从表中删除数据。DELETE FROM tableWHERE condition;19精选课件ppt使用WHERE 子句指定删除的记录。如果省略WHERE子句,则表中的全部数据将被删除。删除数据 DELETE FROM departments WHERE department_name=Fin
11、ance;1 row deleted.1 row deleted.DELETE FROM copy_emp;22 rows deleted.22 rows deleted.20精选课件pptDELETE FROM employeesWHERE department_id=(SELECT department_id FROM departments WHERE department_name LIKE%Public%);1 row deleted.1 row deleted.在 DELETE 中使用子查询在 DELETE 中使用子查询,使删除基于另一个表中的数据。21精选课件ppt删除中的数据完
12、整性错误DELETE FROM departmentsWHERE department_id=60;DELETE FROM departments *ERROR at line 1:ORA-02292:integrity constraint(HR.EMP_DEPT_FK)violated-child record foundYou cannot delete a row that contains a primary key that is used as a foreign key in another table.22精选课件ppt使用MERGE合并表数据使用 MERGE 语句,可以对指
13、定的两个表执行合并操作。语法:MEGER INTO table1 alias1USING table2 alias2 ON join condition WHEN MATCHED THEN UPDATE 子句 WHEN NOT MATCHED THEN INSERT 子句。语法说明:1.table1 alias1 表示需要合并的目标表及别名。2.table2 alias2 表示需要合并的源表及别名(把table2的数据合并到table1)。3.join _ condition 表示合并条件。4.WHEN MATCHED THEN UPDATE 表示如果符合合并条件,则执行更新操作。5.WHEN
14、 NOT MATCHED THEN INSERT 表示如果不符合合并条件,则执行插入操作。23精选课件ppt事务(Transaction)数据库事务是由一系列SQL语句组成的最小逻辑单元一个逻辑工作单元由多个SQL语句组成Oracle系统以事务为单位来处理数据,以保证数据的一致性。事务里的一系列SQL语句要么同时成功,要么同时失败24精选课件ppt事务的特点(ACID)原子性(Atomicity):事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的一致性(Consistency):事务在完成时,必须使所有的数据都保持
15、一致状态。隔离性(insulation):由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。持久性(Duration):事务完成之后,它对于系统的影响是永久性的。25精选课件ppt事务的组成数据库事务由以下的部分组成:一个或多个DML 语句一个 DDL 语句一个 DCL 语句26精选课件ppt事务控制开始于上一个事务结束后的第一个 DML 语句以下面的其中之一作为结束:COMMIT 或 ROLLBACK 语句DDL 或 DCL 语句(隐式提交)用户会话正常结束连接异常、系统异常事务的提交和回滚commit显示提交事务对数据库的操作将永久性的记录在数据库中rollback显示回滚事务对数
16、据库的操作将被取消27精选课件pptCOMMIT和ROLLBACK语句的优点使用COMMIT 和 ROLLBACK语句,我们可以:确保数据完整性。数据改变被提交之前预览。将逻辑上相关的操作分组。28精选课件ppt事务的隐式提交执行一个DDL语句执行一个DCL语句从SQL*PLUS正常退出29精选课件ppt事务的隐式回滚强行退出SQL*PLUS连接异常系统异常30精选课件pptSAVEPOINT在事务的处理过程中,如果发生了错误并且使用 ROLLBACK 进行了回滚,则在整个事务处理中对数据所做的修改都将被撤销。在一个庞大的事中。这种操作将会浪费大量的资源这时,可以为该事务建立一个或多个保存点(
17、SAVEPOINT)。使用保存点可以让用户将一个规模比较大的事务分割成一系列较小的部分。当回滚事务时,就可以回滚到指定的保存点。语法:savepoint savepoint_name回滚到某保存点rollback savepoint_name31精选课件pptUPDATE.SAVEPOINT update_done;Savepoint created.Savepoint created.INSERT.ROLLBACK TO update_done;Rollback complete.Rollback complete.回滚到保留点使用 SAVEPOINT 语句在当前事务中创建保存点。使用 RO
18、LLBACK TO SAVEPOINT 语句回滚到创建的保存点。32精选课件ppt提交或回滚前的数据状态改变前的数据状态是可以恢复的执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正其他用户不能看到当前用户所做的改变,直到当前用户结束事务。DML语句所涉及到的行被锁定,其他用户不能操作。33精选课件ppt提交后的数据状态数据的改变已经被保存到数据库中。改变前的数据已经丢失。所有用户可以看到结果。锁被释放,其他用户可以操作涉及到的数据。所有保存点被释放。34精选课件pptCOMMIT;Commit complete.Commit complete.改变数据提交改变DELETE F
19、ROM employeesWHERE employee_id=99999;WHERE employee_id=99999;1 row deleted.1 row deleted.INSERT INTO departments VALUES(290,Corporate Tax,NULL,1700);1 row inserted.1 row inserted.提交数据35精选课件ppt数据回滚后的状态使用 ROLLBACK 语句可使数据变化失效:数据改变被取消。修改前的数据状态可以被恢复。锁被释放。DELETE FROM copy_emp;22 rows deleted.22 rows delet
20、ed.ROLLBACK;Rollback complete.Rollback complete.36精选课件ppt读一致性读一致性为数据提供一个一致的视图。一个用户的对数据的改变不会影响其他用户的改变。Session不同37精选课件pptSELECT *FROM userA.employees;读一致性UPDATE employeesSET salary=7000WHERE last_name=Goyal;数据块数据块回滚段回滚段改变和未改变改变和未改变的数据的数据改变之前的改变之前的数据数据User AUser B 快照快照38精选课件ppt总结功能功能插入插入修正修正删除删除提交提交保存点保存点回滚回滚语句语句INSERTUPDATEDELETECOMMITSAVEPOINTROLLBACK通过本章学习通过本章学习,您应学会如何使用您应学会如何使用DML语句改变数据和事务语句改变数据和事务控制控制40精选课件ppt