oracle操作數據-DML語句_第1頁
oracle操作數據-DML語句_第2頁
oracle操作數據-DML語句_第3頁
oracle操作數據-DML語句_第4頁
oracle操作數據-DML語句_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、八.操作數據-DML語句目標結束本節(jié)節(jié)課后,應當達達到如下下目標:描述每個個DML語句向一個表表中插入入數據更新一個個表中數數據行從一個表表中刪除除行控制事務務數據操作作語言DML語句在下下列情況況下發(fā)生生:往一個表表中增加加新行更改一個個表中現現有的行行從一個表表中刪除除掉現有有的行一個事務務由一組組構成一一個邏輯輯操作的的DML語句組成成 DEPTDEPTNODNAMELOC-10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON 新行 50DEVELOPMENTDETROIT DEPTDEPTNODNAMEL

2、OC-10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON 50DEVELOPMENTDETROIT向一個表表中增加加新行“向DEPT表中增加新行行”INSERTINTOtable(column, column.)VALUES(value, value.);INSERT語句使用INSERT語句向表表中增加加新行.使用這種種方法只只能一次次插入一一行數據據.SQL INSERTINTOdept(deptno,dname, loc)2VALUES(50,DEVELOPMENT,DETROIT);1 rowcreate

3、d.插入新行行插入包含含每一個個列值的的新行.按缺省順順序列出出表中所所有的列列值.列出INSERT子句中所所有的列列,這是是可選的的.日期值和和字符值值要用單單引號括括起來.SQL INSERTINTOdept(deptno,dname)2VALUES(60,MIS);1 rowcreated.SQL INSERTINTOdept2VALUES(70,FINANCE,NULL);1 rowcreated.插入帶有有空值的的行省略的方方法:從列的鏈鏈表忽略略有空值值的列明確的方方法:指定NULL關鍵字SQL INSERTINTOemp(empno, ename,job,2mgr,hiredat

4、e,sal,comm,3deptno)4VALUES(7196,GREEN,SALESMAN,57782,SYSDATE,2000,NULL,610);1 rowcreated.插入特殊殊的值SYSDATE函數取出出當前的的日期的的時間.SQL INSERTINTO emp2VALUES(2296,AROMANO,SALESMAN,7782,3TO_DATE(03-2月1997,DD-MON,YYYY),41300,NULL,10);1 rowcreated.EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO- - - -2296 AROMANOSALESMAN7782

5、03-2月-97130010插入特殊殊的日期期值增加一個個新的員員工檢驗結果果.SQL INSERTINTO managers(id,name,salary, hiredate)2SELECTempno,ename,sal,hiredate3FROMemp4WHEREjob =MANAGER;3 rowscreated.從另一個個表中拷拷貝行創(chuàng)建帶有有子查詢詢的INSERT語句。不要使用用VALUES子句.子查詢中中的列要要與INSERT子句中的的列相匹匹配.通過使用用SQL*Plus的替代參參數創(chuàng)建建交互腳腳本SQL INSERTINTOdept(deptno,dname, loc)2VAL

6、UES(&department_id,3&department_name, &location);Entervaluefordepartment_id:80Entervaluefordepartment_name:EDUCATIONEntervalueforlocation:ATLANTA1 rowcreated.替代變量量插入值值INSERTINTO(SELECT employee_id,last_name,email,hire_date,job_id, salary,department_idFROMemployeesWHEREdepartment_id= 50)VALUES(99999,

7、Taylor,DTAYLOR,TO_DATE(07-7月-99,DD-MON-RR),ST_CLERK,5000,50);1 rowcreated.在INSERT語句中使使用子查查詢 EMP“更改EMP 表中的一行數據”EMPEMPNOENAMEJOB.DEPTNO7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20.20EMPNOENAMEJOB.DEPTNO7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER

8、20.改變一個個表中的的數據UPDATEtableSETcolumn=value,column=value,.WHEREcondition;UPDATE語句使用UPDATE語句更改改現有的的行.如果需要要,可以以一次更更改多行行.SQL UPDATEemp2SETdeptno= 203WHEREempno =7782;1 rowupdated.SQL UPDATEemployee2SETdeptno= 20;14rows updated.更改表中中的行使用WHERE子句來指指定要修修改的行行.如果忽略略WHERE子句,那那么句子子中所有有的值都都將被更更改.SQL UPDATEemp2SET(

9、job, deptno)=3(SELECTjob, deptno4FROMemp5WHEREempno =7499)6WHEREempno =7698;1 rowupdated.用多列子子查詢進進行修改改更改7698號雇員的的工作和和部門,與第7499號雇員進進行匹配配.SQLUPDATEemployee2SETdeptno=(SELECTdeptno3FROMemp4WHEREempno=7788)5WHEREjob=(SELECTjob6FROMemp7WHEREempno=7788);2 rowsupdated.使用子查查詢更新新兩列在UPDATE語句中,使用子子查詢來來進行更更改,更更

