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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

八.操作數(shù)據(jù)-DML語句目標(biāo)結(jié)束本節(jié)課后,應(yīng)當(dāng)達(dá)到如下目標(biāo):描述每個DML語句向一個表中插入數(shù)據(jù)更新一個表中數(shù)據(jù)行從一個表中刪除行控制事務(wù)數(shù)據(jù)操作語言DML語句在下列情況下發(fā)生:往一個表中增加新行更改一個表中現(xiàn)有的行從一個表中刪除掉現(xiàn)有的行一個事務(wù)由一組構(gòu)成一個邏輯操作的DML語句組成

DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON

新行50 DEVELOPMENT DETROIT

DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON

50 DEVELOPMENT DETROIT向一個表中增加新行“…向DEPT表中增加新行…”INSERTINTO table[(column[,column...])]VALUES (value[,value...]);INSERT語句使用INSERT語句向表中增加新行.

使用這種方法只能一次插入一行數(shù)據(jù).SQL>INSERTINTO dept(deptno,dname,loc)2VALUES (50,'DEVELOPMENT','DETROIT');1rowcreated.插入新行插入包含每一個列值的新行.按缺省順序列出表中所有的列值.列出INSERT子句中所有的列,這是可選的.

日期值和字符值要用單引號括起來.SQL>INSERTINTO dept(deptno,dname)2VALUES (60,'MIS');1rowcreated.SQL>INSERTINTO dept2VALUES (70,'FINANCE',NULL);1rowcreated.插入帶有空值的行省略的方法:從列的鏈表忽略有空值的列明確的方法:指定NULL關(guān)鍵字SQL>INSERTINTO emp(empno,ename,job,2 mgr,hiredate,sal,comm,3 deptno)4VALUES (7196,'GREEN','SALESMAN',5 7782,SYSDATE,2000,NULL,6 10);1rowcreated.插入特殊的值SYSDATE函數(shù)取出當(dāng)前的日期的時間.SQL>INSERTINTOemp2VALUES(2296,'AROMANO','SALESMAN',7782,3 TO_DATE('03-2月1997','DD-MON,YYYY'),4 1300,NULL,10);1rowcreated.EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO-----------------------------------------------2296AROMANOSALESMAN778203-2月-97130010插入特殊的日期值增加一個新的員工檢驗結(jié)果.SQL>INSERTINTOmanagers(id,name,salary,hiredate)2 SELECT empno,ename,sal,hiredate3 FROMemp4 WHERE job='MANAGER';3rowscreated.從另一個表中拷貝行創(chuàng)建帶有子查詢的INSERT語句。

不要使用VALUES子句.子查詢中的列要與INSERT子句中的列相匹配.通過使用用SQL*Plus的替代參參數(shù)創(chuàng)建建交互腳腳本SQL>INSERTINTO dept(deptno,dname,loc)2VALUES(&department_id,3'&department_name','&location');Entervaluefordepartment_id:80Entervaluefordepartment_name:EDUCATIONEntervalueforlocation:ATLANTA1rowcreated.替代變量量插入值值INSERTINTO(SELECTemployee_id,last_name,email,hire_date,job_id,salary,department_idFROMemployeesWHEREdepartment_id=50)VALUES(99999,'Taylor','DTAYLOR',TO_DATE('07-7月-99','DD-MON-RR'),'ST_CLERK',5000,50);1rowcreated.在INSERT語句中使用用子查詢EMP“…更改EMP表中的一行數(shù)據(jù)…”EMPEMPNO ENAMEJOB...DEPTNO7839KING PRESIDENT107698BLAKE MANAGER307782CLARK MANAGER107566JONES MANAGER20...20EMPNO ENAMEJOB...DEPTNO7839KING PRESIDENT107698BLAKE MANAGER307782CLARK MANAGER107566JONES MANAGER20...改變一個表表中的數(shù)據(jù)據(jù)UPDATEtableSETcolumn=value[,column=value,...][WHEREcondition];UPDATE語句使用UPDATE語句更改現(xiàn)現(xiàn)有的行.如果需要,,可以一次次更改多行行.SQL>UPDATEemp2SETdeptno=203WHEREempno=7782;1rowupdated.SQL>UPDATEemployee2SETdeptno=20;14rowsupdated.更改表中的的行使用WHERE子句來指定定要修改的的行.如果忽略WHERE子句,那么么句子中所所有的值都都將被更改改.SQL>UPDATEemp2SET(job,deptno)=3(SELECTjob,deptno4FROMemp5WHEREempno=7499)6WHEREempno=7698;1rowupdated.用多列子查查詢進(jìn)行修修改更改7698號雇員的工工作和部門門,與第7499號雇員進(jìn)行行匹配.SQL>UPDATEemployee2 SET deptno=(SELECTdeptno3FROMemp4WHERE empno=7788)5 WHEREjob=(SELECT job6FROMemp7WHERE empno=7788);2rowsupdated.使用子查詢詢更新兩列列在UPDATE語句中,使使用子查詢詢來進(jìn)行更更改,更改改的數(shù)據(jù)與與其它表中中的數(shù)據(jù)有有關(guān).UPDATEemployeesSETjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id=205),salary=(SELECTsalaryFROMemployeesWHEREemployee_id=205)WHEREemployee_id=114;1rowupdated.使用子查詢詢更新兩列列將員工號為為114的工作崗位位和工資改改成與員工工205相同的“…從一個表中刪去一行…”DEPTDEPTNODNAMELOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCHDALLAS30 SALESCHICAGO40 OPERATIONS BOSTON50DEVELOPMENTDETROIT60 MIS...

DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON60 MIS ...從一個表中中移去一行行DELETE[FROM]table[WHEREcondition];DELETE語句可以使用DELETE語句從表中中刪去現(xiàn)存存的行.SQL>DELETEFROMdepartment2WHEREdname='DEVELOPMENT';1rowdeleted.SQL>DELETEFROMdepartment;4rowsdeleted.從一個表中中刪去行使用WHERE子句以指定定哪些行應(yīng)應(yīng)當(dāng)被刪去去.如果忽略WHERE子句,那么么表中所有有的數(shù)據(jù).SQL>DELETEFROMemployee2WHEREdeptno=3(SELECTdeptno4FROMdept5WHEREdname='SALES');6rowsdeleted.參照另一個個表來刪除除行使用子查詢詢,使得DELETE語句能從另另一個表中中刪除某些些行.TRUNCATE語句刪除表中的的所有數(shù)據(jù)據(jù),保留表表結(jié)構(gòu)是DDL語句,不是是DML語句Syntax:Example:TRUNCATETABLEtable_name;TRUNCATETABLEcopy_emp;數(shù)據(jù)庫事務(wù)務(wù)要么全部完完成,要么么全部廢棄棄的操作集集合。一個事務(wù)可可以包含下下列語句:對數(shù)據(jù)做出出一致性修修改的DML語句。一個DDL語句一個DCL語句數(shù)據(jù)庫事務(wù)務(wù)以第一個可可執(zhí)行的SQL語句開始。。以下列情況況結(jié)束:執(zhí)行COMMIT或者ROLLBACK語句執(zhí)行DDL或者DCL語句用戶退出系統(tǒng)崩潰保證數(shù)據(jù)的的一致性在數(shù)據(jù)永久久改變之前前,檢查數(shù)數(shù)據(jù)的改變變對邏輯相關(guān)關(guān)的操作進(jìn)進(jìn)行分組COMMIT和ROLLBACK語句的優(yōu)點點隱式事務(wù)處處理在下列環(huán)境境下,一個個自動提交交發(fā)生:處理DDL語句處理DCL語句從SQL*Plus中退出,而沒有明確確指定COMMIT或者ROLLBACK當(dāng)SQL*Plus中斷或者系系統(tǒng)失敗時時自動進(jìn)行行回滾.之前的狀態(tài)態(tài)可以被恢恢復(fù).當(dāng)前的用戶戶可以用SELECT語句來查看看DML操作后的結(jié)結(jié)果.其它用戶看看不到當(dāng)前前用戶使用用DML語句進(jìn)行數(shù)數(shù)據(jù)操縱的的結(jié)果.產(chǎn)生改變的的數(shù)據(jù)被加加鎖,其它它用戶不能能改變這些些行.COMMIT或ROLLBACK之前數(shù)據(jù)狀狀態(tài)在COMMIT之后的數(shù)據(jù)據(jù)狀態(tài)數(shù)據(jù)的改變變將被永久久的反應(yīng)到到數(shù)據(jù)庫中中去.事務(wù)前面的的數(shù)據(jù)狀態(tài)態(tài)將被永久久地丟棄.所有的用戶戶可以查看看結(jié)果.加在產(chǎn)生改改變的行上上的數(shù)據(jù)被被解鎖;這些行對于于其他用戶戶是可用的的.所有的保存存點被釋放放.SQL>UPDATEemp2SETdeptno=103WHEREempno=7782;1rowupdated.SQL>COMMIT;Commitcomplete.提交數(shù)據(jù)產(chǎn)生改變.CommitthechangesSQL>DELETEFROMemployee;14rowsdeleted.SQL>ROLLBACK;Rollbackcomplete.回滾后的數(shù)數(shù)據(jù)狀態(tài)使用ROLLBACK語句丟棄所所有的數(shù)據(jù)據(jù)改變.數(shù)據(jù)的改變變失效.事務(wù)之前的的數(shù)據(jù)狀態(tài)態(tài)改變.在改變行的的上的鎖被被

溫馨提示

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

最新文檔

評論

0/150

提交評論