oracle32dml、事務(wù)和鎖、序列_第1頁
oracle32dml、事務(wù)和鎖、序列_第2頁
oracle32dml、事務(wù)和鎖、序列_第3頁
oracle32dml、事務(wù)和鎖、序列_第4頁
oracle32dml、事務(wù)和鎖、序列_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、DML、事務(wù)和鎖、序列1 DML ( Data Manipulation Language) 數(shù)據(jù)操作語言插入語句:Insert into Value更新語句:Update Set Where刪除語句:Delete From2插入數(shù)據(jù):(INSERT)單行記錄插入: INSERT INTO 表名 VALUES(對(duì)應(yīng)所有的字段值);INSERT INTO 表名(字段名列表,)VALUES(對(duì)應(yīng)字段的值);多行記錄插入:(表名1和表名2對(duì)應(yīng)的字段的數(shù)據(jù)類型要相符)INSERT INTO 表名1 SELECT * FROM 表名2;INSERT INTO 表名1 (字段名列表,)(查詢語句);-其中

2、的查詢語句所查出來的字段個(gè)數(shù)和字段類型必須和表名1中的(字段名列表,)相同(創(chuàng)建表)表間數(shù)據(jù)復(fù)制示例:多行記錄插入INSERT INTO dept SELECT deptno+1,dname|#,#|loc|# FROM dept;INSERT INTO dept(deptno,dname) ( SELECT SUBSTR(empno,2,1),XIAN FROM emp GROUP BY SUBSTR(empno,2,1) )表間數(shù)據(jù)復(fù)制:(創(chuàng)建表)思考:(dept表中的約束是否會(huì)在dept1中創(chuàng)建)CREATE TABLE dept1 AS (SELECT * FROM dept WHER

3、E deptno=40);3更新數(shù)據(jù):(UPDATE)例題 1:將部門表中在地址是xian的改為西安UPDATE dept SET loc=西安 WHERE loc=xian;例題 2:將員工表中每個(gè)員工薪水增加111,傭金增加50UPDATE emp SET sal=sal+111,comm=NVL(comm,0)+50;例題 3:將員工表中沒有傭金的員工薪水增加201,有傭金的員工傭金增加一個(gè)百分點(diǎn)(如果傭金為0,則增加101)UPDATE emp SET sal=sal+201 WHERE comm IS NULL;UPDATE emp SET comm=comm*1.01 WHERE

4、comm IS NOT NULL;UPDATE emp SET comm=101 WHERE comm=0;思考:請(qǐng)只用一條UPDATE語句完成思考:將10號(hào)部門的員工薪水增加54,20號(hào)部門的員工薪水增加31,其它部門的員工薪水不變,使用一條UPDATE完成.4刪除數(shù)據(jù):(DELETE)刪除部門表中部門所在地為NULL部門DELETE FROM dept WHERE loc IS NULL;5數(shù)據(jù)庫的事務(wù):一組SQL語句,是一個(gè)邏輯工作單元。在執(zhí)行時(shí),應(yīng)該永久的修改數(shù)據(jù)庫的內(nèi)容,或者作為一個(gè)整體修改數(shù)據(jù)庫內(nèi)容。 A:事物的提交和回滾 操作語句; COMMIT/ROLLBACK B:事務(wù)的開始

5、和結(jié)束 開始事務(wù): 連接到數(shù)據(jù)庫上,并執(zhí)行第一條DML語句,再輸入另外一條DML語句結(jié)束事務(wù): 執(zhí)行COMMIT/ROLLBACK語句 執(zhí)行一條DDL語句(CREATE TABLE),系統(tǒng)自動(dòng)執(zhí)行COMMIT語句 執(zhí)行一條DCL語句(GRANT),系統(tǒng)自動(dòng)執(zhí)行COMMIT語句 退出/斷開于數(shù)據(jù)庫的連接,自動(dòng)執(zhí)行COMMIT語句,除被強(qiáng)行中止,執(zhí)行ROLLBACK要求: 在事務(wù)結(jié)束時(shí),一定要顯示的執(zhí)行COMMIT/ROLLBACK語句 6數(shù)據(jù)庫的事務(wù)C:保存點(diǎn)(savepoint)在事務(wù)的任何地方都可以設(shè)置保存點(diǎn),可以將修改保存到保存點(diǎn)處。這樣可以防止保存點(diǎn)后的誤操作。D:事務(wù)的四個(gè)特性,通常稱

