数据处理一.使用DML语句DML(DataManipulationLanguage–数据操纵语言)可以在下列条件下执行:向表中 插入数据修改现存数据删除现存数据事务是由完成若干项工作的DML语句组成的二.插入数据:(INSERT…VALES…)语句语法使用 INSERT语句向表中插入数据。INSERTINTOtable[(column[,column...])]VALUES (value[,value...]);使用这种语法一次只能向表中插入一条数据。为每一列添加一个新值。按列的默认顺序列出各个列的 值。在INSERT子句中随意列出列名和他们的值。字符和日期型数据应包含在单引号中。例:INSERTINTOemploye es(employee_id,last_name,email,hire_date,job_id)VALUES(300,’Tom’, ’tom@126.com’,to_date(‘2012-3-21’,’yyyy-mm-dd’),’SA_RAP’);向表中插入空值 隐式方式:在列名表中省略该列的值。INSERTINTOdepartments(department_id,departme nt_name)VALUES(30,''Purchasing'')显式方式:在VALUES子句中指定空值。INSERTIN TOdepartmentsVALUES(100,''Finance'',NULL,NULL);插入指定的值SYSDATE记录当 前系统的日期和时间。例:INSERTINTOemployees(employee_id,first_name,las t_name,email,phone_number,hire_date,job_id,salary,commission _pct,manager_id,department_id)VALUES(113,''Louis'',''Popp'',''LPOP P'',''515.124.4567'',SYSDATE,''AC_ACCOUNT'',6900,NULL,205,100)创 建脚本在SQL语句中使用&变量指定列值(&变量放在VALUES子句中)例:INSERTINTOdepartments (department_id,department_name,location_id)VALUES(&depar tment_id,''&department_name'',&location);从其它表中拷贝数据在INSERT语句中加入子查 询。不必书写VALUES子句。子查询中的值列表应与INSERT子句中的列名对应例:INSERTINTOemp2S ELECTFROMemployeesWHEREdepartment_id=90;例:INSERTINTOsale s_reps(id,name,salary,commission_pct)SELECTemployee_id,last_ name,salary,commission_pctFROMemployeesWHEREjob_idLIKE''% REP%'';三.更新表中数据(UPDATE语句语法)可以一次更新多条数据。UPDATEtableSETcolumn=va lue[,column=value,...][WHEREcondition];使用WHERE子句指定需要更新的数 据。例:UPDATEemployeesSETdepartment_id=70WHEREemployee_id=113 ;1rowupdated.如果省略WHERE子句,则表中的所有数据都将被更新例:UPDATEcopy_empSETdep artment_id=110;22rowsupdated.在UPDATE语句中使用子查询例:更新114号员工的工作和 工资使其与205号员工相同。UPDATEemployeesSETjob_id=(SELECTjob_idFROM employeesWHEREemployee_id=205),salary=(SELECTsalar yFROMemployeesWHEREemployee_id=205)WHEREemployee_id= 114在UPDATE中使用子查询,使更新基于另一个表中的数据。例:调整与employee_id为200的员工job_id相 同的员工的department_id为employee_id为100的员工的department_id。UPDATEcopy_ empSETdepartment_id=(SELECTdepartment_idFROMemployeesWHERE employee_id=100)WHEREjob_id=(SELECTjob_idFROMemployeesW HEREemployee_id=200)更新中的数据完整性错误四.从表中删除数据(DELETE...where…)使用W HERE子句删除指定的记录。例:DELETEfromdepartmentsWHEREdepartment_name =''Finance'';1rowdeleted.如果省略WHERE子句,则表中的全部数据将被删除例:DELETEFROM copy_emp;22rowsdeleted.在DELETE中使用子查询在DELETE中使用子查询,使删除基于另一 个表中的数据。例:从emp1表中删除dept1部门名称中含Public字符的部门idDELETEfromemp1WHERE department_id=(SELECTdepartment_idFROMdept1WHEREdepar tment_nameLIKE''%Public%'')删除中的数据完整性错误五.控制事务事务:一组逻辑操作单元,使数据从一种状态变 换到另一种状态。数据库事务由以下的部分组成:一个或多个DML语句一个DDL(DataDefinitionLanguage –数据定义语言)语句一个DCL(DataControlLanguage–数据控制语言)语句以第一个DML语句的 执行作为开始以下面的其中之一作为结束:COMMIT或ROLLBACK语句DDL语句(自动提交)用户会话正常结束系统异常终止 COMMIT和ROLLBACK语句的优点确保数据完整性。数据改变被提交之前预览。将逻辑上相关的操作分组。使用SAVEPOINT 语句在当前事务中创建保存点。使用ROLLBACKTOSAVEPOINT语句回滚到创建的保存点。UPDATE...SAVEP OINTupdate_done;Savepointcreated.INSERT...ROLLBACKTOupdate_do ne;Rollbackcomplete.事务进程自动提交在以下情况中执行:DDL语句。DCL语句。不使用COMMIT或 ROLLBACK语句提交或回滚,正常结束会话。会话异常结束或系统异常会导致自动回滚提交或回滚前的数据状态改变前的数据状态是可以恢 复的执行DML操作的用户可以通过SELECT语句查询之前的修正其他用户不能看到当前用户所做的改变,直到当前用户结束事务。DML语句所涉及到的行被锁定,其他用户不能操作。提交后的数据状态数据的改变已经被保存到数据库中。改变前的数据已经丢失。所有用户可以看到结果。锁被释放,其他用户可以操作涉及到的数据。所有保存点被释放。语句功能INSERT插入UPDATE修正DELETE删除COMMIT提交SAVEPOINT保存点ROLLBACK回滚 |
|