10、改的數數據與其其它表中中的數據據有關.UPDATEemployeesSETjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id =205),salary=(SELECTsalaryFROMemployeesWHEREemployee_id =205)WHEREemployee_id=114;1 rowupdated.使用子查查詢更新新兩列將員工號號為114的工作崗崗位和工工資改成成與員工工205相同的 “從一個表中刪去一行”DEPTDEPTNODNAMELOC-10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCH

11、ICAGO40OPERATIONSBOSTON50DEVELOPMENTDETROIT60MIS. DEPT DEPTNO DNAME LOC - - 10ACCOUNTINGNEW YORK 20RESEARCHDALLAS 30SALESCHICAGO 40OPERATIONSBOSTON 60MIS .從一個表表中移去去一行DELETEFROMtableWHEREcondition;DELETE語句可以使用用DELETE語句從表表中刪去去現存的的行.SQL DELETEFROMdepartment2WHEREdname =DEVELOPMENT;1 rowdeleted.SQL DELE

12、TEFROMdepartment;4 rowsdeleted.從一個表表中刪去去行使用WHERE子句以指指定哪些些行應當當被刪去去.如果忽略略WHERE子句,那那么表中中所有的的數據.SQL DELETEFROMemployee2WHEREdeptno =3(SELECTdeptno4FROMdept5WHEREdname =SALES);6 rowsdeleted.參照另一一個表來來刪除行行使用子查查詢,使使得DELETE語句能從從另一個個表中刪刪除某些些行.TRUNCATE語句刪除表中中的所有有數據,保留表表結構是DDL語句,不不是DML語句Syntax:Example:TRUNCATET

13、ABLEtable_name;TRUNCATETABLEcopy_emp;數據庫事事務要么全部部完成,要么全全部廢棄棄的操作作集合。一個事務務可以包包含下列列語句:對數據做做出一致致性修改改的DML語句。一個DDL語句一個DCL語句數據庫事事務以第一個個可執(zhí)行行的SQL語句開始始。以下列情情況結束束:執(zhí)行COMMIT或者ROLLBACK語句執(zhí)行DDL或者DCL語句用戶退出出系統(tǒng)崩潰潰保證數據據的一致致性在數據永永久改變變之前,檢查數數據的改改變對邏輯相相關的操操作進行行分組COMMIT和ROLLBACK語句的優(yōu)優(yōu)點隱式事務務處理在下列環(huán)環(huán)境下,一個自自動提交交發(fā)生:處理DDL語句處理DCL語句

14、從SQL*Plus中退出,而沒有明明確指定定COMMIT或者ROLLBACK當SQL*Plus中斷或者者系統(tǒng)失失敗時自自動進行行回滾.之前的狀狀態(tài)可以以被恢復復.當前的用用戶可以以用SELECT語句來查查看DML操作后的的結果.其它用戶戶看不到到當前用用戶使用用DML語句進行行數據操操縱的結結果.產生改變變的數據據被加鎖鎖,其它它用戶不不能改變變這些行行.COMMIT或ROLLBACK之前數據據狀態(tài)在COMMIT之后的數數據狀態(tài)態(tài)數據的改改變將被被永久的的反應到到數據庫庫中去.事務前面面的數據據狀態(tài)將將被永久久地丟棄棄.所有的用用戶可以以查看結結果.加在產生生改變的的行上的的數據被被解鎖;這些

15、行對對于其他他用戶是是可用的的.所有的保保存點被被釋放.SQL UPDATEemp2SETdeptno= 103WHEREempno= 7782;1 rowupdated.SQL COMMIT;Commitcomplete.提交數據據產生改變變.Committhe changesSQL DELETEFROMemployee;14rows deleted.SQL ROLLBACK;Rollbackcomplete.回滾后的的數據狀狀態(tài)使用ROLLBACK語句丟棄棄所有的的數據改改變.數據的改改變失效效.事務之前前的數據據狀態(tài)改改變.在改變行行的上的的鎖被釋釋放.控制事物物SAVEPOINTBSAVEPOINTADELETEINSERTUPDATEINSERTCOMMITTimeTransactionROLLBACKtoSAVEPOINTBROLLBACKtoSAVEPOINTAROLLBACKSQL UPDATE.SQL SAVEPOINTupdate_done;Savepointcreated.SQL INSERT.SQL ROLLBACK TO update_done;Rollbackcomplete.回滾到某某個標記記使用SAVEPOINT語句在當當前事務務中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論