【正文】
’ AND 職工號=’E6’4) 檢索出向供應(yīng)商S3發(fā)過訂購單的職工的職工號和倉庫號。SELECT * FROM 職工 WHERE 職工號 NOT IN( SELECT 職工號 FROM 訂購單 WHERE 供應(yīng)商號=’S3’ )6) 檢索出目前沒有任何訂購單的供應(yīng)商信息。SELECT * FROM 供應(yīng)商 WHERE 供應(yīng)商號 IN( SELECT 供應(yīng)商號 FROM 訂購單 WHERE 職工號=’E1’ )AND 供應(yīng)商號 IN( SELECT 供應(yīng)商號 FROM 訂購單 WHERE 職工號=’E3’ )8) 檢索出目前和華通電子公司有業(yè)務(wù)聯(lián)系的每個(gè)職工的工資。SELECT 供應(yīng)商名 FROM 供應(yīng)商 WHERE 供應(yīng)商號 IN(SELECT 供應(yīng)商號 FROM 訂購單 WHERE 職工號 NOT IN(SELECT 職工號 FROM 職工 WHERE 工資 1220))10) 檢索出向S4供應(yīng)商發(fā)出訂購單的倉庫所在的城市。SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市=’上?!? AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應(yīng)商號=’S6’))12) 檢索出在廣州工作并且只向S6供應(yīng)商發(fā)出了訂購單的職工號。SELECT 訂購單號 FROM 訂購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 工資1230) AND 供應(yīng)商號 IN(SELECT 供應(yīng)商號 FROM 供應(yīng)商 WHERE 地址=’北京’)14) 檢索出倉庫的個(gè)數(shù)。SELECT * FROM 倉庫 WHERE 面積=(SELECT MAX(面積) FROM 倉庫)16) 檢索出所有倉庫的平均面積。SELECT AVG(面積) FROM 倉庫 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 職工 WHERE 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應(yīng)商號=’S4’))18) 檢索出每個(gè)城市的供應(yīng)商個(gè)數(shù)。SELECT 倉庫號,COUNT(*) FROM 職工 WHERE 工資1220 GROUP BY 倉庫號20) 檢索出和面積最小的倉庫有聯(lián)系的供應(yīng)商的個(gè)數(shù)。SELECT * FROM 職工 out WHERE 工資(SELECT AVG(工資) FROM 職工 inne WHERE 倉庫號=)3. 試述關(guān)系數(shù)據(jù)庫中視圖(View)的含義和作用。在三層數(shù)據(jù)庫體系結(jié)構(gòu)中,視圖是外部數(shù)據(jù)庫,它是從基本表中派生出來的并依賴于基本表,它并不獨(dú)立存在。除此之外,從三層數(shù)據(jù)庫體系結(jié)構(gòu)的角度它還提供了概念數(shù)據(jù)獨(dú)立性。INSERT INTO 供應(yīng)商 VALUES(‘S9’,’智通公司’,’沈陽’)2) 刪除目前沒有任何訂購單的供應(yīng)商。DELETE FROM 訂購單 WHERE 職工號 IN(SELECT 職工號 FROM 職工 WHERE 倉庫號 IN(SELECT 倉庫號 FROM 倉庫 WHERE 城市=’上?!?)4) 北京的所有倉庫增加100m2的面積。UPDATE 職工 SET 工資=工資* WHERE 工資(SELECT AVG(工資) FROM 職工)5. SQL要嵌入到宿主語言中使用要解決哪幾方面的問題?把SQL嵌入到宿主語言中使用必須要解決以下三個(gè)方面的問題:1) 嵌入識別問題。2) 宿主語言與SQL語言的數(shù)據(jù)交互問題。3) 宿主語言的單記錄與SQL的多記錄的問題。6. 試述預(yù)編譯的作用。解決這個(gè)問題的一般方法是,為SQL語句加一個(gè)特殊的前綴,在用宿主語言的編譯系統(tǒng)編譯源程序之前,首先由預(yù)編譯系統(tǒng)將SQL語句轉(zhuǎn)換為宿主語言的合法函數(shù)調(diào)用。宿主語言一般只能在單記錄方式下工作,即一次處理一個(gè)記錄。與游標(biāo)有關(guān)的命令共有四條:DECLARE CURSOR、OPEN、FETCH和CLOSE。8. 試述為什么需要?jiǎng)討B(tài)SQL語句,分析游標(biāo)和動(dòng)態(tài)游標(biāo)的區(qū)別。定義游標(biāo)的SQL語句是靜態(tài)的;而定義動(dòng)態(tài)游標(biāo)的SQL語句是動(dòng)態(tài)生成的。利用存儲過程可以避免在網(wǎng)絡(luò)上傳輸大量無用的信息或原始數(shù)據(jù),只需要傳輸調(diào)用存儲過程的指令和數(shù)據(jù)庫服務(wù)器返回的處理結(jié)果,這樣可以大大提高網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能。CREATE PROCEDURE ins_sup(sno CHAR(3),sname CHAR (16),addr CHAR (10))ASINSERT INTO 供應(yīng)商 VALUES(sno,sname,addr)IF ERROR = 0 RETURN 0ELSERETURN 12) 給指定城市的所有倉庫增加x m2的面積。CREATE PROCEDURE get_ord(eno CHAR(4),sno CHAR(3))ASSELECT * FROM 訂購單 WHERE 職工號=eno AND 供應(yīng)商號=snoIF ERROR = 0 RETURN 0ELSERETURN 1。,該零件是由供應(yīng)商提供給在同一城市的工程項(xiàng)目。,該供應(yīng)商提供了最小號碼的紅色零件。,該供應(yīng)商至少提供一種由提供了紅色零件的供應(yīng)商提供的零件。.SELECT PNO FROM SPJ WHERE JNO=‘J1’ GROUP BY PNO HAVING COUNT(*)1。CREATE PROCEDURE get_eno(city CHAR(10),sno CHAR(3))ASSELECT 職工號 FROM 職工 WHERE 倉庫號 IN (SELECT 倉庫號 FROM 倉庫 WHERE 城市=city) AND 職工號 IN(SELECT 職工號 FROM 訂購單 WHERE 供應(yīng)商號=sno)IF ERROR = 0 RETURN 0ELSERETURN –13. 試述觸發(fā)器的概念和作用。觸發(fā)器是為表上的更新、插入、刪除操作定義的,也就是說當(dāng)表上發(fā)生更新、插入或刪除操作時(shí)觸發(fā)器將執(zhí)行。比如,對父表的修改,可以引起對子孫表的一系列修改,從而保證數(shù)據(jù)的一致性和完整性。s 觸發(fā)器可以強(qiáng)制比用CHECK約束定義更加復(fù)雜的限制。建立插入觸發(fā)器CREATE TRIGGER ord_ins_triggerON 訂購單 FOR INSERTASIF ((SELECT COUNT(*) FROM 職工 e,INSERTED i WHERE =)=0 OR(SELECT COUNT(*) FROM 供應(yīng)商 s,INSERTED i WHERE =i. 供應(yīng)商號)=0)BEGINRAISERROR (39。, 1, 1)ROLLBACK TRANSACTIONEND建立更新觸發(fā)器略習(xí)題七1. 討論數(shù)據(jù)庫安全都與哪些安全問題有關(guān)?數(shù)據(jù)庫安全實(shí)際涉及到很多方面,除了數(shù)據(jù)庫管理系統(tǒng)應(yīng)該具有安全保護(hù)功能之外,還需要從管理機(jī)制、人員行為、操作系統(tǒng)安全和網(wǎng)絡(luò)安全等多個(gè)方面采取措施。自主存取控制的特點(diǎn)是由用戶“自主”地控制數(shù)據(jù)庫對象的訪問權(quán)限;而強(qiáng)制存取控制的特點(diǎn)是嚴(yán)格的分層次管理,有嚴(yán)格的等級制度。角色管理類似于用戶組的管理,可以將數(shù)據(jù)庫的所有用戶劃分成不同的角色,這樣可以簡化用戶管理,使用戶管理和權(quán)限管理更加簡潔、清楚。SQL Server的系統(tǒng)管理是由系統(tǒng)管理員(默認(rèn)是sa用戶)負(fù)責(zé)的,而系統(tǒng)預(yù)定義角色正是系統(tǒng)管理員職責(zé)的分解,通過一些系統(tǒng)預(yù)定義角色的用戶來協(xié)助系統(tǒng)管理員進(jìn)行管理,可以減輕系統(tǒng)管理員(sa用戶)的工作負(fù)擔(dān),對系統(tǒng)管理來說又有更明確的職責(zé)劃分。語句授權(quán)是指對執(zhí)行創(chuàng)建數(shù)據(jù)庫對象的語句的授權(quán),這種權(quán)限一般歸系統(tǒng)管理員(sa)或數(shù)據(jù)庫管理員(DBO)管理;對象授權(quán)是指對可以在數(shù)據(jù)庫對象執(zhí)行的操作的授權(quán),這種權(quán)限一般由數(shù)據(jù)庫對象擁有者(DBOO)管理,也可以由系統(tǒng)管理員(sa)或數(shù)據(jù)庫管理員(DBO)管理。WITH GRANT OPTION子句說明被授權(quán)用戶可以將指定的對象權(quán)限授予其他用戶。7. 試述在REVOKE語句中GRANT OPTION FOR子句和CASCADE子句的作用。GRANT OPTION FOR要與CASCADE一同使用,因?yàn)橐栈豔ITH GRANT OPTION權(quán)限,也應(yīng)該一同收回由于該子句產(chǎn)生的所有授權(quán)。禁止權(quán)限語句DENY的作用是禁止用戶從角色繼承指定的權(quán)限。10. 統(tǒng)計(jì)數(shù)據(jù)庫有哪些特殊的安全性問題?統(tǒng)計(jì)數(shù)據(jù)庫的安全性問題主要是指不允許從統(tǒng)計(jì)信息推導(dǎo)出名細(xì)信息。2. 解釋事務(wù)的ACID性質(zhì)。3. 并發(fā)控制都會產(chǎn)生哪些干擾問題?并討論之。4. 請舉出兩個(gè)并發(fā)的程序進(jìn)行更新操作時(shí)相互干擾的例子。略6. 分別解釋共享封鎖、更新封鎖和獨(dú)占封鎖的含義。這種封鎖可以保證最大的并發(fā)性,任何數(shù)量的用戶都可以同時(shí)對同樣的數(shù)據(jù)施加這種共享鎖。已經(jīng)實(shí)施更新封鎖的記錄,拒絕來自其他用戶的更新封鎖或獨(dú)占封鎖。當(dāng)需要對表實(shí)施插入、刪除或修改操作時(shí),應(yīng)該使用獨(dú)占封鎖。7. 什么是死鎖?如何避免發(fā)生死鎖?當(dāng)兩個(gè)(或多個(gè))并發(fā)的事務(wù)分別等待對方釋放封鎖的資源,而使事務(wù)處于長期等待狀態(tài)的現(xiàn)象稱為死鎖。8. 什么是事務(wù)的隔離性?如何劃分事務(wù)的隔離級別?事務(wù)的隔離性是指一個(gè)事務(wù)應(yīng)該與其他事務(wù)“隔離”,它在完成過程中不受其他事務(wù)的影響和干擾。為了既能保證數(shù)據(jù)的一致性、又盡可能提高系統(tǒng)的并發(fā)執(zhí)行效率,為此將隔離級別劃分為如下4個(gè)級別:s 未提交讀(READ UNCOMMITTED):事務(wù)隔離的最低級別,僅可保證不讀取物理損壞的數(shù)據(jù),這是4個(gè)隔離級別中限制最小的級別。s 可重復(fù)讀(REPEATABLE READ):可以保證讀一致性,避免不一致分析問題。9. 試敘述在備份與恢復(fù)技術(shù)中數(shù)據(jù)庫日志的作用。這樣就可以在備份完成時(shí)立刻刷新并啟用一個(gè)數(shù)據(jù)庫日志,數(shù)據(jù)庫日志是實(shí)時(shí)的,它將忠實(shí)地記錄下所有對數(shù)據(jù)庫的更新操作。10. 試述在SQL Server中利用文件和文件組備份為數(shù)據(jù)庫恢復(fù)提供了什么樣的便利?利用文件和文件組進(jìn)行備份,則當(dāng)建立數(shù)據(jù)庫的某個(gè)物理存儲介質(zhì)出現(xiàn)故障時(shí),可以只恢復(fù)發(fā)生故障的存儲介質(zhì)上的物理文件或文件組,而不需要恢復(fù)整個(gè)數(shù)據(jù)庫,這可以大大縮短數(shù)據(jù)庫恢復(fù)所需要的時(shí)間。略12. 試討論備份系統(tǒng)數(shù)據(jù)庫的重要性。所以系統(tǒng)數(shù)據(jù)庫的安全和可靠是用戶數(shù)據(jù)庫可以正常使用的基礎(chǔ)。略2. 找出圖51所示數(shù)據(jù)庫各個(gè)關(guān)系中的函數(shù)依賴。證明:略4. 設(shè)有關(guān)系模式R(U,F),U={A,B,C,D,E},F(xiàn)={AB→E,DE→B,B→C,C→E,E→A}1) 計(jì)算所有函數(shù)依賴左部關(guān)于函數(shù)依賴集F的屬性集閉包;(AB