6、為ACID特性: 原子性(atomicity):一個(gè)事務(wù)中包含的所有SQL語句是一個(gè)不可分割的單元,要么都做,要么都不做。 一致性(consistency):事務(wù)開始時(shí),數(shù)據(jù)庫中的數(shù)據(jù)是一致的,事務(wù)結(jié)束時(shí),數(shù)據(jù)也是一致的。 隔離性(isolation):多個(gè)并發(fā)的事務(wù)可以獨(dú)立運(yùn)行,而不能相互干擾。一個(gè)事務(wù)修改的數(shù)據(jù)在未提交前,其它事務(wù)看不到它所做的更改。 持久性(durability):事務(wù)提交后,數(shù)據(jù)庫的變化就會(huì)永久的保留下來。并發(fā)事務(wù):多個(gè)事務(wù)對(duì)同一表進(jìn)行操作,直到執(zhí)行COMMIT語句才會(huì)產(chǎn)生影響三個(gè)事務(wù)控制命令 COMMITSAVEPOINTROLLBACK to 7鎖的概念鎖是防止訪問

7、同一資源的事務(wù)之間進(jìn)行相互破壞的機(jī)制。鎖用于保護(hù)將要被或正在被修改的數(shù)據(jù),修改表修改表拒絕訪問Toy_IDNamePriceT001Barbie20T002GI Joe45直到提交或回滾了事務(wù)之后,其他用戶才可以更新數(shù)據(jù)8鎖的優(yōu)點(diǎn)一致性 - 一次只允許一個(gè)用戶修改數(shù)據(jù)完整性 - 為所有用戶提供正確的數(shù)據(jù)。如果一個(gè)用戶進(jìn)行了修改并保存,所做的修改將反映給所有用戶Toy_IDNamePriceT001Barbie20T002GI Joe45并行性 允許多個(gè)用戶訪問同一數(shù)據(jù)修改表中的數(shù)據(jù)查看表中的數(shù)據(jù)允許訪問鎖用來解決數(shù)據(jù)一致性、完整性和并發(fā)性相關(guān)的問題。9表級(jí)鎖行級(jí)鎖DML操作可以在兩個(gè)不同級(jí)別上

8、獲取數(shù)據(jù)鎖:為指定行和為整個(gè)表。數(shù)據(jù)鎖行鎖鎖住選中行表鎖鎖定整個(gè)表10行級(jí)鎖Toy_IDNamePriceT001Barbie20T002GI Joe45更新 T002 行更新 T001 行行被鎖定行級(jí)鎖是一種排他鎖,行鎖提供可能最好的顆粒鎖,因此提供最可能的并發(fā)性和吞吐量。在使用DML語句時(shí) ,Oracle總是自動(dòng)獲取行鎖:允許訪問11表級(jí)鎖Toy_IDNamePriceT001Barbie20T002GI Joe45修改表中的行 更新表 拒絕訪問,限制其他用戶對(duì)表的訪問。SELECT FOR UPDATE OF columns WAIT n | NOWAIT;12死鎖當(dāng)兩個(gè)事務(wù)相互等待對(duì)方

9、釋放資源時(shí),就會(huì)形成死鎖Oracle會(huì)自動(dòng)檢測(cè)死鎖,并通過結(jié)束其中的一個(gè)事務(wù)來解決死鎖右邊是一個(gè)死鎖的例子T1T2lock (D1)時(shí)間lock (D2)lock (D2)lock (D1)等待等待13Oracle數(shù)據(jù)庫對(duì)象 序列序列 定義:按照設(shè)定的規(guī)則自動(dòng)產(chǎn)生數(shù)據(jù)的方案。語法: CREATE SEQUENCE 序列名 INCREMENT BY 增長值 | START WITH 開始值 MAXVALUE 指定最大值 | NOMAXVALUE(1027或-1) MINVALUE 最小值 | NOMINVALUE(1或-1026)CACHE n(預(yù)分配n個(gè)序列號(hào)保存在內(nèi)存中) | NOCACHECYCLE | NOCYCLE(默認(rèn)) 序列的使用: SELECT 序列名.NEXTVAL FROM DUAL; 14可使用偽列訪問值 CURRVAL返回序列的當(dāng)前值 NEXTVAL返回序列首次引用時(shí)的起始值 以后對(duì) nextval 的引用將使用 INCREMENT BY 子句增加序列值,并返回新值 刪除序列: DROP SEQUENCE 序列名修改

溫馨提示

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

評(píng)論

0/150

提交評(píng)論