您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle数据库-SQL+PLSQL-Less08-操作数据-DML语句
1表,emp01的表结构与emp表结构保持一致2.更改7698号雇员变更到与7499号雇员相同的部门,并且职位也一样3.做一个保持点的实例3数据操作语言–DML语句在下列情况下发生:•往一个表中增加新行•更改一个表中现有的行•从一个表中删除掉现有的行–一个事务由一组构成一个逻辑操作的DML语句组成.5语句基本语法–使用INSERT语句向表中增加新行.–使用这种方法只能一次插入一行数据.INSERTINTOtable[(column[,column...])]VALUES(value[,value...]);6“…向DEPT表中增加新行…”50DEVELOPMENTDETROIT7插入新行–插入包含每一个列值的新行.–按缺省顺序列出表中所有的列值.–列出INSERT子句中所有的列.–日期值和字符值要用单引号括起来.SQLINSERTINTOdept(deptno,dname,loc)2VALUES(50,'DEVELOPMENT','DETROIT');1rowcreated.8插入带有空值的行–省略的方法:从列的链表忽略有空值的列.SQLINSERTINTOdept(deptno,dname)2VALUES(60,'MIS');1rowcreated.SQLINSERTINTOdept2VALUES(70,'FINANCE',NULL);1rowcreated.–明确的方法:指定NULL关键字.9(empno,ename,job,2mgr,hiredate,sal,comm,3deptno)4VALUES(7196,'GREEN','SALESMAN',57782,SYSDATE,2000,NULL,610);1rowcreated.10从另一个表中拷贝行–创建带有子查询的INSERT语句。––不要使用VALUES子句.–子查询中的列要与INSERT子句中的列相匹配.SQLINSERTINTOmanagers(id,name,salary,hiredate)2SELECTempno,ename,sal,hiredate3FROMemp4WHEREjob='MANAGER';3rowscreated.11语句–使用UPDATE语句更改现有的行.–如果需要,可以一次更改多行.UPDATEtableSETcolumn=value[,column=value,...][WHEREcondition];12“…更改EMP表中的一行数据…”EMPEMPNOENAMEJOB...DEPTNO7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20...20EMPNOENAMEJOB...DEPTNO7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20...13更改表中的行–使用WHERE子句来指定要修改的行.–如果忽略WHERE子句,那么句子中所有的值都将被更改.SQLUPDATEemp2SETdeptno=203WHEREempno=7782;1rowupdated.SQLUPDATEemployee2SETdeptno=20;14rowsupdated.14用多列子查询进行修改•更改第7698号雇员的工作和部门,以与第7499号雇员进行匹配.SQLUPDATEemp2SET(job,deptno)=3(SELECTjob,deptno4FROMemp5WHEREempno=7499)6WHEREempno=7698;1rowupdated.15对基于另一个表的行进行更改•在UPDATE语句中,使用子查询来更进行更改,更改的数据与其它表中的数据有关.SQLUPDATEemployee2SETdeptno=(SELECTdeptno3FROMemp4WHEREempno=7788)5WHEREjob=(SELECTjob6FROMemp7WHEREempno=7788);2rowsupdated.16语句•可以使用DELETE语句从表中删去现存的行.DELETE[FROM]table[WHEREcondition];17“…从一个表中删去一行…”从一个表中移去一行DEPTDEPTNODNAMELOC------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON50DEVELOPMENTDETROIT60MIS...DEPTDEPTNODNAMELOC------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON60MIS...18从一个表中删去行–使用WHERE子句以指定哪些行应当被删去.–如果忽略WHERE子句,那么表中所有的数据.SQLDELETEFROMdepartment2WHEREdname='DEVELOPMENT';1rowdeleted.SQLDELETEFROMdepartment;4rowsdeleted.19数据库事务•要么全部完成,要么全部废弃的操作集合。•一个事务可以包含下列语句:–对数据做出一致性修改的DML语句。–一个DDL语句–一个DCL语句20数据库事务–以第一个可执行的SQL语句开始。–以下列情况结束:•执行COMMIT或者ROLLBACK语句•执行DDL或者DCL语句,事务隐式提交•用户正常退出,事务隐式提交•系统崩溃,事务隐式回滚21控制事务•事务保存点A回滚到保存点BDELETE保存点B提交INSERTUPDATE回滚到保存点AINSERTUPDATEINSERT回滚INSERT22之后的数据状态–数据的改变将被永久的反应到数据库中去.–事务前面的数据状态将被永久地丢弃.–所有的用户可以查看结果.–加在产生改变的行上的数据被解锁;这些行对于其他用户是可用的.–所有的保存点被释放.23提交数据–产生改变.SQLUPDATEemp2SETdeptno=103WHEREempno=7782;1rowupdated.SQLCOMMIT;Commitcomplete.–提交事务24回滚后的数据状态•使用ROLLBACK语句丢弃所有的数据改变.–数据的改变失效.–事务之前的数据状态改变.–在改变行的上的锁被释放.SQLDELETEFROMemployee;14rowsdeleted.SQLROLLBACK;Rollbackcomplete.25回滚到某个标记–使用SAVEPOINT语句在当前事务中产生一个标记.–使用ROLLBACKTOSAVEPOINT语句回滚到那个标记.SQLUPDATE...SQLSAVEPOINTupdate_done;Savepointcreated.SQLINSERT...SQLROLLBACKTOupdate_done;Rollbackcomplete.26锁定•Oracle锁:–在并发事务之间,阻止可能产生的破坏性相互影响。–不需要用户进行干预,自动使用。–在事务期间使用,事务结束时释放。–有两种基本的模式:•排它•共享27表,emp01的表结构与emp表结构保持一致SQLcreatetableemp01asselect*fromempwheredeptno=10;Tablecreated.SQLselectempno,ename,job,sal,deptnofromemp01;EMPNOENAMEJOBSALDEPTNO---------------------------------------------------------------------------------------7782CLARKMANAGER2450107839KINGPRESIDENT5000107934MILLERCLERK130010练习案例28号雇员相同的部门,并且职位也一样SQLUPDATEempSET(job,deptno)=(SELECTjob,deptnoFROMempWHEREempno=7499)WHEREempno=7698;1rowupdated.练习案例29=20WHEREempno=7782;SQLSAVEPOINTupdate_done;Savepointcreated.SQLINSERTINTOempVALUES(2296,'AROMANO','SALESMAN',7782,TO_DATE('FEB3,1997','MONDD,YYYY'),1300,NULL,10);SQLROLLBACKTOupdate_done;Rollbackcomplete.练习案例
本文标题:Oracle数据库-SQL+PLSQL-Less08-操作数据-DML语句
链接地址:https://www.777doc.com/doc-7534787 .html