版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
iOS程序員面試分類(lèi)模擬15簡(jiǎn)答題1.
說(shuō)出你所知道的3種以上開(kāi)源數(shù)據(jù)庫(kù)的名稱(chēng)?正確答案:MySQL、PostgreSQL、Ingresr3、MaxDB、InterBase(即Firebird(江南博哥))等。
針對(duì)以上5個(gè)主流開(kāi)源數(shù)據(jù)庫(kù)進(jìn)行簡(jiǎn)要的介紹(見(jiàn)表)。主流開(kāi)源數(shù)據(jù)庫(kù)的概要介紹數(shù)據(jù)庫(kù)概要介紹主要優(yōu)點(diǎn)MySQLMySQL是一個(gè)多線程、結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)數(shù)據(jù)庫(kù)服務(wù)器。MySQL的執(zhí)行性能高,運(yùn)行速度快,容易使用①可靠的性能和服務(wù)②易于使用和部署,MySQL的結(jié)構(gòu)體系易于定制,運(yùn)行速度快,其獨(dú)特的多存儲(chǔ)引擎結(jié)構(gòu)為企業(yè)客戶(hù)提供了靈活性③跨平臺(tái)多,MySQL可用于20多種不同平臺(tái)PostgreSQL一個(gè)功能齊全、開(kāi)放源代碼的對(duì)象一關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)①PostgreSQL包括了豐富的數(shù)據(jù)類(lèi)型支持,例如IP類(lèi)型和幾何類(lèi)型等②PostgreSQL是全功能的開(kāi)源軟件數(shù)據(jù)庫(kù),全面支持事務(wù)、子查詢(xún)、多版本并行控制系統(tǒng)和數(shù)據(jù)完整性檢查等特性③PostgreSQL支持幾乎所有類(lèi)型的數(shù)據(jù)庫(kù)客戶(hù)端接口④支持多平臺(tái)使用Ingresr3Ingresr3按照CATrustedOpenSourceicense(CA可信開(kāi)放源代碼許可)授權(quán),取得此授權(quán)的人可以查看Ingresr3數(shù)據(jù)庫(kù)的源代碼,并免費(fèi)下載該軟件①具備高可用性、可擴(kuò)展性和可靠性等②是第一個(gè)以ZopeRDBMSPersistence引擎為基礎(chǔ)的初始數(shù)據(jù)庫(kù)(InitialDatabase),其表分區(qū)和索引功能滿(mǎn)足超大型數(shù)據(jù)庫(kù)部署的需求③可以在異構(gòu)環(huán)境中與其他應(yīng)用程序和數(shù)據(jù)進(jìn)行無(wú)縫集成MaxDBMaxDB是一個(gè)適應(yīng)繁重任務(wù)、經(jīng)過(guò)SAP認(rèn)證的開(kāi)源OLTP數(shù)據(jù)庫(kù),OLTP的使用為其提供了可靠性、可用性、擴(kuò)展性和高性能①降低企業(yè)SAP運(yùn)行的費(fèi)用成本②配置簡(jiǎn)單,管理維護(hù)成本低廉③完善的備份和恢復(fù)功能④數(shù)據(jù)庫(kù)容量可達(dá)TB級(jí)⑤提供集群和熱備份支持,帶來(lái)高可用性InterBaseInterBase是一個(gè)易于開(kāi)發(fā)者使用的數(shù)據(jù)庫(kù),可以支持復(fù)雜商業(yè)應(yīng)用的快速開(kāi)發(fā)與部署①占用很少的空間意味著數(shù)據(jù)庫(kù)消耗的系統(tǒng)資源很少,能夠運(yùn)行在一個(gè)并不昂貴的系統(tǒng)之上②自動(dòng)崩潰恢復(fù)功能、自動(dòng)崩潰恢復(fù)機(jī)制的調(diào)優(yōu)功能使得系統(tǒng)維護(hù)量很小,并且沒(méi)有日志文件蔓延(LogFileCreep)現(xiàn)象③在線備份功能進(jìn)一步降低系統(tǒng)維護(hù)量,并提升生產(chǎn)率,因?yàn)樵趥浞輸?shù)據(jù)時(shí)并不需要停止數(shù)據(jù)庫(kù)
2.
SQL語(yǔ)言的功能有哪些?正確答案:SQL是結(jié)構(gòu)化查詢(xún)語(yǔ)言(StructuredQueryLanguage)的縮寫(xiě),其功能包括數(shù)據(jù)查詢(xún)、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制4個(gè)部分。
數(shù)據(jù)查詢(xún)是數(shù)據(jù)庫(kù)中最常見(jiàn)的操作,通過(guò)select語(yǔ)句可以得到所需的信息。SQL語(yǔ)言的數(shù)據(jù)操縱語(yǔ)句(DataManipulationLanguage,DML)主要包括插入數(shù)據(jù)、修改數(shù)據(jù)及刪除數(shù)據(jù)3種語(yǔ)句。SQL語(yǔ)言使用數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,DDL)實(shí)現(xiàn)數(shù)據(jù)定義功能,可對(duì)數(shù)據(jù)庫(kù)用戶(hù)、基本表、視圖、索引進(jìn)行定義與撤銷(xiāo)。數(shù)據(jù)控制語(yǔ)句(DataControlLanguage,DCL)用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的控制管理,保證數(shù)據(jù)在多用戶(hù)共享的情況下能夠安全。
基本的SQL語(yǔ)句有select、insert、update、delete、create、drop、grant、revoke等。其具體使用方式見(jiàn)表?;镜腟QL語(yǔ)句的使用方式類(lèi)型關(guān)鍵字描述語(yǔ)法格式數(shù)據(jù)查詢(xún)select選擇符合條件的記錄select*fromtablewhere條件語(yǔ)句數(shù)據(jù)操縱insert插入一條記錄insertintotable(字段1,字段2...)values(值1,值2...)update更新語(yǔ)句updatetableset字段名=字段值where條件表達(dá)式delete刪除記錄Deletefromtablewhere條件表達(dá)式數(shù)據(jù)定義create數(shù)據(jù)表的建立createtabletablename(字段1,字段2...)drop數(shù)據(jù)表的刪除droptabletablename數(shù)據(jù)控制grant為用戶(hù)授予系統(tǒng)權(quán)限grant<系統(tǒng)權(quán)限>|<角色>[,<系統(tǒng)權(quán)限>|<角色>]...to<用戶(hù)名>|<角色>|public[,<用戶(hù)名>|<角色>]...[withadminoption]revoke收回系統(tǒng)權(quán)限r(nóng)evoke<系統(tǒng)權(quán)限>|<角色>[,<系統(tǒng)權(quán)限>|<角色>]...from<用戶(hù)名>|<角色>|public[,<用戶(hù)名>|<角色>]...
例如,設(shè)教務(wù)管理系統(tǒng)中有3個(gè)基本表:
學(xué)生信息表S(SNO,SNAME,AGE,SEX),其屬性分別表示學(xué)號(hào)、學(xué)生姓名、年齡和性別。
選課信息表SC(SNO,CNO,SCGRADE),其屬性分別表示學(xué)號(hào)、課程號(hào)和成績(jī)。
課程信息表C(CNO,CNAME,CTEACHER),其屬性分別表示課程號(hào)、課程名稱(chēng)和任課老師姓名。
1)把SC表中每門(mén)課程的平均成績(jī)插入到另外一個(gè)已經(jīng)存在的表SC_C(CNO,CNAME,AVG_GRADE)中,其中AVG_GRADE表示的是每門(mén)課程的平均成績(jī)。
INSERTINTOSC_C(CNO,CNAME,AVG_GRADE)
SELECTSC.CNO,C.CNAME,AVG(SCGRADE)FROMSC,CWHERESC.CNO=C.CNOGROUPBYSC.CNO,C.CNAMESC
2)從SC表中把何吳老師的女學(xué)生選課記錄刪除。
DELETEFROMSCWHERECNO=(SELECTCNOFROMCWHEREC.CTEACHER='何昊')ANDSNOIN(SELECTSNOFROMSWIlERESEX='女')
3)找出沒(méi)有選修過(guò)何吳老師講授課程的所有學(xué)生姓名。
SELECTSNAMEFROMS
wHERENOTEXISTS(
SELECT*FROMSC,CWHERESC.CNO=C.cNOANDCTEACHER='何昊'ANDSC.SNO=S.SNO)
4)列出有兩門(mén)以上(含兩門(mén))不及格課程(成績(jī)小于60)的學(xué)生姓名及其平均成績(jī)。
SELECTS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)
FROMS,SC,(
SELECTSNOFROMSCWHERESCGRADE<60GROUPBYSN0
HAVINGCOUNT(DISTINCTCNO)>=2)AWHERES.SNO=A.SNOANDSC.SNO=A.SNO
GROUPBYS.SNO.S.SNAME
5)列出既學(xué)過(guò)“1”號(hào)課程,又學(xué)過(guò)“2”號(hào)課程的所有學(xué)生姓名。
SELECTS.SNO,S.SNAME
FROMS,(SELECTSC.SNOFROMSC,C
WHERESC.CNO=C.CNOANDC.CNAMEIN('1','2')
GROUPBYSNO
HAVINGCOUNTfDISTINCTCNO)=2
)SCWHERES.SNO=SC.SNO
6)列出“1”號(hào)課成績(jī)比“2”號(hào)同學(xué)該門(mén)課成績(jī)高的所有學(xué)生的學(xué)號(hào)。
SELECTS.SNO,S.SNAME
FROMS,(
SELECTSC1.SNO
FROMSCSC1,CC1,SCSC2,CC2
WHERESC1.CNO=C1.CNOANDC1.CNAME='1'
ANDSC2.CNO=C2.CNOANDC2.CNAME='2'
ANDSC1.SNO=SC2.SNO
ANDSC1.SCGRADE>SC2.SCGRADE
)SCWHERES.SNO=SC.SNO
7)列出“1”號(hào)課成績(jī)比“2”號(hào)課成績(jī)高的所有學(xué)生的學(xué)號(hào)及其“1”號(hào)課和“2”號(hào)課的成績(jī)。
SELECTS.SNO,S.SNAME,SC.gradel,SC.grade2
FROMS,(
SELECTSC1.SNO,grade1=SC1.SCGRADE,grade2=SC2.SCGRADE
FROMSCSC1,CC1,SCSC2,CC2
WHERESC1.CNO=C1.CNOANDC1.CNO=1
ANDSC2.CNO=C2.CNOANDC2.CNO=2
ANDSC1.SNO=SC2.SNO
ANDSC1.SCGRADE>SC2.SCGRADE
)SCWHERES.SNO=SC.SNO
3.
delete與truncate命令有哪些區(qū)別?正確答案:相同點(diǎn):都可以用來(lái)刪除一個(gè)表中的數(shù)據(jù)。
不同點(diǎn):
1)truncate是一個(gè)數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,DDL),它會(huì)被隱式地提交,一旦執(zhí)行后將不能回滾。delete執(zhí)行的過(guò)程是每次從表中刪除一行數(shù)據(jù),同時(shí)將刪除的操作以日志的形式進(jìn)行保存,以便將來(lái)進(jìn)行回滾操作。
2)用delete操作后,被刪除的數(shù)據(jù)占用的存儲(chǔ)空間還在,還可以恢復(fù)。而用truncate操作刪除數(shù)據(jù),被刪除的數(shù)據(jù)會(huì)立即釋放所占有的存儲(chǔ)空間,被刪除的數(shù)據(jù)是不能被恢復(fù)的。
3)truncate的執(zhí)行速度比delete快。
4.
Oracle數(shù)據(jù)庫(kù)的一個(gè)表中有若干條數(shù)據(jù),其占用的空間為10M,如果用delete語(yǔ)句刪除表中所有的數(shù)據(jù),那么此時(shí)這個(gè)表所占的空間為多大?正確答案:10M。數(shù)據(jù)庫(kù)中delete操作類(lèi)似于在Windows系統(tǒng)中把數(shù)據(jù)放到回收站,還可以恢復(fù)。因此,它不會(huì)立即釋放所占的存儲(chǔ)空間。如果想在刪除數(shù)據(jù)后立即釋放存儲(chǔ)空間,那么可以使用truncate命令。
5.
內(nèi)連接與外連接有什么區(qū)別?正確答案:內(nèi)連接,也稱(chēng)為自然連接,只有兩個(gè)表相匹配的行才能在結(jié)果集中出現(xiàn)。返回的結(jié)果集是兩個(gè)表中所有相匹配的數(shù)據(jù),而舍棄不匹配的數(shù)據(jù)。由于內(nèi)連接是從結(jié)果表中刪除與其他連接表中沒(méi)有匹配行的所有行,所以?xún)?nèi)連接可能會(huì)造成信息的丟失。內(nèi)連接的語(yǔ)法如下:
selectfieidlistfromtablel[inner]jointable2ontable1.column=table.column
內(nèi)連接是保證兩個(gè)表中所有的行都要滿(mǎn)足連接條件,而外連接則不然。與內(nèi)連接不同,外連接不僅包含符合連接條件的行,還包括左表(左外連接時(shí))、右表(右外連接時(shí))或兩個(gè)邊接表(全外連接)中的所有數(shù)據(jù)行。也就是說(shuō),只限制其中一個(gè)表的行,而不限制另一個(gè)表的行。SQL的外連接共有3種類(lèi)型:左外連接(關(guān)鍵字為L(zhǎng)EFTOUTERJOIN)、右外連接(關(guān)鍵字為RIGHTOUTERJOIN)和全外連接(關(guān)鍵字為FULLOUTERJOIN)。外連接的用法和內(nèi)連接一樣,只是將INNERJOIN關(guān)鍵字替換為相應(yīng)的外連接關(guān)鍵字。
內(nèi)連接只顯示符合連接條件的記錄,外連接除了顯示符合連接條件的記錄外,還顯示不符合連接條件的記錄。例如,若用左外連接,還顯示左表中記錄。
例如,有兩個(gè)學(xué)生表A(見(jiàn)表1)和課程表B(見(jiàn)表2)。表1學(xué)生表A學(xué)號(hào)姓名0001張三0002李四0003王五表2課程表B學(xué)號(hào)課程名0001數(shù)學(xué)0002英語(yǔ)0003數(shù)學(xué)0004計(jì)算機(jī)對(duì)表1和表2進(jìn)行內(nèi)連接后的結(jié)果見(jiàn)表3。表3內(nèi)連接結(jié)果學(xué)號(hào)姓名課程名0001張三數(shù)學(xué)0002李四英語(yǔ)0003王五數(shù)學(xué)對(duì)表1和表2進(jìn)行右外連接后結(jié)果見(jiàn)表4。表4右外連接結(jié)果學(xué)號(hào)姓名課程名0001張三數(shù)學(xué)0002李四英語(yǔ)0003王五數(shù)學(xué)0004
計(jì)算機(jī)
6.
什么是事務(wù)?正確答案:事務(wù)是數(shù)據(jù)庫(kù)中一個(gè)單獨(dú)的執(zhí)行單元(unit),它通常由高級(jí)數(shù)據(jù)庫(kù)操作語(yǔ)言(例如SQL)或編程語(yǔ)言(例如C++、Java等)書(shū)寫(xiě)的用戶(hù)程序的執(zhí)行所引起。當(dāng)在數(shù)據(jù)庫(kù)中更改數(shù)據(jù)成功時(shí),在事務(wù)中更改的數(shù)據(jù)便會(huì)提交,不再改變。否則,事務(wù)就取消或者回滾,更改無(wú)效。
例如網(wǎng)上購(gòu)物,其交易過(guò)程至少包括以下幾個(gè)步驟的操作:
1)更新客戶(hù)所購(gòu)商品的庫(kù)存信息。
2)保存客戶(hù)付款信息。
3)生成訂單并且保存到數(shù)據(jù)庫(kù)中。
4)更新用戶(hù)相關(guān)信息,例如購(gòu)物數(shù)量等。
在正常的情況下,這些操作都將順利進(jìn)行,最終交易成功,與交易相關(guān)的所有數(shù)據(jù)庫(kù)信息也成功地更新。但是,如果遇到突然掉電或是其他意外情況,導(dǎo)致這一系列過(guò)程中任何一個(gè)環(huán)節(jié)出了差錯(cuò),例如在更新商品庫(kù)存信息時(shí)發(fā)生異常、顧客銀行賬戶(hù)余額不足等,都將導(dǎo)致整個(gè)交易過(guò)程失敗。而一旦交易失敗,數(shù)據(jù)庫(kù)中所有信息都必須保持交易前的狀態(tài)不變,例如最后一步更新用戶(hù)信息時(shí)失敗而導(dǎo)致交易失敗,那么必須保證這筆失敗的交易不影響數(shù)據(jù)庫(kù)的狀態(tài),即原有的庫(kù)存信息沒(méi)有被更新,用戶(hù)也沒(méi)有付款,訂單也沒(méi)有生成。否則,數(shù)據(jù)庫(kù)的信息將會(huì)不一致,或者出現(xiàn)更為嚴(yán)重的不可預(yù)測(cè)的后果。數(shù)據(jù)庫(kù)事務(wù)正是用來(lái)保證這種情況下交易的平穩(wěn)性和可預(yù)測(cè)性的技術(shù)。
事務(wù)必須滿(mǎn)足4個(gè)屬性,即原子性(atomicity)、一致性(consistency)、隔離性(isolation)、持久性(durability),即ACID4種屬性。
(1)原子性
事務(wù)是一個(gè)不可分割的整體,為了保證事務(wù)的總體目標(biāo),事務(wù)必須具有原子性,即當(dāng)數(shù)據(jù)修改時(shí),要么全執(zhí)行,要么全都不執(zhí)行,即不允許事務(wù)部分地完成,避免了只執(zhí)行這些操作的一部分而帶來(lái)的錯(cuò)誤。原子性要求事務(wù)必須被完整執(zhí)行。
(2)一致性
一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后數(shù)據(jù)庫(kù)數(shù)據(jù)必須保持一致性狀態(tài)。數(shù)據(jù)庫(kù)的一致性狀態(tài)應(yīng)該滿(mǎn)足模式鎖指定的約束,那么在完整執(zhí)行該事務(wù)后數(shù)據(jù)庫(kù)仍然處于一致性狀態(tài)。為了維護(hù)所有數(shù)據(jù)的完整性,在關(guān)系型數(shù)據(jù)庫(kù)中,所有的規(guī)則必須應(yīng)用到事務(wù)的修改上。數(shù)據(jù)庫(kù)的一致性狀態(tài)由用戶(hù)來(lái)負(fù)責(zé),由并發(fā)控制機(jī)制實(shí)現(xiàn),例如銀行轉(zhuǎn)賬,轉(zhuǎn)賬前后兩個(gè)賬戶(hù)金額之和應(yīng)保持不變,由于并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性包括:丟失數(shù)據(jù)修改、讀“臟”數(shù)據(jù)、不可重復(fù)讀和產(chǎn)生幽靈數(shù)據(jù)。
(3)隔離性
也被稱(chēng)為獨(dú)立性,當(dāng)兩個(gè)或多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),為了保證數(shù)據(jù)的安全性,將一個(gè)事物內(nèi)部的操作與事務(wù)的操作隔離起來(lái),不被其他的正在進(jìn)行的事務(wù)看到。例如對(duì)任何一對(duì)事務(wù)T1和T2,對(duì)T1而言,T2要么在T1開(kāi)始之前已經(jīng)結(jié)束,要么在T1完成之后再開(kāi)始執(zhí)行。數(shù)據(jù)庫(kù)有4種類(lèi)型的事務(wù)隔離級(jí)別:不提交的讀、提交的讀、可重復(fù)的讀和串行化。因?yàn)楦綦x性使得每個(gè)事務(wù)的更新在它被提交之前,對(duì)其他事務(wù)都是不可見(jiàn)的,所以實(shí)施隔離性是解決臨時(shí)更新與消除級(jí)聯(lián)回滾問(wèn)題的一種方式。
(4)持久性
也被稱(chēng)為永久性,事務(wù)完成以后,DBMS保證它對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的修改是永久性的,當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時(shí),該修改也永久保持。持久性一般通過(guò)數(shù)據(jù)庫(kù)備份與恢復(fù)來(lái)保證。
嚴(yán)格來(lái)說(shuō),數(shù)據(jù)庫(kù)事務(wù)屬性(ACID)都是由數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)進(jìn)行保證的,在整個(gè)應(yīng)用程序運(yùn)行過(guò)程中應(yīng)用無(wú)須去考慮數(shù)據(jù)庫(kù)的ACID實(shí)現(xiàn)。
一般情況下,通過(guò)執(zhí)行commit或rollback語(yǔ)句來(lái)終止事務(wù),當(dāng)執(zhí)行commit語(yǔ)句時(shí),自從事務(wù)啟動(dòng)以來(lái)對(duì)數(shù)據(jù)庫(kù)所做的一切更改就成為永久性的了,即被寫(xiě)入到磁盤(pán),而當(dāng)執(zhí)行rollback語(yǔ)句時(shí),自動(dòng)事務(wù)啟動(dòng)以來(lái)對(duì)數(shù)據(jù)庫(kù)所做的一切更改都會(huì)被撤銷(xiāo),并且數(shù)據(jù)庫(kù)中內(nèi)容返回到事務(wù)開(kāi)始之前所處的狀態(tài)。無(wú)論什么情況,在事務(wù)完成時(shí),都能保證回到一致?tīng)顟B(tài)。
7.
請(qǐng)談?wù)剶?shù)據(jù)庫(kù)中的事務(wù)。正確答案:事務(wù)是作為一個(gè)單元的一組有序的數(shù)據(jù)庫(kù)操作。如果組中的所有操作都成功,則認(rèn)為事務(wù)成功,即使只有一個(gè)操作失敗,事務(wù)也不成功。如果所有操作完成,事務(wù)則提交,那么其修改將作用于所有其他數(shù)據(jù)庫(kù)進(jìn)程。如果一個(gè)操作失敗,則事務(wù)將回滾,該事務(wù)所有操作的影響都將取消。
8.
什么是存儲(chǔ)過(guò)程?它與函數(shù)有什么區(qū)別與聯(lián)系?正確答案:SQL語(yǔ)句執(zhí)行的時(shí)候要先編譯,然后被執(zhí)行。在大型數(shù)據(jù)庫(kù)系統(tǒng)中,為了提高效率,將為了完成特定功能的SQL語(yǔ)句集進(jìn)行編譯優(yōu)化后,存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字來(lái)調(diào)用執(zhí)行。
例如,如下為一個(gè)創(chuàng)建存儲(chǔ)過(guò)程的常用語(yǔ)法。
createproceduresp_name@[參數(shù)名][類(lèi)型]
as
begin
......
End
調(diào)用存儲(chǔ)過(guò)程語(yǔ)法:execsp_name[參數(shù)名]
刪除存儲(chǔ)過(guò)程語(yǔ)法:dropproceduresp_name
使用存儲(chǔ)過(guò)程可以增強(qiáng)SQL語(yǔ)言的功能和靈活性,由于可以用流程控制語(yǔ)句編寫(xiě)存儲(chǔ)過(guò)程,有很強(qiáng)的靈活性,所以可以完成復(fù)雜的判斷和運(yùn)算,并且可以保證數(shù)據(jù)的安全性和完整性,同時(shí)存儲(chǔ)過(guò)程可以使沒(méi)有權(quán)限的用戶(hù)在控制之下間接地存取數(shù)據(jù)庫(kù),也保證了數(shù)據(jù)的安全。
需要注意的是,存儲(chǔ)過(guò)程不等于函數(shù),二者雖然本質(zhì)上沒(méi)有區(qū)別,但具體而言,還是有如下幾個(gè)方面的區(qū)別:
1)存儲(chǔ)過(guò)程一般是作為一個(gè)獨(dú)立的部分來(lái)執(zhí)行的,而函數(shù)可以作為查詢(xún)語(yǔ)句的一個(gè)部分來(lái)調(diào)用。由于函數(shù)可以返回一個(gè)對(duì)象,所以它可以在查詢(xún)語(yǔ)句中位于FROM關(guān)鍵字的后面。
2)一般而言,存儲(chǔ)過(guò)程實(shí)現(xiàn)的功能較復(fù)雜,而函數(shù)實(shí)現(xiàn)的功能針對(duì)性比較強(qiáng)。
3)函數(shù)需要用括號(hào)包住輸入的參數(shù),且只能返回一個(gè)值或表對(duì)象,存儲(chǔ)過(guò)程可以返回多個(gè)參數(shù)。
4)函數(shù)可以嵌入在SQL中使用,可以在SELECT中調(diào)用,存儲(chǔ)過(guò)程不行。
5)函數(shù)不能直接操作實(shí)體表,只能操作內(nèi)建表。
6)存儲(chǔ)過(guò)程在創(chuàng)建時(shí)即在服務(wù)器上進(jìn)行了編譯,執(zhí)行速度更快。
9.
一二三四范式有什么區(qū)別?正確答案:在設(shè)計(jì)與操作維護(hù)數(shù)據(jù)庫(kù)時(shí),最關(guān)鍵的問(wèn)題就是要確保數(shù)據(jù)正確地分布到數(shù)據(jù)庫(kù)的表中。使用正確的數(shù)據(jù)結(jié)構(gòu),不僅有助于對(duì)數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)的存取操作,還可以極大地簡(jiǎn)化應(yīng)用程序的其他內(nèi)容(查詢(xún)、窗體、報(bào)表、代碼等),正確地進(jìn)行表的設(shè)計(jì)成為“數(shù)據(jù)庫(kù)規(guī)范化”,它的目的就是減少數(shù)據(jù)庫(kù)中的數(shù)據(jù)冗余,從而增加數(shù)據(jù)的一致性。
規(guī)范化是在識(shí)別數(shù)據(jù)庫(kù)中的數(shù)據(jù)元素、關(guān)系,以及定義所需的表和各表中的項(xiàng)目這些初始工作之后的一個(gè)細(xì)化的過(guò)程。常見(jiàn)的范式有1NF、2NF、3NF、BCNF及4NF。
1NF,第一范式。它指數(shù)據(jù)庫(kù)表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。如果出現(xiàn)重復(fù)的屬性,那么就可能需要定義一個(gè)新的實(shí)體,新的實(shí)體由重復(fù)的屬性構(gòu)成,新實(shí)體與原實(shí)體之間為一對(duì)多關(guān)系。第一范式的模式要求屬性值不可再分裂成更小部分,即屬性項(xiàng)不能是屬性組合或由組屬性組成。簡(jiǎn)而言之,第一范式就是無(wú)重復(fù)的列。例如,由“職工號(hào)”“姓名”“電話(huà)號(hào)碼”組成的表(一個(gè)人可能有一個(gè)辦公電話(huà)和一個(gè)移動(dòng)電話(huà)),這時(shí)將其規(guī)范化為1NF可以將電話(huà)號(hào)碼分為“辦公電話(huà)”和“移動(dòng)電話(huà)”兩個(gè)屬性,即職工(職工號(hào)、姓名、辦公電話(huà)、移動(dòng)電話(huà))。
2NF,第二范式。第二范式是在第一范式的基礎(chǔ)上建立起來(lái)的,即滿(mǎn)足第二范式必須先滿(mǎn)足第一范式。第二范式要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被唯一地區(qū)分。為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的唯一標(biāo)識(shí)。如果關(guān)系模式(R)為第一范式,并且R中每一個(gè)非主屬性完全函數(shù)依賴(lài)于R的某個(gè)候選鍵,則稱(chēng)R為第二范式模式。(如果A是R的候選鍵的一個(gè)屬性,則稱(chēng)A是R的主屬性,否則稱(chēng)A是R的非主屬性。)例如,在選課關(guān)系表(學(xué)號(hào)、課程號(hào)、成績(jī)、學(xué)分),關(guān)鍵字為組合關(guān)鍵字(學(xué)號(hào)、課程號(hào)),由于非主屬性學(xué)分僅依賴(lài)于課程號(hào),對(duì)關(guān)鍵字(學(xué)號(hào)、課程號(hào))只是部分依賴(lài),而不是完全依賴(lài),所以此種方式導(dǎo)致數(shù)據(jù)冗余及更新異常等問(wèn)題,解決辦法是將其分為兩個(gè)關(guān)系模式:學(xué)生表(學(xué)號(hào)、課程號(hào)、分?jǐn)?shù))和課程表(課程號(hào)、學(xué)分),新關(guān)系通過(guò)學(xué)生表中的外關(guān)鍵字課程號(hào)聯(lián)系,在需要時(shí)進(jìn)行連接。
3NF,第三范式。如果R是第二范式,且每個(gè)非主屬性都不傳遞依賴(lài)于R的候選鍵,則稱(chēng)R是第三范式的模式。例如學(xué)生表(學(xué)號(hào)、姓名、課程號(hào)、成績(jī)),其中學(xué)生姓名無(wú)重名,所以該表有兩個(gè)候選鍵(學(xué)號(hào)、課程號(hào))和(姓名、課程號(hào)),則存在函數(shù)依賴(lài):學(xué)號(hào)→姓名,(學(xué)號(hào)、課程號(hào))→成績(jī),(姓名、課程號(hào))→成績(jī),唯一的非主屬性成績(jī)對(duì)候選鍵不存在部分依賴(lài),也不存在傳遞依賴(lài),所以屬于第三范式。
BCNF。它構(gòu)建在第三范式的基礎(chǔ)上,如果R是第一范式,且每個(gè)屬性都不傳遞依賴(lài)于R的候選鍵,那么稱(chēng)R為BCNF的模式。假設(shè)倉(cāng)庫(kù)管理關(guān)系表(倉(cāng)庫(kù)號(hào)、存儲(chǔ)物品號(hào)、管理員號(hào)、數(shù)量),滿(mǎn)足一個(gè)管理員只在一個(gè)倉(cāng)庫(kù)工作;一個(gè)倉(cāng)庫(kù)可以存儲(chǔ)多種物品。則存在如下關(guān)系:
(倉(cāng)庫(kù)號(hào)、存儲(chǔ)物品號(hào))→(管理員號(hào)、數(shù)量)
(管理員號(hào)、存儲(chǔ)物品號(hào))→(倉(cāng)庫(kù)號(hào)、數(shù)量)
所以,(倉(cāng)庫(kù)號(hào)、存儲(chǔ)物品號(hào))和(管理員號(hào)、存儲(chǔ)物品號(hào))都是倉(cāng)庫(kù)管理關(guān)系表的候選鍵,表中的唯一非關(guān)鍵字段為數(shù)量,它是符合第三范式的。但是,由于存在如下決定關(guān)系:
(倉(cāng)庫(kù)號(hào))→(管理員號(hào))
(管理員號(hào))→(倉(cāng)庫(kù)號(hào))
即存在關(guān)鍵字段決定關(guān)鍵字段的情況,所以其不符合BCNF范式。把倉(cāng)庫(kù)管理關(guān)系表分解為兩個(gè)關(guān)系表:倉(cāng)庫(kù)管理表(倉(cāng)庫(kù)號(hào)、管理員號(hào))和倉(cāng)庫(kù)表(倉(cāng)庫(kù)號(hào)、存儲(chǔ)物品號(hào)、數(shù)量),這樣的數(shù)據(jù)庫(kù)表是符合BCNF范式的,消除了刪除異常、插入異常和更新異常。
4NF,第四范式。設(shè)R是一個(gè)關(guān)系模式,D是R上的多值依賴(lài)集合。如果D中成立非平凡多值依賴(lài)X→Y時(shí),X必是R的超鍵,那么稱(chēng)R是第四范式的模式。例如,職工表(職工編號(hào)、職工孩子姓名、職工選修課程),在這個(gè)表中同一個(gè)職工也可能會(huì)有多個(gè)職工孩子姓名,同樣,同一個(gè)職工也可能會(huì)有多個(gè)職工選修課程,即這里存在著多值事實(shí),不符合第四范式。如果要符合第四范式,那么只需要將上表分為兩個(gè)表,使它們只有一個(gè)多值事實(shí),例如職工表一(職工編號(hào)、職工孩子姓名),職工表二(職工編號(hào)、職工選修課程),兩個(gè)表都只有一個(gè)多值事實(shí),所以符合第四范式。
下圖為各范式關(guān)系圖。
各范式關(guān)系圖
10.
什么是觸發(fā)器?正確答案:觸發(fā)器是一種特殊類(lèi)型的存儲(chǔ)過(guò)程,它由事件觸發(fā),而不是程序調(diào)用或手工啟動(dòng),當(dāng)數(shù)據(jù)庫(kù)有特殊的操作時(shí),對(duì)這些操作由數(shù)據(jù)庫(kù)中的事件來(lái)觸發(fā),自動(dòng)完成這些SQL語(yǔ)句。使用觸發(fā)器可以用來(lái)保證數(shù)據(jù)的有效性和完整性,完成比約束更復(fù)雜的數(shù)據(jù)約束。
具體而言,觸發(fā)器與存儲(chǔ)過(guò)程的區(qū)別見(jiàn)表。觸發(fā)器與存儲(chǔ)過(guò)程區(qū)別觸發(fā)器存儲(chǔ)過(guò)程當(dāng)某類(lèi)數(shù)據(jù)操縱DML語(yǔ)句發(fā)生時(shí)隱式地調(diào)用從一個(gè)應(yīng)用或過(guò)程中顯式地調(diào)用在觸發(fā)器體內(nèi)禁止使用commit、rollback語(yǔ)句在過(guò)程體內(nèi)可以使用所有PL/SQL塊中都能使用的SQL語(yǔ)句,包括commit、rollback語(yǔ)句不能接收參數(shù)輸入可以接收參數(shù)輸入
根據(jù)SQL語(yǔ)句的不同,觸發(fā)器可分為兩類(lèi):DML觸發(fā)器和DLL觸發(fā)器。
DML觸發(fā)器是當(dāng)數(shù)據(jù)庫(kù)服務(wù)器發(fā)生數(shù)據(jù)操作語(yǔ)言事件時(shí)執(zhí)行的存儲(chǔ)過(guò)程,有Affer和InsteadOf兩種觸發(fā)器。After觸發(fā)器被激活觸發(fā)是在記錄改變之后進(jìn)行的一種觸發(fā)器。InsteadOf觸發(fā)器是在記錄變更之前,去執(zhí)行觸發(fā)器本身所定義的操作,而不是執(zhí)行原來(lái)SQL語(yǔ)句里的操作。DLL觸發(fā)器是在響應(yīng)數(shù)據(jù)定義語(yǔ)言事件時(shí)執(zhí)行的存儲(chǔ)過(guò)程。
具體而言,觸發(fā)器的主要作用表現(xiàn)為如下幾個(gè)方面的內(nèi)容:
1)增加安全性。
2)利用觸發(fā)器記錄所進(jìn)行的修改及相關(guān)信息,跟蹤用戶(hù)對(duì)數(shù)據(jù)庫(kù)的操作,實(shí)現(xiàn)審計(jì)。
3)維護(hù)那些通過(guò)創(chuàng)建表時(shí)的聲明約束不可能實(shí)現(xiàn)的復(fù)雜的完整性約束,以及對(duì)數(shù)據(jù)庫(kù)中特定事件進(jìn)行監(jiān)控與響應(yīng)。
4)實(shí)現(xiàn)復(fù)雜的非標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)相關(guān)完整性規(guī)則、同步實(shí)時(shí)地復(fù)制表中的數(shù)據(jù)。
5)觸發(fā)器是自動(dòng)的,它們?cè)趯?duì)表的數(shù)據(jù)做了任何修改之后就會(huì)被激活,例如可以自動(dòng)計(jì)算數(shù)據(jù)值,如果數(shù)據(jù)的值達(dá)到了一定的要求,則進(jìn)行特定的處理。以某企業(yè)財(cái)務(wù)管理為例,如果企業(yè)的資金鏈出現(xiàn)短缺,并且達(dá)到某種程度,則發(fā)送警告信息。
下面是一個(gè)觸發(fā)器的例子,該觸發(fā)器的功能是在每周末進(jìn)行數(shù)據(jù)表更新,如果當(dāng)前用戶(hù)沒(méi)有訪問(wèn)WEEKEND_UPDATE_OK表的權(quán)限,那么需要重新賦予權(quán)限。代碼如下:
CREATEORREPLACETRIG(iERupdate_on_weekends_check
BEFOREUPDATEOFsalONEMP
FOREACHROW
DECLARE
my_countnumber(4);
BEGIN
SELECTCOUNT(u_name)
FROMWEEKEND_UPDATE_OKINTOmy_count
WHEREu_name=user_name;
IFmy_count=0THEN
RAISE_APPLICATION_ERROR(20508,'Updatenotallowed');
ENDIF;
END;
11.
觸發(fā)器分為事前觸發(fā)和事后觸發(fā),二者有什么區(qū)別?語(yǔ)句級(jí)觸發(fā)和行級(jí)觸發(fā)有什么區(qū)別?正確答案:事前觸發(fā)發(fā)生在事件發(fā)生之前驗(yàn)證一些條件或進(jìn)行一些準(zhǔn)備工作;事后觸發(fā)發(fā)生在事件發(fā)生之后,做收尾工作,保證事務(wù)的完整性。事前觸發(fā)可以獲得之前和新的字段值。語(yǔ)句級(jí)觸發(fā)器可以在語(yǔ)句執(zhí)行之前或之后執(zhí)行,而行級(jí)觸發(fā)在觸發(fā)器所影響的每一行觸發(fā)一次。
12.
什么是游標(biāo)?正確答案:在數(shù)據(jù)庫(kù)中,游標(biāo)提供了一種對(duì)從表中檢索出的數(shù)據(jù)進(jìn)行操作的靈活手段,它實(shí)際上是一種能從包括多條數(shù)據(jù)記錄的結(jié)果集中每次提取一條記錄的機(jī)制。
游標(biāo)總是與一條SQL選擇語(yǔ)句相關(guān)聯(lián),因?yàn)橛螛?biāo)由結(jié)果集(可以是零條、一條或由相關(guān)的選擇語(yǔ)句檢索出的多條記錄)和結(jié)果集中指向特定記錄的游標(biāo)位置組成。當(dāng)決定對(duì)結(jié)果集進(jìn)行處理時(shí),必須聲明一個(gè)指向該結(jié)果集的游標(biāo)。
游標(biāo)允許應(yīng)用程序?qū)Σ樵?xún)語(yǔ)句SELECT返回的行結(jié)果集中每一行進(jìn)行相同或不同的操作,而不是一次對(duì)整個(gè)結(jié)果集進(jìn)行同一種操作:它還提供對(duì)基于游標(biāo)位置而對(duì)表中數(shù)據(jù)進(jìn)行刪除或更新的能力;而且,正是游標(biāo)把作為面向集合的數(shù)據(jù)庫(kù)管理系統(tǒng)和面向行的程序設(shè)計(jì)兩者聯(lián)系起來(lái),使兩個(gè)數(shù)據(jù)處理方式能夠進(jìn)行溝通。
例如,聲明一個(gè)游標(biāo)student_cursor,用于訪問(wèn)數(shù)據(jù)庫(kù)SCHOOL中的“學(xué)生基本信息表”,代碼如下:
LISESCHOOL
GO
DECLAREstudent_cursorCURSOR
FROMSELECT*FROM學(xué)生基本信息表
上述代碼中,聲明游標(biāo)時(shí),在SELECT語(yǔ)句中未使用WHERE子句,故此游標(biāo)返回的結(jié)果集是由“學(xué)生基本信息表”中的所有記錄構(gòu)成的。
在SELECT返回的行集合中,游標(biāo)不允許程序?qū)φ麄€(gè)行集合執(zhí)行相同的操作,但對(duì)每一行數(shù)據(jù)的操作不作要求。游標(biāo)的優(yōu)點(diǎn)有以下兩個(gè)方面的內(nèi)容:
1)在使用游標(biāo)的表中,對(duì)行提供刪除和更新的能力。
2)游標(biāo)將面向集合的數(shù)據(jù)庫(kù)管理系統(tǒng)和面向行的程序設(shè)計(jì)連接起來(lái)。
13.
如果數(shù)據(jù)庫(kù)日志滿(mǎn)了,那么會(huì)出現(xiàn)什么情況?正確答案:日志文件(LogFile)記錄所有對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的修改,主要是保護(hù)數(shù)據(jù)庫(kù)以防止故障,以及恢復(fù)數(shù)據(jù)時(shí)使用。其特點(diǎn)如下:
1)每一個(gè)數(shù)據(jù)庫(kù)至少包含兩個(gè)日志文件組。每個(gè)日志文件組至少包含兩個(gè)日志文件成員。
2)日志文件組以循環(huán)方式進(jìn)行寫(xiě)操作。
3)每一個(gè)日志文件成員對(duì)應(yīng)一個(gè)物理文件。
通過(guò)日志文件來(lái)記錄數(shù)據(jù)庫(kù)事務(wù)可以最大限度地保證數(shù)據(jù)的一致性與安全性,但數(shù)據(jù)庫(kù)中日志滿(mǎn)了,就只能執(zhí)行查詢(xún)等讀操作,不能執(zhí)行更改、備份等操作,原因是任何寫(xiě)操作都要記錄日志,也就是說(shuō)基本上處于不能使用的狀態(tài)。
14.
union和unionall有什么區(qū)別?正確答案:union在進(jìn)行表求并集后會(huì)去掉重復(fù)的元素,所以會(huì)對(duì)所產(chǎn)生的結(jié)果集進(jìn)行排序運(yùn)算,刪除重復(fù)的記錄再返回結(jié)果。
而unionall只是簡(jiǎn)單地將兩個(gè)結(jié)果合并后就返回。因此,如果返回的兩個(gè)結(jié)果集中有重復(fù)的數(shù)據(jù),那么返回的結(jié)果集就會(huì)包含重復(fù)的數(shù)據(jù)了。
從上面的對(duì)比可以看出,在執(zhí)行查詢(xún)操作的時(shí)候,unionall要比union快很多。所以,如果可以確認(rèn)合并的兩個(gè)結(jié)果集中不包含重復(fù)的數(shù)據(jù),那么最好使用unionall。例如,有兩個(gè)學(xué)生表table1和table2。Table1C1C2112233Table2C1C2334411select*fromTable1unionselect*fromTable2的查詢(xún)結(jié)果為:C1C211223344select*fromTablelunionallselect*fromTable2的查詢(xún)結(jié)果為:C1C2112233334411
15.
什么是視圖?正確答案:視圖是由從數(shù)據(jù)庫(kù)的基本表中選取出來(lái)的數(shù)據(jù)組成的邏輯窗口。它不同于基本表,是一個(gè)虛表,在數(shù)據(jù)庫(kù)中,存放的只是視圖的定義而已,而不存放視圖包含的數(shù)據(jù)項(xiàng),這些項(xiàng)目仍然存放在原來(lái)的基本表結(jié)構(gòu)中。
視圖的作用非常多,主要有以下幾點(diǎn):首先,可以簡(jiǎn)化數(shù)據(jù)查詢(xún)語(yǔ)句;其次,可以使用戶(hù)能從多角度看待同一數(shù)據(jù);然后,通過(guò)引入視圖,可以提高數(shù)據(jù)的安全性;最后,視圖提供了一定程度的邏輯獨(dú)立性等。
通過(guò)引入視圖機(jī)制,用戶(hù)可以將注意力集中在其關(guān)心的數(shù)據(jù)上而非全部數(shù)據(jù),這樣就大大提高了用戶(hù)效率與用戶(hù)滿(mǎn)意度,而且如果這些數(shù)據(jù)來(lái)源于多個(gè)基本表結(jié)構(gòu),或者數(shù)據(jù)不僅來(lái)自于基本表結(jié)構(gòu),還有一部分?jǐn)?shù)據(jù)來(lái)源于其他視圖,并且搜索條件又比較復(fù)雜,那么需要編寫(xiě)的查詢(xún)語(yǔ)句就會(huì)比較煩瑣,此時(shí)定義視圖就可以使數(shù)據(jù)的查詢(xún)語(yǔ)句變得簡(jiǎn)單可行。定義視圖可以將表與表之間的復(fù)雜的操作連接和搜索條件對(duì)用戶(hù)不可見(jiàn),用戶(hù)只需要簡(jiǎn)單地對(duì)一個(gè)視圖進(jìn)行查詢(xún)即可,所以增加了數(shù)據(jù)的安全性,但是不能提高查詢(xún)的效率。
16.
什么是數(shù)據(jù)庫(kù)三級(jí)封鎖協(xié)議?正確答案:眾所周知,基本的封鎖類(lèi)型有兩種:排它鎖(X鎖)和共享鎖(S鎖)。所謂X鎖是事務(wù)T對(duì)數(shù)據(jù)A加上X鎖時(shí),只允許事務(wù)T讀取和修改數(shù)據(jù)A。所謂S鎖是事務(wù)T對(duì)數(shù)據(jù)A加上S鎖時(shí),其他事務(wù)只能再對(duì)數(shù)據(jù)A加S鎖,而不能加X(jué)鎖,直到事務(wù)T釋放數(shù)據(jù)A上的S鎖。若事務(wù)T對(duì)數(shù)據(jù)A加了S鎖,則事務(wù)T就可以對(duì)數(shù)據(jù)A進(jìn)行讀取,但不能進(jìn)行更新(S鎖因此又稱(chēng)為讀鎖),在事務(wù)T釋放數(shù)據(jù)A上的S鎖以前,其他事務(wù)可以再對(duì)數(shù)據(jù)A加S鎖,但不能加X(jué)鎖,從而可以讀取數(shù)據(jù)A,但不能更新數(shù)據(jù)A。
在運(yùn)用X鎖和S鎖對(duì)數(shù)據(jù)對(duì)象加鎖時(shí),還需要約定一些規(guī)則。例如,何時(shí)申請(qǐng)X鎖或S鎖、持鎖時(shí)間、何時(shí)釋放等,這些規(guī)則稱(chēng)為封鎖協(xié)議(LockingProtocol)。對(duì)封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議。一般使用三級(jí)封鎖協(xié)議,也稱(chēng)為三級(jí)加鎖協(xié)議。該協(xié)議是為了保證正確的調(diào)度事務(wù)的并發(fā)操作。三級(jí)加鎖協(xié)議是事務(wù)在對(duì)數(shù)據(jù)庫(kù)對(duì)象加鎖、解鎖時(shí)必須遵守的一種規(guī)則。下面分別介紹這三級(jí)封鎖協(xié)議。
(1)一級(jí)封鎖協(xié)議
事務(wù)T在修改數(shù)據(jù)R之前必須先對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束才釋放。事務(wù)結(jié)束包括正常結(jié)束(commit)和非正常結(jié)束(rollback)。一級(jí)封鎖協(xié)議可以防止丟失修改,并保證事務(wù)T是可恢復(fù)的,使用一級(jí)封鎖協(xié)議可以解決丟失修改問(wèn)題。在一級(jí)封鎖協(xié)議中,如果僅僅是讀數(shù)據(jù)不對(duì)其進(jìn)行修改,是不需要加鎖的,它不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。
(2)二級(jí)封鎖協(xié)議
一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后方可釋放S鎖。二級(jí)封鎖協(xié)議除防止了丟失修改,還可以進(jìn)一步防止讀“臟”數(shù)據(jù)。但在二級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放S鎖,所以它不能保證可重復(fù)讀。
(3)三級(jí)封鎖協(xié)議
一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,直到事務(wù)結(jié)束才釋放。三級(jí)封鎖協(xié)議除防止了丟失修改和不讀“臟”數(shù)據(jù)外,還進(jìn)一步防止了不可重復(fù)讀。
17.
索引的優(yōu)缺點(diǎn)有哪些?正確答案:創(chuàng)建索引
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)輸行政管理課程設(shè)計(jì)
- 二零二五年綠色環(huán)保刮瓷施工技術(shù)合作協(xié)議2篇
- 2025年度高端消防工程設(shè)計(jì)合同范本3篇
- 2025年度個(gè)人貸款合同補(bǔ)充協(xié)議(抵押物變更)4篇
- 《中醫(yī)養(yǎng)生學(xué)輔助》課件
- 2025年度商業(yè)樓宇窗簾設(shè)計(jì)安裝一體化合同范本4篇
- 二零二五版智慧園區(qū)物業(yè)服務(wù)與產(chǎn)業(yè)孵化協(xié)議3篇
- 2025年離婚協(xié)議書(shū):無(wú)孩子家庭財(cái)產(chǎn)分割與子女撫養(yǎng)權(quán)明確合同6篇
- 針對(duì)二零二五年度買(mǎi)賣(mài)合同的產(chǎn)品質(zhì)量爭(zhēng)議解決辦法3篇
- 2025版旅游線路開(kāi)發(fā)與運(yùn)營(yíng)合同4篇
- 河北省大學(xué)生調(diào)研河北社會(huì)調(diào)查活動(dòng)項(xiàng)目申請(qǐng)書(shū)
- GB/T 20920-2007電子水平儀
- 如何提高教師的課程領(lǐng)導(dǎo)力
- 企業(yè)人員組織結(jié)構(gòu)圖
- 日本疾病診斷分組(DPC)定額支付方式課件
- 兩段焙燒除砷技術(shù)簡(jiǎn)介 - 文字版(1)(2)課件
- 實(shí)習(xí)證明模板免費(fèi)下載【8篇】
- 復(fù)旦大學(xué)用經(jīng)濟(jì)學(xué)智慧解讀中國(guó)課件03用大歷史觀看中國(guó)社會(huì)轉(zhuǎn)型
- 案件受理登記表模版
- 2022年浙江省嘉興市中考數(shù)學(xué)試題(Word版)
- 最新焊接工藝評(píng)定表格
評(píng)論
0/150
提交評(píng)論