數據庫0326知識盲區總結

1.請簡述兩段鎖協議的內容
答:兩段鎖協議是指每個事務的執行可以分爲兩個階段:生長階段(加鎖階段)和衰退階段(解鎖階段)。
加鎖階段:在該階段可以進行加鎖操作。對任何數據進行讀操作之前,要申請並獲得S鎖,在進行寫操作之前要申請並獲得X鎖。加鎖不成功,則事務進入等待狀態,直到加鎖成功才繼續執行。排它鎖(X鎖)和共享鎖(S鎖).所謂X鎖,是事務T對數據A加上X鎖時,只允許事務T讀取和修改數據A,若事務T對數據對象A加了S鎖,則T就可以對A進行讀取,但不能進行更新(S鎖因此又稱爲讀鎖),
解鎖階段:當事務釋放了一個封鎖以後,事務進入解鎖階段,在該階段只能進行解鎖操作不能再進行加鎖操作。
兩段封鎖法可以這樣來實現:事務開始後就處於加鎖階段,一直執行到rollback和commit之前都是加鎖階段。rollback和commit使事務進入解鎖階段,即在rollback和commit模塊中的DBMS釋放所有封鎖。

二、SQL(共4小題,每小題5分,共20分)

設某公司的信息管理系統中有三個基本表:
職工表E(E#,ENAME,AGE,SEX, ECITY),其屬性是職工編號、姓名、年齡、性別和籍貫。
部門表C(C#,CNAME,TELE),其屬性是部門編號、部門名稱和電話號碼
工作表W(E#,C#,SALARY),其屬性是職工編號、部門編號和工資。

用SQL語言完成如下查詢:(20分)
(1)用SQL語言建立W表,要求滿足以下完整性約束條件的定義:
① 定義關係的主碼,② 定義參照完整性,③ SALARY>=1000。
create table W
(
E# char(9) foreign key references E(E#),
C# char(15) foreign key references C(C#),
SALARY samllmoney,
check(salary>=1000),
primary key(E#,C#)
);

(2)查詢年齡大於25歲的女職工的職工編號。
select E# from E
where age>25 and sex=‘女’;

(3)爲每個部門中超過50歲的女職工加薪1000元。
update W
set salary=salary+1000
where E#=(select E# from E where age>50 and sex=‘女’ );

(4)請爲女職工信息建立一個視圖E_W,屬性包括職工編號E#, 職工姓名ENAME, 所在部門編號C#,所在部門名稱CNAME,工資SALARY。
create table E_W
As
select E#,ENAME,C#,CNAME,SALARY
from E,C,W
where E.E#=W.E# and C.C#=W.C# and sex=‘女’;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章