DML语句

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

七、DML语句目标结束本节课后,应当达到如下目标:–描述每个DML语句–向一个表中插入数据–更新一个表中数据行–从一个表中删除行–控制事务数据操作语言–DML语句在下列情况下发生:往一个表中增加新行更改一个表中现有的行从一个表中删除掉现有的行–一个事务由一组构成一个逻辑操作的DML语句组成.向一个表中增加新行DEPTDEPTNODNAMELOC------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON新行50DEVELOPMENTDETROITDEPTDEPTNODNAMELOC------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON“…向DEPT表中增加新行…”50DEVELOPMENTDETROITINSERT语句–使用INSERT语句向表中增加新行.–使用这种方法只能一次插入一行数据.INSERTINTOtable[(column[,column...])]VALUES(value[,value...]);插入新行–插入包含每一个列值的新行.–按缺省顺序列出表中所有的列值.–列出INSERT子句中所有的列.–日期值和字符值要用单引号括起来.SQLINSERTINTOdept(deptno,dname,loc)2VALUES(50,'DEVELOPMENT','DETROIT');1rowcreated.插入带有空值的行–省略的方法:从列的链表忽略有空值的列.SQLINSERTINTOdept(deptno,dname)2VALUES(60,'MIS');1rowcreated.•明确的方法:指定NULL关键字.SQLINSERTINTOdept2VALUES(70,'FINANCE',NULL);1rowcreated.插入特殊的值SYSDATE函数取出当前的日期的时间.SQLINSERTINTOemp(empno,ename,job,2mgr,hiredate,sal,comm,3deptno)4VALUES(7196,'GREEN','SALESMAN',57782,SYSDATE,2000,NULL,610);1rowcreated.插入特殊的日期值–增加一个新的员工.SQLINSERTINTOemp2VALUES(2296,'AROMANO','SALESMAN',7782,3TO_DATE('FEB3,1997','MONDD,YYYY'),41300,NULL,10);1rowcreated.•检验结果.EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO-----------------------------------------------2296AROMANOSALESMAN778203-FEB-97130010从另一个表中拷贝行–创建带有子查询的INSERT语句。––不要使用VALUES子句.–子查询中的列要与INSERT子句中的列相匹配.SQLINSERTINTOmanagers(id,name,salary,hiredate)2SELECTempno,ename,sal,hiredate3FROMemp4WHEREjob='MANAGER';3rowscreated.改变一个表中的数据EMP“…更改EMP表中的一行数据…”EMPEMPNOENAMEJOB...DEPTNO7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20...20EMPNOENAMEJOB...DEPTNO7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20...UPDATE语句–使用UPDATE语句更改现有的行.–如果需要,可以一次更改多行.UPDATEtableSETcolumn=value[,column=value,...][WHEREcondition];更改表中的行–使用WHERE子句来指定要修改的行.如果忽略WHERE子句,那么句子中所有的值都将被更改.SQLUPDATEemp2SETdeptno=203WHEREempno=7782;1rowupdated.SQLUPDATEemployee2SETdeptno=20;14rowsupdated.用多列子查询进行修改SQLUPDATEemp2SET(job,deptno)=3(SELECTjob,deptno4FROMemp5WHEREempno=7499)6WHEREempno=7698;1rowupdated.更改第7698号雇员的工作和部门,以与第7499号雇员进行匹配.对基于另一个表的行进行更改在UPDATE语句中,使用子查询来更进行更改,更改的数据与其它表中的数据有关.SQLUPDATEemployee2SETdeptno=(SELECTdeptno3FROMemp4WHEREempno=7788)5WHEREjob=(SELECTjob6FROMemp7WHEREempno=7788);2rowsupdated.“…从一个表中删去一行…”从一个表中移去一行DEPTDEPTNODNAMELOC------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON50DEVELOPMENTDETROIT60MIS...DEPTDEPTNODNAMELOC------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON60MIS...DELETE语句可以使用DELETE语句从表中删去现存的行.DELETE[FROM]table[WHEREcondition];–使用WHERE子句以指定哪些行应当被删去.–如果忽略WHERE子句,那么表中所有的数据.从一个表中删去行SQLDELETEFROMdepartment2WHEREdname='DEVELOPMENT';1rowdeleted.SQLDELETEFROMdepartment;4rowsdeleted.参照另一个表来删除行使用子查询,使得DELETE语句能从另一个表中删除某些行.SQLDELETEFROMemployee2WHEREdeptno=3(SELECTdeptno4FROMdept5WHEREdname='SALES');6rowsdeleted.数据库事务要么全部完成,要么全部废弃的操作集合。一个事务可以包含下列语句:–对数据做出一致性修改的DML语句。–一个DDL语句–一个DCL语句数据库事务–以第一个可执行的SQL语句开始。–以下列情况结束:执行COMMIT或者ROLLBACK语句执行DDL或者DCL语句用户退出系统崩溃COMMIT和ROLLBACK语句的优点–保证数据的一致性–在数据永久改变之前,检查数据的改变–对逻辑相关的操作进行分组DELETE控制事务事务保存点A回滚到保存点BDELETE保存点B提交INSERTUPDATE回滚到保存点AINSERTUPDATEINSERT回滚INSERT–在下列环境下,一个自动提交发生:处理DDL语句处理DCL语句从SQL*Plus中退出,而没有明确指定COMMIT或者ROLLBACK–当SQL*Plus中断或者系统失败时自动进行回滚.隐式事务处理在COMMIT或ROLLBACK之前的数据状态–之前的状态可以被恢复.–当前的用户可以用SELECT语句来查看DML操作后的结果.–其它用户看不到当前用户使用DML语句进行数据操纵的结果.–产生改变的数据被加锁,其它用户不能改变这些行.在COMMIT之后的数据状态–数据的改变将被永久的反应到数据库中去.–事务前面的数据状态将被永久地丢弃.–所有的用户可以查看结果.–加在产生改变的行上的数据被解锁;这些行对于其他用户是可用的.–所有的保存点被释放.提交数据SQLUPDATEemp2SETdeptno=103WHEREempno=7782;1rowupdated.–产生改变.•Committhechanges.SQLCOMMIT;Commitcomplete.回滚后的数据状态使用ROLLBACK语句丢弃所有的数据改变.–数据的改变失效.–事务之前的数据状态改变.–在改变行的上的锁被释放.SQLDELETEFROMemployee;14rowsdeleted.SQLROLLBACK;Rollbackcomplete.回滚到某个标记–使用SAVEPOINT语句在当前事务中产生一个标记.–使用ROLLBACKTOSAVEPOINT语句回滚到那个标记.SQLUPDATE...SQLSAVEPOINTupdate_done;Savepointcreated.SQLINSERT...SQLROLLBACKTOupdate_done;Rollbackcomplete.锁定Oracle锁:–在并发事务之间,阻止可能产生的破坏性相互影响。–不需要用户进行干预,自动使用。–在事务期间使用,事务结束时释放。–有两种基本的模式:排它共享总结描述向表中增加一个新的行更改表中现存的行从表中删除现存的行提交一个事务允许回滚到保存点标记废弃所有未提交的改变语句INSERTUPDATEDELETECOMMITSAVEPOINTROLLBACK

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功