《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628_第1頁(yè)
《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628_第2頁(yè)
《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628_第3頁(yè)
《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628_第4頁(yè)
《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628數(shù)據(jù)庫(kù)系統(tǒng)概述一、有關(guān)概念1.數(shù)據(jù)2.?dāng)?shù)據(jù)庫(kù)(DB)3.?dāng)?shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)Access桌面DBMSVFPSQLServerOracle客戶機(jī)/服務(wù)器型DBMSMySQLDB24.數(shù)據(jù)庫(kù)系統(tǒng)(DBS)數(shù)據(jù)庫(kù)(DB)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)開(kāi)發(fā)工具應(yīng)用系統(tǒng)二、數(shù)據(jù)管理技術(shù)的發(fā)展1.?dāng)?shù)據(jù)管理的三個(gè)階段人工管理文件系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)能否保存不能保存可以保存可以保存數(shù)據(jù)面向的對(duì)象某一應(yīng)用程序無(wú)共享,一組某一應(yīng)用程序整個(gè)應(yīng)用系統(tǒng)共享性差,一個(gè)數(shù)數(shù)據(jù)的共享程度數(shù)據(jù)的獨(dú)立性數(shù)據(jù)只能對(duì)應(yīng)一個(gè)據(jù)文件只能對(duì)應(yīng)一共享性高應(yīng)用程序。個(gè)應(yīng)用程序。不獨(dú)立,它是應(yīng)用程序的一部分。數(shù)據(jù)庫(kù)與應(yīng)用系統(tǒng)完全分開(kāi)獨(dú)立性差概念模型一、模型的三個(gè)世界1.現(xiàn)實(shí)世界2.信息世界:即根據(jù)需求分析畫概念模型(即E-R圖),E-R圖與DBMS無(wú)關(guān)。3.機(jī)器世界:將E-R圖轉(zhuǎn)換為某一種數(shù)據(jù)模型,數(shù)據(jù)模型與DBMS相關(guān)。注意:信息世界又稱概念模型,機(jī)器世界又稱數(shù)據(jù)模型二、實(shí)體及屬性1.實(shí)體:客觀存在并可相互區(qū)別的事物。2.屬性:3.關(guān)鍵詞(碼、key):能唯一標(biāo)識(shí)每個(gè)實(shí)體又不含多余屬性的屬性組合?!稊?shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628一個(gè)表的碼可以有多個(gè),但主碼只能有一個(gè)。例:借書表(學(xué)號(hào),姓名,書號(hào),書名,作者,定價(jià),借期,還期)規(guī)定:學(xué)生一次可以借多本書,同一種書只能借一本,但可以多次續(xù)借。4.實(shí)體型:即二維表的結(jié)構(gòu)例student(no,name,sex,age,dept)5.實(shí)體集:即整個(gè)二維表三、實(shí)體間的聯(lián)系:1.兩實(shí)體集間實(shí)體之間的聯(lián)系1:1聯(lián)系1:n聯(lián)系m:n聯(lián)系2.同一實(shí)體集內(nèi)實(shí)體之間的聯(lián)系1:1聯(lián)系1:n聯(lián)系m:n聯(lián)系四、概念模型(常用E-R圖表示)實(shí)體型:屬性:聯(lián)系:說(shuō)明:①E-R圖作為用戶與開(kāi)發(fā)人員的中間語(yǔ)言。②E-R圖可以等價(jià)轉(zhuǎn)換為層次、網(wǎng)狀、關(guān)系模型。舉例:學(xué)校有若干個(gè)系,每個(gè)系有若干班級(jí)和教研室,每個(gè)教研室有若干教員,其中有的教授和副教授每人各帶若干研究生。每個(gè)班有若干學(xué)生,每個(gè)學(xué)生選修若干課程,每門課程有若干學(xué)生選修。用E-R圖畫出概念模型?!稊?shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628數(shù)據(jù)模型一、層次模型:用樹(shù)型結(jié)構(gòu)表示實(shí)體之間的聯(lián)系。①每個(gè)結(jié)點(diǎn)代表一個(gè)實(shí)體型。②只能直接處理一對(duì)多(含一對(duì)一)的實(shí)體關(guān)系。③查找層次數(shù)據(jù)庫(kù)中的記錄,速度較慢。二、網(wǎng)狀模型:用圖結(jié)構(gòu)表示實(shí)體之間的聯(lián)系。①每個(gè)結(jié)點(diǎn)代表一個(gè)實(shí)體型。②可以處理多對(duì)多的實(shí)體關(guān)系。③查找網(wǎng)狀數(shù)據(jù)庫(kù)中的記錄,速度最快。三、關(guān)系模型:用二維表表示實(shí)體之間的聯(lián)系。1.重要術(shù)語(yǔ):關(guān)系:一個(gè)關(guān)系就是一個(gè)二維表;元組:二維表的一行,即實(shí)體;關(guān)系模式:在實(shí)體型的基礎(chǔ)上,注明主碼。關(guān)系模型:指一個(gè)數(shù)據(jù)庫(kù)中全部二維表結(jié)構(gòu)的集合。2.特點(diǎn):①關(guān)系模型是建立在嚴(yán)格的數(shù)學(xué)理論的基礎(chǔ)上的;②關(guān)系模型的存取路徑對(duì)用戶透明;③查找關(guān)系數(shù)據(jù)庫(kù)中的記錄,速度最慢。小結(jié):數(shù)據(jù)有三種類型,DBMS就有三種類型,DB亦有三種類型。數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)一、數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)①單機(jī)結(jié)構(gòu):DBMS、數(shù)據(jù)庫(kù)、開(kāi)發(fā)工具、應(yīng)用系統(tǒng)安裝在一臺(tái)計(jì)算機(jī)上。②C/S結(jié)構(gòu):局域網(wǎng)結(jié)構(gòu)《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628客戶機(jī):裝開(kāi)發(fā)工具、應(yīng)用系統(tǒng)服務(wù)器:裝DBMS、數(shù)據(jù)庫(kù)③B/S結(jié)構(gòu):Internet結(jié)構(gòu)服務(wù)器:裝DBMS、數(shù)據(jù)庫(kù)、開(kāi)發(fā)工具、應(yīng)用系統(tǒng)客戶機(jī):裝IE即可三、數(shù)據(jù)庫(kù)系統(tǒng)的模式結(jié)構(gòu)1.三級(jí)模式①模式:是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。模式只涉及數(shù)據(jù)庫(kù)的結(jié)構(gòu);模式既不涉及應(yīng)用程序,又不涉及數(shù)據(jù)庫(kù)結(jié)構(gòu)的存儲(chǔ);②外模式:是模式的一個(gè)子集,是與某一個(gè)應(yīng)用程序有關(guān)的邏輯表示。特點(diǎn):一個(gè)應(yīng)用程序只能使用一個(gè)外模式,但同一個(gè)外模式可為多個(gè)應(yīng)用程序使用。③內(nèi)模式:描述數(shù)據(jù)庫(kù)結(jié)構(gòu)的存儲(chǔ),但不涉及物理記錄。2.兩級(jí)映象①外模式/模式映象:保證數(shù)據(jù)庫(kù)的邏輯獨(dú)立性;②模式/內(nèi)模式映象:保證數(shù)據(jù)庫(kù)的物理獨(dú)立性;3.兩級(jí)映象的意義①使數(shù)據(jù)庫(kù)與應(yīng)用系統(tǒng)完全分開(kāi),數(shù)據(jù)庫(kù)改變時(shí),應(yīng)用系統(tǒng)不必改變。②數(shù)據(jù)的存取完全由DBMS管理,用戶不必考慮存取路徑。數(shù)據(jù)庫(kù)管理系統(tǒng)1.DBMS的功能:負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理與控制。①數(shù)據(jù)定義:即定義數(shù)據(jù)庫(kù)中各對(duì)象的結(jié)構(gòu)②數(shù)據(jù)操縱:包括對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、插入、刪除、修改等操作。③數(shù)據(jù)控制:包括安全性控制、完整性控制、并發(fā)控制、數(shù)據(jù)庫(kù)恢復(fù)。2.DBMS的組成:DDL語(yǔ)言DML語(yǔ)言DCL語(yǔ)言實(shí)用程序注意:①SQL集DDL,DML,DCL功能于一體;②所有應(yīng)用程序通過(guò)SQL語(yǔ)句才能訪問(wèn)數(shù)據(jù)庫(kù)一、基本概念1.碼:能唯一標(biāo)識(shí)元組的屬性集。2.候選碼:一個(gè)屬性集既能唯一標(biāo)識(shí)元組,且又不含有多余屬性,一個(gè)關(guān)系模式可以有多個(gè)候選碼。3.主碼:任選候選碼中的一個(gè)?!稊?shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)196284.主屬性:主碼中包含的各個(gè)屬性。5.非主屬性:不包含在主碼中的各個(gè)屬性。6.外碼:設(shè)F是關(guān)系R的一個(gè)屬性,不是R的主碼,但卻是另一個(gè)關(guān)系S的主碼,則稱F是關(guān)系R的外碼。例:student(sno,sname,ssex,sage,sdept)Sc(sno,cno,grade)Sc的主碼為:(sno,cno);外碼為:sno關(guān)系的數(shù)學(xué)定義一、域(domain)1.定義:域是一組具有相同類型的值的集合。2.域的基數(shù):域中所含數(shù)據(jù)的個(gè)數(shù)。二、笛卡爾積1.定義:給定一組域D1,D2,D3,則D1×D2×D3稱為笛卡爾積。2.笛卡爾積D1×D2×D3對(duì)應(yīng)一個(gè)二維表,所含元組的個(gè)數(shù)等于各個(gè)域的基數(shù)之積。三、關(guān)系1.定義:笛卡兒積的一部分元組稱為關(guān)系。2.關(guān)系的目(或度):一個(gè)關(guān)系所含屬性的個(gè)數(shù)。3.關(guān)系的性質(zhì)任意兩個(gè)元組不能完全相同,但屬性名允許重復(fù)。四、關(guān)系的完整性1.實(shí)體完整性:指關(guān)系的所有主屬性都不能取空值。注意:實(shí)體完整性不僅僅是主碼整體不能取空值。2.參照完整性:指一個(gè)關(guān)系外碼的取值必須是相關(guān)關(guān)系中主碼的有效值或空值。例:班級(jí)(班名,人數(shù))學(xué)生(學(xué)號(hào),姓名,性別,密碼,班名)在學(xué)生表中,班名的取值必須是班級(jí)表[班名]的值或空值。關(guān)系代數(shù)一、傳統(tǒng)的集合運(yùn)算設(shè)關(guān)系R、S的結(jié)構(gòu)完全相同,則:R∪S:由屬于R或?qū)儆冢拥脑M組成。R∩S:由既屬于R又屬于S的元組組成。R-S:由屬于R而不屬于S的元組組成。思考:(R∩S)∪(R-S)=?R×S:設(shè)R有m個(gè)屬性,K1個(gè)元組;S有n個(gè)屬性,K2個(gè)元組,則R×S含有(m+n)個(gè)屬性,(K1×K2)個(gè)元組。二、專門的關(guān)系運(yùn)算《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628(R)1.選擇:從關(guān)系R中選擇滿足條件的元組。記為:F2.投影:從關(guān)系R中選擇若干屬性組成新的關(guān)系,并把新關(guān)系的重復(fù)元組去掉。(R)A記為:S(RS)3.條件連接:將兩關(guān)系按一定條件連接成一個(gè)新關(guān)系,記為:RFF說(shuō)明:條件連接:兩關(guān)系可以沒(méi)有公共屬性,若有公共屬性,則新關(guān)系含有重復(fù)屬性。4.自然連接:將兩關(guān)系按公共屬性連接成一個(gè)新的關(guān)系,并把新關(guān)系的重復(fù)屬性去掉。記為:RS說(shuō)明:①自然連接:兩關(guān)系至少有一個(gè)公共屬性。②對(duì)于R的每個(gè)元組,S都從第一個(gè)元組開(kāi)始判斷,若兩元組的公共屬性值相同,則產(chǎn)生一個(gè)新元組添加到新關(guān)系中,最后把新關(guān)系中的重復(fù)屬性去掉。5.除:給定關(guān)系R(x,y)和S(y,z),則R÷S=P(x),其中x,y,z為屬性組。求解過(guò)程:①求R中x可以取哪些值,并求各值的象集。②求S在屬性組y上的投影K。③檢查每個(gè)象集是否包含K注:除不是一個(gè)必須的運(yùn)算,可以由其它運(yùn)算符代替。例:設(shè)有關(guān)系R,S如下圖,求R÷S。RAa1a2Bb1Cc2SBCc2c1Dd1b1b3b4c7c6b2b2d1d2a3a1c3b2b6c3c6c3a4a2b2a1b2c1解:在關(guān)系R中,A可以取四個(gè)值,a1,a2,a3,a4。a1的象集為{(b1,c2),(b2,c3),(b2,c1)}a2的象集為{(b3,c7),(b2,c3)}a3的象集為{(b4,c6)}a4的象集為{(b6,c6)}S在(B,C)上的投影K為{(b1,c2),(b2,c3),(b2,c1)}顯然只有a1的象集包含K,故R÷S={a1}結(jié)論:如何寫關(guān)系代數(shù)表達(dá)式?答:①查詢涉及多個(gè)關(guān)系時(shí),一般使用∞→。②查詢涉及“否定”時(shí),一般用差運(yùn)算。③查詢涉及“全部”時(shí),一般用除運(yùn)算?!稊?shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628④查詢涉及“至少”時(shí),一般用×關(guān)系數(shù)據(jù)庫(kù)規(guī)范化理論函數(shù)依賴一、有關(guān)概念:R表XHKHC1C2C4C1KMOSDBSAIXM高明高飛高飛高明高明DZD1D2D2CJ70961962729628075962OSOSD1963C1D1901.函數(shù)依賴:任給R(U),U為屬性集,x、y為U的子集,如果對(duì)于x的每個(gè)值,y有唯一確定的值與之對(duì)應(yīng),則稱x決定y,或y函數(shù)依賴于x。記為:x→y。例:KH→KMXM→DZ(XH,KH)→CJKH→(KM,XM)2.完全函數(shù)依賴:若x→y,且對(duì)于x的所有真子集x′,都有x′y,則稱x完全決定y,或y完全函數(shù)依賴于x。記為:xfy。例1:(XH,KH)→CJ但XH→CJKH→CJ故(XH,KH)fCJ例2:KH→KMKHfKM則結(jié)論:若x→y,且x只包含一個(gè)屬性,則xfy。3.部分函數(shù)依賴:若x→y,且存在x的一個(gè)真子集x′,滿足x′→y,則稱x部分決定y,或y部分函數(shù)依賴于x。記為:xpy。例1:(KH,KM)→XM但KM→XM,KM)pXM則(KH《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628例2:(XH,KH)→DZ但KH→DZ,KH)DZp則(XH4.傳遞函數(shù)依賴:若x→y,y→z,但y∕x,則xtz例:KM→XM,XM→DZ,但XM∕KM二、平凡函數(shù)依賴與非平凡函數(shù)依賴設(shè)x→y,如果y是x的子集,則該依賴是平凡的。如:Sno,sname→sno如果y中至少有一個(gè)屬性不在x中,則該依賴是非平凡的。如:Sno,sname→sname,sdept如果y中沒(méi)有一個(gè)屬性在x中,則該依賴為完全非平凡的。三、函數(shù)依賴的推理規(guī)則設(shè)有關(guān)系R,x、y、z為R的一個(gè)屬性集,則有:①自反律:若yx,則x→y。②增廣律:若x→y,則xz→yz。③傳遞律:若x→y,y→z,則x→z。注意傳遞律與傳遞函數(shù)依賴的區(qū)別。④合并律:若x→y,x→z,則x→yz。⑤分解律:若x→yz,則x→y,x→z。關(guān)系模式的規(guī)范化一、問(wèn)題提出R表XH961KHC1C2KMOSDBSAIOSOSXM高明高飛高飛高明高明DZD1CJ70962D27280962C4C1D2962D1D175963C190答:存在問(wèn)題①數(shù)據(jù)冗余大;②修改麻煩;③插入異常:應(yīng)該插入到DB中的數(shù)據(jù)插不進(jìn)去。如:新開(kāi)課程沒(méi)有學(xué)生選修時(shí),新開(kāi)課程的課程號(hào)、課程名插不進(jìn)去。④刪除異常:不應(yīng)該刪除的數(shù)據(jù)被刪掉。《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628如選修某門課的學(xué)生畢業(yè)了,在刪除學(xué)生信息的同時(shí),把課程信息也刪除掉。結(jié)論:一個(gè)好的關(guān)系模式應(yīng)滿足:①冗余應(yīng)盡可能少;②應(yīng)盡可能避免插入、刪除異常;③消去關(guān)系中不合適的屬性依賴關(guān)系。二、范式①什么叫范式?指一個(gè)關(guān)系的非主屬性函數(shù)依賴于主碼的程度。②什么叫關(guān)系規(guī)范化?指一個(gè)關(guān)系從低級(jí)范式向高級(jí)范式的轉(zhuǎn)換過(guò)程。1NF2NF3NFBCNF4NF5NF③應(yīng)用:關(guān)系規(guī)范化理論應(yīng)用在邏輯結(jié)構(gòu)設(shè)計(jì)階段。三、關(guān)系模式的規(guī)范化1.第一范式(1NF)①定義:若關(guān)系R的所有屬性不能再分,則R∈1NF②存在問(wèn)題③原因:存在非主屬性對(duì)主碼的部分依賴。(XH,KH)XMp(XH,KH)DZp(XH,KH)CJf(XH,KH)KMp④解決辦法:消除非主屬性對(duì)主碼的部分依賴,將關(guān)系R一分為二,將滿足完全依賴的屬性集組成一個(gè)關(guān)系;將滿足部分依賴的屬性集組成另一個(gè)關(guān)系;R1表XHKH961C196C22R2表KMCJ70KHC1XMDZOS高明D172C2DBS高飛D2962C4807590C4AI高飛D2962C1963C1R1主碼:(XH,KH)R2主碼:KH2.第二范式(2NF)①定義:若關(guān)系R∈1NF,且它的每個(gè)非主屬性都完全依賴于主碼,則稱R∈2NF。《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628②存在問(wèn)題:冗余大:R1必要冗余,R2冗余可以修改。修改麻煩插入異常:如新來(lái)的教師沒(méi)有上課,則該教師的信息就沒(méi)辦法插入R2表中。刪除異常:若某位教師只授一門課,當(dāng)該門課不開(kāi)時(shí),該教師的信息亦被刪除。③原因:存在非主屬性對(duì)主碼的傳遞依賴。KH→XM,XM→DZ,但XMKH∴KHDZt[傳遞依賴必須有兩個(gè)非主屬性]④解決辦法:將R2一分為二R21表R22表DZKHKMXMXMC1C2C4OS高明DBS高飛AI高飛高明高飛D1D2R21主碼:KHR22主碼:XM3.第三范式(3NF)①定義:若關(guān)系R∈2NF,且它的每個(gè)非主屬性都不傳遞依賴于主碼,則稱R∈3NF。②規(guī)范化過(guò)程非規(guī)范關(guān)系↓使每個(gè)屬性都不能再分1NF↓消去非主屬性對(duì)主碼的部分依賴2NF↓消去非主屬性對(duì)主碼的傳遞依賴3NF4.結(jié)論①若R∈1NF,且主碼只含一個(gè)屬性,則R一定為2NF。②若R∈2NF,且只有0~1個(gè)非主屬性,則R一定為3NF。③3NF一般控制了數(shù)據(jù)冗余,一般避免了操作異常。④范式并非越高越好,適可而止。數(shù)據(jù)庫(kù)設(shè)計(jì)一、數(shù)據(jù)庫(kù)設(shè)計(jì)的步驟①需求分析:了解分析用戶的需要、要求。②概念結(jié)構(gòu)設(shè)計(jì):根據(jù)需求分析的結(jié)果畫概念模型(即E-R圖)?!稊?shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628③邏輯結(jié)構(gòu)設(shè)計(jì):將E-R圖轉(zhuǎn)換為某一種數(shù)據(jù)模型,并優(yōu)化。④物理結(jié)構(gòu)設(shè)計(jì)⑤數(shù)據(jù)庫(kù)實(shí)施⑥數(shù)據(jù)庫(kù)運(yùn)行與恢復(fù)概念結(jié)構(gòu)設(shè)計(jì)一、局部E-R圖設(shè)計(jì)1.確定局部范圍通常把系統(tǒng)涉及的各個(gè)部門或各個(gè)主要功能作為局部。2.確定實(shí)體與屬性①屬性是不能再分的數(shù)據(jù)項(xiàng);②聯(lián)系只發(fā)生在兩實(shí)體之間;③原則上,能夠作為屬性,就不要作為實(shí)體。二、合并成總體E-R圖1.消除各局部E-R圖的沖突問(wèn)題。2.按公共實(shí)體名合并,生成初步E-R圖。3.消除冗余的屬性和冗余的聯(lián)系,生成總體E-R圖。邏輯結(jié)構(gòu)設(shè)計(jì)一、聯(lián)系的屬性和主碼(1)聯(lián)系的屬性:必須包含相關(guān)聯(lián)的各實(shí)體型的主碼。(2)聯(lián)系的主碼1:1聯(lián)系:可以是相關(guān)聯(lián)的任一實(shí)體型的主碼。1:n聯(lián)系:必須是n方實(shí)體型的主碼。m:n聯(lián)系:必須是相關(guān)聯(lián)的各實(shí)體型的主碼之和。二、E-R圖向關(guān)系模型的轉(zhuǎn)換(1)把每個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。(2)1:1聯(lián)系:可以消化到相關(guān)聯(lián)的任一實(shí)體型對(duì)應(yīng)的關(guān)系模式中。XMXHNL班長(zhǎng)1BHXH管理1班級(jí)BHRS《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628班長(zhǎng)(XH,XM,NL,BH)班級(jí)(BH,RS)(3)1:n聯(lián)系:可以消化到n方實(shí)體名對(duì)應(yīng)的關(guān)系模式中。例:一個(gè)班級(jí)有多名學(xué)生,每名學(xué)生只能屬于一個(gè)班級(jí)。每一個(gè)班級(jí)有一名班長(zhǎng),他是學(xué)生中的一員。XHXMNL學(xué)生1nXH組成班長(zhǎng)BH11班級(jí)BHRS學(xué)生(XH,XM,NL,BH)班級(jí)(BH,RS,XH)班長(zhǎng)的學(xué)號(hào)(4)m:n聯(lián)系:必須轉(zhuǎn)換為一個(gè)關(guān)系模式,并且不能消化。例:snamessexsagesdeptsno學(xué)生msnograde選修cnon課程cnocreditcname學(xué)生(sno,sname,ssex,sage,sdept)課程(cno,cname,credit)《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628選修(sno,cno,grade)(5)多元聯(lián)系:不能消化例:供應(yīng)商m供應(yīng)nk產(chǎn)品零件物理結(jié)構(gòu)設(shè)計(jì)與數(shù)據(jù)庫(kù)實(shí)施1.物理結(jié)構(gòu)設(shè)計(jì)在邏輯設(shè)計(jì)的基礎(chǔ)上,為每個(gè)關(guān)系模式選擇合適的存儲(chǔ)結(jié)構(gòu)與存儲(chǔ)方式。選擇存儲(chǔ)結(jié)構(gòu):即決定每個(gè)表的記錄順序。選擇存取方式:即決定為哪些屬性建立非聚集索引,以便加快查找速度。一般把經(jīng)常查詢的屬性名指定為非聚集索引。2.?dāng)?shù)據(jù)庫(kù)實(shí)施主要工作:定義數(shù)據(jù)庫(kù)結(jié)構(gòu);組織數(shù)據(jù)入庫(kù);編寫應(yīng)用程序;數(shù)據(jù)庫(kù)試運(yùn)行;SQLServer2005系統(tǒng)入門一、運(yùn)行環(huán)境最低處理器速度:600MHZ(推薦1GB或者更快)最小內(nèi)存:512MB(推薦1GB或者更大)可用硬盤空間:1.6GB二、SQLServer2005的主要組件1.服務(wù):用于啟動(dòng)SQLServer2005服務(wù)器單擊“開(kāi)始”菜單,選擇“控制面板”|“管理工具”|“服務(wù)”選項(xiàng),將“SQLServer(MSSQLSERVER)”選項(xiàng)置為“自動(dòng)”,即隨操作系統(tǒng)的啟動(dòng)而自動(dòng)啟動(dòng)。安裝時(shí)默認(rèn)為“自動(dòng)”。2.配置管理器(ConfigurationManager):用于啟動(dòng)SQLServer2005服務(wù)器注意:“服務(wù)”窗口中顯示的是操作系統(tǒng)中全部的服務(wù)程序,而“配置管理器”窗口中顯示的僅僅是與SQLServer2005有關(guān)的服務(wù)程序?!稊?shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)196283.SQLServerManagementStudio(簡(jiǎn)稱SSMS,管理工作室)組合了對(duì)象資源管理器、查詢編輯器的功能。對(duì)象資源管理器用于管理數(shù)據(jù)庫(kù)服務(wù)器中的所有數(shù)據(jù)庫(kù)對(duì)象;4.SSMS查詢編輯器:主要用于輸入、執(zhí)行和保存Transact-SQL命令創(chuàng)建和使用數(shù)據(jù)庫(kù)一、數(shù)據(jù)庫(kù)文件1.一個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)主要數(shù)據(jù)文件和一個(gè)事務(wù)日志文件。如果數(shù)據(jù)庫(kù)很大,可以使用一個(gè)主要數(shù)據(jù)文件、多個(gè)次要數(shù)據(jù)文件和多個(gè)事務(wù)日志文件。主數(shù)據(jù)文件(.mdf)用于存放數(shù)據(jù)庫(kù)的各類對(duì)象次數(shù)據(jù)文件(.ndf)事務(wù)日志文件(.ldf):用來(lái)記錄對(duì)數(shù)據(jù)庫(kù)對(duì)象的所有更新操作。2.系統(tǒng)數(shù)據(jù)庫(kù)Master數(shù)據(jù)庫(kù)、Model數(shù)據(jù)庫(kù)二、創(chuàng)建數(shù)據(jù)庫(kù)1.打開(kāi)數(shù)據(jù)庫(kù):Use數(shù)據(jù)庫(kù)名2.刪除數(shù)據(jù)庫(kù):Dropdatabase數(shù)據(jù)庫(kù)名三、修改數(shù)據(jù)庫(kù)1.分離和附加數(shù)據(jù)庫(kù)2.備份和還原數(shù)據(jù)庫(kù)3.?dāng)?shù)據(jù)的導(dǎo)入和導(dǎo)出數(shù)據(jù)庫(kù)的備份和恢復(fù)1.將數(shù)據(jù)庫(kù)備份到一個(gè)備份文件中:Backupdatabase數(shù)據(jù)庫(kù)名todisk=’路徑\文件名’2.將備份文件恢復(fù)到數(shù)據(jù)庫(kù)中:Restoredatabase數(shù)據(jù)庫(kù)名fromdisk=’路徑\文件名’創(chuàng)建和使用表數(shù)據(jù)類型1.字符型char(n):定長(zhǎng)字符型,n表示字符數(shù),取值為1~8000。若缺省n,則默認(rèn)為1。varchar(n):變長(zhǎng)字符型Text:可以存儲(chǔ)任意長(zhǎng)的字符串《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628說(shuō)明:標(biāo)準(zhǔn)字符型:每個(gè)英文字母、數(shù)字算1個(gè)字符,每個(gè)漢字算2個(gè)字符,每個(gè)字符占1個(gè)字節(jié)。2.統(tǒng)一碼字符型每個(gè)英文字母、數(shù)字、漢字算1個(gè)字符,每個(gè)字符占2個(gè)字節(jié)。nchar(n):n表示字符數(shù),取值為1~4000。nvarchar(n)ntext:可以存儲(chǔ)任意長(zhǎng)的統(tǒng)一碼字符串。例:設(shè)某表的結(jié)構(gòu)如下:nochar(6),namenchar(6)則no可以賦予3個(gè)漢字,name可以賦予6個(gè)漢字3.整型取值范圍所占字節(jié)數(shù)BigintInt84Smallint-32768~+322767Tinyintbit0~2550,11即邏輯型4.實(shí)型①精確數(shù)值型Decimal(p,s)Numeric(p,s)精度P:表示全部數(shù)字的位數(shù)(不計(jì)小數(shù)點(diǎn)和正負(fù)號(hào))S:表示小數(shù)位數(shù),若缺省S,則默認(rèn)為0P-S:表示整數(shù)位數(shù)②近似數(shù)值型Real精確到7位有效數(shù)字Float精確到15位有效數(shù)字5.貸幣型Money:占8?jìng)€(gè)字節(jié),保留4位小數(shù)Smallmoney:占4個(gè)字節(jié),保留4位小數(shù)字符串常量:由單引號(hào)括住的字符序列貸幣型常量:可以是一個(gè)實(shí)型常量6.日期時(shí)間型Dat(yī)etime、Smalldatetime①若省略日期部分,則默認(rèn)為:’1900-1-1’若省略時(shí)間部分,則默認(rèn)為:’00:00:00’《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628②日期格式:’yyyy-mm-dd’時(shí)間格式:’hh:mm:ss’使用對(duì)象資源管理器創(chuàng)建和管理表一、創(chuàng)建表1.在一個(gè)表中只能定義一個(gè)標(biāo)識(shí)字段。2.只有整型和精確數(shù)值型(decimal、numeric)字段才能指定為標(biāo)識(shí)字段。3.把某個(gè)字段指定為公式字段。二、設(shè)置約束1.主鍵約束:每個(gè)表中只能有一列或一個(gè)組合被指定為主鍵,主鍵中的各個(gè)列不能為空值。2.外鍵約束:創(chuàng)建外鍵約束,就是定義兩個(gè)表的永久關(guān)聯(lián),這兩個(gè)表分別稱為主鍵表、外鍵表。外鍵表中外鍵的值只能是主鍵表中主鍵的有效值或空值。3.唯一性約束:主鍵約束與唯一性約束的區(qū)別是:(1)在一個(gè)表中只能定義一個(gè)主鍵約束,但可定義多個(gè)唯一性約束;(2)指定為主鍵約束的列不能取空值,但指定為唯一性約束的列允許取空值。4.唯一性約束:用于限制輸入到一列或多列的值的范圍,保證數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性。5.默認(rèn)值約束:T-SQL一、SQL語(yǔ)言的特點(diǎn)①SQL語(yǔ)言集數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)控制的功能于一體。動(dòng)詞數(shù)據(jù)定義數(shù)據(jù)查詢Creat(yī)e、dropselect數(shù)據(jù)操縱Insert、delete、updateGrant、revoke數(shù)據(jù)控制②所有的DBMS都支持SQL語(yǔ)言。T-SQL基礎(chǔ)一、創(chuàng)建和使用數(shù)據(jù)庫(kù)1.創(chuàng)建數(shù)據(jù)庫(kù)creat(yī)edatabase數(shù)據(jù)庫(kù)名《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)196282.使用數(shù)據(jù)庫(kù)Use數(shù)據(jù)庫(kù)名3.刪除數(shù)據(jù)庫(kù)dropdat(yī)abase數(shù)據(jù)庫(kù)名二、定義表1.創(chuàng)建表createtable表名(屬性名類型,…,屬性名類型)①指定標(biāo)識(shí)字段:identity(標(biāo)識(shí)種子,標(biāo)識(shí)增量)②指定公式字段:屬性名as表達(dá)式例:createtablestudent(nointidentity(1,1),namechar(6),chismallint,mat(yī)smallint,scoreaschi+mat)2.刪除表droptable表名,…,表名三、select語(yǔ)句select*/表達(dá)式表[into新表]from表名,…,表名[where條件][groupby屬性名][having條件][orderby屬性名][Asc/Desc]1.Select子句①*代表所有屬性名②若一個(gè)屬性名來(lái)自多個(gè)表,則屬性名前須冠以表名,格式為:表名.屬性名③設(shè)置表達(dá)式的別名:表達(dá)式As別名④限制查詢結(jié)果的記錄行數(shù):alltopn返回全部記錄返回前面n號(hào)記錄distinct表示取消重復(fù)行說(shuō)明:topn只能放在關(guān)鍵字select的后面;all、distinct只能放在關(guān)鍵字select或聚合函數(shù)的后面。2.Where子句

《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628①in的格式:屬性名in(常量,…,常量)②like的格式:屬性名like通配字符串通配符有:%表示0個(gè)或多個(gè)字符-表示1個(gè)字符③在Where子句中指定連接:Where表名1.屬性名=表名2.屬性名3.Orderby子句orderby屬性名1[Asc/Desc],屬性名2[Asc/Desc]4.聚合函數(shù)①sum(屬性名):縱向求數(shù)值型屬性之和。②avg(屬性名)③count(*)返回表的記錄行數(shù)(含重復(fù)行)。count(屬性名)返回指定列中取非NULL值的單元格數(shù)目。count(distinct屬性名)返回指定列中取非NULL值、非重復(fù)的單元格數(shù)目。④max(屬性名)⑤min(屬性名)5.Groupby子句使用Groupby子句時(shí),Select子句只能使用分組項(xiàng)字段和聚合函數(shù)例:以性別為分組項(xiàng),求每一組的平均年齡。Selectssex,avg(sage)as平均年齡FromstudentGroupbyssex6.Having子句①Having子句只能跟在Groupby子句之后,且只能使用聚合函數(shù)和分組項(xiàng)字段。②where子句放在Groupby子句之前,甚至可以沒(méi)有Groupby子句;且不能包含聚合函數(shù)。例:以系別為分組項(xiàng),查詢學(xué)生平均年齡大于19歲的系的系名,平均年齡。Selectsdept,avg(sage)as平均年齡FromstudentGroupbysdeptHavingavg(sdept)>197.into子句功能:將查詢結(jié)果保存到新的基表中。一、查詢的分類單表查詢連接查詢嵌套查詢《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)196281.連接查詢:在where子句中指定連接where表名1.屬性名=表名2.屬性名2.嵌套查詢①嵌套查詢的特點(diǎn)·每級(jí)查詢的from子句一般只包含一個(gè)表名?!ひ粋€(gè)嵌套查詢總可以分解為若干個(gè)單表查詢,總可以改寫成連接查詢?!と舨樵兘Y(jié)果顯示的屬性名來(lái)自一個(gè)表,才可以寫成嵌套查詢?!ぷ硬樵儾荒苁褂胦rderby子句,orderby只能用于最頂層的查詢。②在where子句中指定子查詢where屬性名[not]in(子查詢):子查詢返回一列多行。where屬性名=(子查詢):子查詢返回一列一行。where[not]exists(子查詢):子查詢返回多列多行。五、數(shù)據(jù)操縱1.insert語(yǔ)句(1)每次插入一條記錄insertinto表名[(屬性名表)]values(表達(dá)式表)(2)插入子查詢的結(jié)果insertinto表名[(屬性名表)]子查詢例:insertintostudentselect*fromstudent12.update語(yǔ)句updat(yī)e表名set屬性名=值,…,屬性名=值[where條件]缺省where子句,默認(rèn)為更新全部記錄。3.delete語(yǔ)句deletefrom表名[where條件]T-SQL程序設(shè)計(jì)基礎(chǔ)一、常量:字符型:由單引號(hào)括住,例:'china'整型實(shí)型日期型:由單引號(hào)括住的具有日期或時(shí)間意義的序列,格式為:'yyyy-mm-dd','hh:mm:ss'《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628二、變量:局部變量:由用戶定義和賦值,以@開(kāi)頭。全局變量:由系統(tǒng)定義和賦值,以@@開(kāi)頭。1.聲明局部變量Declare變量名類型例:declare@aint,@bchar(5)注:不要把局部變量聲明為text、ntext、image2.給局部變量賦值①使用set語(yǔ)句:Set變量名=表達(dá)式②使用select語(yǔ)句Select變量名=表達(dá)式,……,變量名=表達(dá)式[from表名]若表達(dá)式中含有屬性名,則必須使用from子句。例:declare@achar(5),@bchar(6)Select@a='95001',@b='王名'或:select@a=sno,@b=snameFromstudent3.輸出表達(dá)式的值:①使用print語(yǔ)句Print表達(dá)式②使用select語(yǔ)句Select表達(dá)式,……,表達(dá)式[from表名]例:A)select@a,@bB)selectsno,snameFromstudentC)selectsnoas學(xué)號(hào),snameas姓名Fromstudent等價(jià)于:select學(xué)號(hào)=sno,姓名=snameFromstudent4.局部變量的作用域:只能在聲明它的批處理中使用。例:Usestud《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628GoDeclare@aintSet@a=5Print@aGoDeclare@achar(5)Set@a='張三'Print@a三、運(yùn)算符:算術(shù)運(yùn)算符(*、/、%→+、-)↓關(guān)系運(yùn)算符(>、>=、<、<=、=、<>)↓邏輯運(yùn)算符(not→and→or)批處理1.什么叫批處理?一個(gè)腳本由一個(gè)或多個(gè)批處理組成,批處理以GO作為結(jié)束標(biāo)志。2.批處理是腳本的編譯單位,當(dāng)一個(gè)批處理中的某個(gè)語(yǔ)句出現(xiàn)編譯錯(cuò)誤,則批處理中的任何語(yǔ)句均無(wú)法執(zhí)行。3.當(dāng)一個(gè)批處理中的某個(gè)語(yǔ)句出現(xiàn)運(yùn)行錯(cuò)誤,則批處理中當(dāng)前語(yǔ)句和它之后的語(yǔ)句將無(wú)法執(zhí)行。流程控制語(yǔ)句一、begin…end語(yǔ)句Begin語(yǔ)句1:語(yǔ)句nEnd二、if-else語(yǔ)句1.格式:if邏輯表達(dá)式語(yǔ)句1[else語(yǔ)句2]2.當(dāng)邏輯表達(dá)式包含子查詢時(shí),子查詢必須用括號(hào)括住。屬性名in(子查詢)子查詢返回一列多行

《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628屬性名=(子查詢)Exists(子查詢)三、case表達(dá)式Case子查詢返回一列一行子查詢返回多列多行When邏輯表達(dá)式1then結(jié)果1When邏輯表達(dá)式2then結(jié)果2……[else結(jié)果n]End說(shuō)明:case表達(dá)式不是語(yǔ)句,不能單獨(dú)執(zhí)行。例:usestudSelect姓名=sname,系別=CaseWhensdept='CS'then'計(jì)算機(jī)科學(xué)系'Whensdept='IS'then'信息系統(tǒng)系'Whensdept='MA'then'數(shù)學(xué)系'End四、while語(yǔ)句1.格式:While邏輯表達(dá)式Begin語(yǔ)句組End2.專用于循環(huán)體的語(yǔ)句:Break強(qiáng)制退出while語(yǔ)句,執(zhí)行其后續(xù)語(yǔ)句。Continue返回while語(yǔ)句的入口。Break、Continue必須放在循環(huán)體內(nèi),并常與if-else語(yǔ)句結(jié)合使用。二、其它語(yǔ)句1.Return語(yǔ)句格式:Return(整數(shù)值)功能:用于存儲(chǔ)過(guò)程或批處理中,功能是退出所在的存儲(chǔ)過(guò)程或批處理。說(shuō)明:當(dāng)用于存儲(chǔ)過(guò)程時(shí),若沒(méi)有為Return指定整數(shù)值,則默認(rèn)為0。2.存儲(chǔ)過(guò)程①創(chuàng)建存儲(chǔ)過(guò)程

《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628Createprocedure存儲(chǔ)過(guò)程名[@形參名類型]AsSQL語(yǔ)句序列②執(zhí)行存儲(chǔ)過(guò)程Exec存儲(chǔ)過(guò)程名[常量|@變量名]:③刪除存儲(chǔ)過(guò)程Dropprocedure存儲(chǔ)過(guò)程名④說(shuō)明:存儲(chǔ)過(guò)程不返回值,或者只能返回整數(shù)值;而函數(shù)可返回任意類型的值。3.Waitfor語(yǔ)句函數(shù)1.創(chuàng)建函數(shù)creat(yī)efunction函數(shù)名(@形參名類型)returns類型asbegin函數(shù)體End注:①函數(shù)體最后一條語(yǔ)句必須是return語(yǔ)句。②兩類函數(shù):標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)2.執(zhí)行函數(shù)Exec@變量名1=函數(shù)名常量|@變量名Print函數(shù)名(常量|@變量名)3.刪除函數(shù)Dropfunction函數(shù)名附加練習(xí)題9一、定義表:1.SQLserver中建立一個(gè)數(shù)據(jù)庫(kù)stu。2.使用企業(yè)管理器中創(chuàng)建如下三個(gè)表。student表Snosname李勇ssex男sage201918sdeptCS9500195002劉晨女IS9500395004王名女MACS張立男18Course表cnocnamecredit1數(shù)據(jù)庫(kù)原理4《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)196282操作系統(tǒng)33Java程序設(shè)計(jì)34匯編語(yǔ)言2Sc表Sno9500195001950019500295002二、查詢表:Cno1grade852318882908031.查詢?nèi)w學(xué)生的姓名及出生年份。2.查詢年齡小于19歲的男學(xué)生的學(xué)號(hào),姓名。3.查詢選修了課程的學(xué)生人數(shù)。[提示:selectcount(distinctsno)from4.查詢所有選修過(guò)課的學(xué)生的學(xué)號(hào)、姓名。sc]5.查詢數(shù)學(xué)系(MA)、計(jì)算機(jī)科學(xué)系(CS)的學(xué)生的姓名和性別。6.查詢年齡最大的2名學(xué)生情況7.查詢姓“劉”的學(xué)生情況。8.以性別為分類項(xiàng),查詢每一類的平均年齡。9.查詢選修了課程名為“操作系統(tǒng)”的學(xué)生的學(xué)號(hào)、姓名。10.查詢年齡低于平均年齡的所有學(xué)生的姓名、系別三、操縱表:1.在企業(yè)管理器中創(chuàng)建一個(gè)新表student1:Snosname王虹ssex女sage19sdeptCSMA9500595006萬(wàn)亮男202.將student1表插入到student表的后面。[提示:insertintostudentselect*fromstudent1]3.將(95020,陳冬,男,18,IS)插入到student表中。4.刪除student1表中的所有記錄,使之成為空表。5.把student表中所有男生記錄復(fù)制到空表student1中。6.把student表中所有女生記錄復(fù)制到新表student2中。7.將所有學(xué)生的年齡增加1歲。8.將計(jì)算機(jī)科學(xué)系全體學(xué)生的成績(jī)置0。[提示:updatescsetgrade=0wheresnoin(selectsnofromstudentwheresdept=’CS’)9.刪除學(xué)號(hào)為95020的學(xué)生記錄。《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)1962810.刪除計(jì)算機(jī)科學(xué)系所有學(xué)生的選課記錄。T-SQL高級(jí)應(yīng)用一、查詢的分類單表查詢連接查詢嵌套查詢一、連接查詢:在where子句中指定連接1.內(nèi)連接:where表名1.屬性名=表名2.屬性名2.自身連接:給一個(gè)表取兩個(gè)別名,where子句的格式為:where別名1.屬性名=別名2.屬性名3.左外連接:where表名1.屬性名*=表名2.屬性名意義:查詢結(jié)果包含了表1的全部記錄和表2滿足條件的記錄。4.右外連接:where表名1.屬性名=*表名2.屬性名意義:查詢結(jié)果包含了表2的全部記錄和表1滿足條件的記錄。三、連接查詢:在from子句中指定連接1.內(nèi)連接:from表名1innerjoin表名2on條件例:select*fromstudent,scwherestudent.sno=sc.sno等價(jià)于select*fromstudentinnerjoinsconstudent.sno=sc.sno2.左外連接:from表名1leftouterjoin表名2on條件3.右外連接:from表名1rightouterjoin表名2on條件4.完全外連接:from表名1full[outer]join表名2on條件5.交叉連接四、嵌套查詢事務(wù)處理1.什么叫事務(wù)?事務(wù)是用戶定義的一組操作序列。①事務(wù)是并發(fā)控制的基本單位。②一個(gè)事務(wù)包含的諸操作要么都執(zhí)行,要么都不執(zhí)行。2.事務(wù)的屬性《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628原子性:指事務(wù)中包含的諸操作要么都執(zhí)行,要么都不執(zhí)行。一致性:事務(wù)必須使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。隔離性:一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。持久性3.顯式定義事務(wù)begintransaction[事務(wù)名]:commit/rollback[transaction事務(wù)名]當(dāng)未顯式指定事務(wù),則一個(gè)SQL語(yǔ)句就是一個(gè)事務(wù)。4.在事務(wù)內(nèi)設(shè)置保存點(diǎn)begintransactionsavetransaction保存點(diǎn)名rollbacktransaction保存點(diǎn)名功能:將保存點(diǎn)到rollback子句之間的SQL操作回滾掉。數(shù)據(jù)的鎖定一、并發(fā)操作與數(shù)據(jù)不一致性1.數(shù)據(jù)不一致性包括三類丟失修改:指事務(wù)1與事務(wù)2從數(shù)據(jù)庫(kù)中讀入同一數(shù)據(jù)并修改,事務(wù)2的提交結(jié)果破壞事務(wù)1提交的結(jié)果,導(dǎo)致事務(wù)1的修改被丟失。不可重復(fù)讀:指事務(wù)1讀取數(shù)據(jù)后,事務(wù)2執(zhí)行更新操作,使事務(wù)1無(wú)法再現(xiàn)前一次讀取結(jié)果。讀臟數(shù)據(jù):指事務(wù)1修改某一數(shù)據(jù)后,事務(wù)2讀取該數(shù)據(jù),事務(wù)1由于某種原因被撤銷,這時(shí)數(shù)據(jù)又恢復(fù)到原值,事務(wù)2讀到的數(shù)據(jù)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致,稱為“臟”數(shù)據(jù)。2.產(chǎn)生數(shù)據(jù)不一致性的原因并發(fā)操作破壞了事務(wù)的隔離性。二、并發(fā)控制的目標(biāo)、方法1.目標(biāo):確保DB中的數(shù)據(jù)一致性。2.并發(fā)事務(wù)正確性的原則幾個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與任何一個(gè)串行執(zhí)行的結(jié)果相同。3.并發(fā)控制的方法DBMS一般采用“封鎖”技術(shù),保證并發(fā)操作的可串行化。二、封鎖(Locking)1.什么叫封鎖?SQLServer自動(dòng)強(qiáng)制封鎖,并且會(huì)將封鎖粒度控制在合適的級(jí)別,用戶不必考慮封鎖問(wèn)題。2.封鎖類型排它鎖(X鎖):事務(wù)T對(duì)數(shù)據(jù)A加X(jué)鎖,其它事務(wù)不能再對(duì)A加鎖,即其它事務(wù)不能讀取和修改A。《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628共享鎖(S鎖):事務(wù)T對(duì)數(shù)據(jù)A加S鎖,其它事務(wù)只能再對(duì)A加S鎖,即其它事務(wù)只能讀A,不能修改A。3.封鎖粒度封鎖對(duì)象可以是屬性列、元組、關(guān)系、整個(gè)數(shù)據(jù)庫(kù)。封鎖對(duì)象的大小稱為封鎖粒度。封鎖粒度越小,并發(fā)度越高,但并發(fā)控制的開(kāi)銷越大。4.封鎖協(xié)議①事務(wù)T在修改數(shù)據(jù)A之前,必須對(duì)其加X鎖,直到事務(wù)結(jié)束才釋放。②事務(wù)T在讀取數(shù)據(jù)A之前,必須對(duì)其加S鎖,直到事務(wù)結(jié)束才釋放。遵循封鎖協(xié)議,可以解決三種數(shù)據(jù)不一致性問(wèn)題:丟失修改不可重復(fù)讀讀“臟”數(shù)據(jù)四、死鎖和活鎖封鎖技術(shù)可以解決并發(fā)操作的不一致性問(wèn)題,但也帶來(lái)新的問(wèn)題,即死鎖和活鎖。1.死鎖:①定義:兩個(gè)事務(wù)已經(jīng)各自鎖定一個(gè)數(shù)據(jù),但是又要訪問(wèn)被對(duì)方鎖定的數(shù)據(jù),造成了循環(huán)等待,稱為死鎖。②避免死鎖的方法:順序封鎖法:若規(guī)定封鎖順序?yàn)锳,B,則T1,T2只能先封鎖A,再封鎖B。2.活鎖:①定義:若多個(gè)事務(wù)請(qǐng)求封鎖同一個(gè)數(shù)據(jù)時(shí),其中的某個(gè)事務(wù)總處于等待狀態(tài),則稱為活鎖。②避免活鎖的方法:先來(lái)先服務(wù)使用游標(biāo)一、游標(biāo)的概念1.每個(gè)表均有一個(gè)游標(biāo),它可以指向表的任意一條記錄。2.移動(dòng)游標(biāo)的方法:①在觸發(fā)器或存儲(chǔ)過(guò)程中,使用SQL語(yǔ)句定義和使用游標(biāo)。②在前臺(tái)應(yīng)用程序中,使用主語(yǔ)言實(shí)現(xiàn)對(duì)游標(biāo)的移動(dòng)。二、Transact-SQL游標(biāo)的使用:1.聲明游標(biāo)Declare游標(biāo)名cursor[forward_only/scroll][global/local][read_only]forselect語(yǔ)句forward_only(只進(jìn)游標(biāo)):只能進(jìn)行next操作,缺省為forward_only。scroll(滾動(dòng)游標(biāo))[global/local]:缺省為:global《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)196282.打開(kāi)游標(biāo)open游標(biāo)名打開(kāi)游標(biāo)時(shí),游標(biāo)指向查詢結(jié)果集的第一條記錄之前。3.提取游標(biāo)fetch[next/prior/first/last]from游標(biāo)名[into局部變量名表]①缺省into子句:移動(dòng)游標(biāo),并顯示當(dāng)前記錄的內(nèi)容。②含into子句:移動(dòng)游標(biāo),并將當(dāng)前記錄各屬性值依次賦給局部變量。③缺省游標(biāo)移動(dòng)方式,則為next。4.關(guān)閉游標(biāo)close游標(biāo)名5.釋放游標(biāo)declaredeclare游標(biāo)名例:--打印student表中全體男生的平均年齡。(不得使用聚合函數(shù)。)setnocountondeclare@xint,@sint,@ndecimal(4,1)select@n=0,@s=0declarepmcursorscrollforselectsagefromstudentwheressex='男'openpmfetchnextfrompminto@xwhile@@FETCH_STATUS=0beginselect@n=@n+1,@s=@s+@xfetchnextfrompminto@xendprint'全體男生的平均年齡為:'+str(@s/@n,4,1)closepmdeallocat(yī)epm三、有關(guān)全局變量1.@@FETCH_STATUS:返回上一個(gè)Fetch語(yǔ)句的執(zhí)行狀態(tài),若Fetch語(yǔ)句成功執(zhí)行,則返回0,否則返回-1。2.@@rowcount:返回受上一個(gè)語(yǔ)句(包括select、insert、delete、update)所影響的行數(shù)。3.setnocounton:關(guān)閉影響行數(shù)信息。索引

《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628一、索引的概念:①如果把數(shù)據(jù)表比作一本書,那么表的索引就是這本書的目錄??梢?jiàn),索引使用戶能快速訪問(wèn)數(shù)據(jù)表的特定信息。②索引包括兩項(xiàng):索引字段值、原記錄號(hào)③索引必須依附于某個(gè)基本表,不能單獨(dú)存在。二、索引的類型:聚集索引:影響數(shù)據(jù)表的記錄順序非聚集索引:不會(huì)影響數(shù)據(jù)表的記錄順序注:一個(gè)表只能建立一個(gè)聚集索引,但可以建立若干個(gè)非聚集索引。三、創(chuàng)建索引1.自動(dòng)創(chuàng)建索引:。如果在數(shù)據(jù)表的某個(gè)屬性設(shè)置主鍵約束或唯一約束,則系統(tǒng)將在這些屬性上自動(dòng)創(chuàng)建唯一索引。。自動(dòng)創(chuàng)建的索引隨約束的存在而存在,隨約束的消失而消失。2.使用SQL語(yǔ)句創(chuàng)建索引Create[unique][clustered/nonclustered]index索引名On表名(屬性名[asc/desc],屬性名[asc/desc])注:①若未指定clustered,則創(chuàng)建非聚集索引;②若未指定排序方式,則為ASC;③text,ntext類型的字段不能指定為索引字段。四、刪除索引:Dropindex索引名,…,索引名思考題:創(chuàng)建主鍵時(shí),如果使主鍵字段值不影響數(shù)據(jù)表的記錄順序?視圖一、視圖的特點(diǎn):①視圖只有結(jié)構(gòu),沒(méi)有記錄,是虛表;②一個(gè)視圖總對(duì)應(yīng)著一個(gè)select語(yǔ)句;③對(duì)視圖的查詢、更新,實(shí)際上是對(duì)基本表的查詢、更新。二、定義視圖:1.創(chuàng)建視圖:Createview視圖名[(屬性名,…,屬性名)]As子查詢[withcheckoption]說(shuō)明:視圖的屬性個(gè)數(shù)必須與子查詢中select子句的表達(dá)式個(gè)數(shù)相同?!稊?shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)196282.刪除視圖:Dropview視圖名,…,視圖名三、查詢視圖:select*/表達(dá)式表from視圖名,…,視圖名[where條件][groupby屬性名][orderby屬性名][Asc/Desc]四、操縱視圖:1.向視圖插入一條記錄insertinto視圖名[(屬性名表)]values(表達(dá)式表)2.修改視圖中的數(shù)據(jù)update視圖名set屬性名=值,…,屬性名=值[where條件]缺?。鱤ere子句,默認(rèn)為更新全部記錄。3.刪除視圖中的記錄deletefrom視圖名[where條件]數(shù)據(jù)庫(kù)完整性一、在創(chuàng)建表時(shí)指定約束1.主鍵約束[constraint約束名]Primarykey[Clustered/Nonclustered][(屬性名,…,屬性名)]說(shuō)明:①每個(gè)約束都有一個(gè)約束名,約束名通常由系統(tǒng)自動(dòng)給出。②列級(jí)約束:只牽涉到一個(gè)屬性的約束,它放在相關(guān)屬性的后面,且省略屬性名表。表級(jí)約束:牽涉到多個(gè)屬性的約束。③創(chuàng)建主鍵約束、唯一性約束時(shí)可以指定聚集(clustered)或非聚集(nonclustered)。④主鍵約束默認(rèn)為聚集的,唯一性約束默認(rèn)為非聚集的。⑤一個(gè)表最多只能創(chuàng)建一個(gè)約束是聚集的,聚集約束會(huì)影響數(shù)據(jù)表的記錄號(hào)順序。2.外鍵約束[constraint約束名]Foreignkey[(屬性名,…,屬性名)]References主鍵表名(屬性名,…,屬性名)例:創(chuàng)建如下兩表

《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628Student(sno,sname,ssex,sage,sdept)Sc(sno,cno,grade)Createtablestudent(snochar(5)primarykey,Snamechar(6),Ssexchar(2),Sageint,Sdeptchar(10))Createtablesc(snochar(5)foreignkeyreferencesstudent(sno),Cnochar(2),Gradeint,Primarykey(sno,cno))注意:兩表關(guān)聯(lián)的方式:①臨時(shí)關(guān)聯(lián):where表名1.屬性名=表名2.屬性名②永久關(guān)聯(lián):創(chuàng)建外鍵約束3.唯一性約束[constraint約束名]Unique[Clustered/Nonclustered][(屬性名,…,屬性名)]主鍵約束與唯一約束的區(qū)別:①在一個(gè)表中只能定義一個(gè)主鍵約束,但可定義多個(gè)唯一性約束;②指定為主鍵約束的字段不能取null值,但指定為唯一性約束的字段允許取null值。4.檢查約束[constraint約束名]Check(條件表達(dá)式)例:createtablesc(snochar(5),Cnochar(2),Gradeint,Primarykey(sno,cno))5.缺省約束[constraint約束名]Default常量二、刪除表中的約束altertable表名dropconstraint約束名,...,約束名《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628注意:alter語(yǔ)句后面只能跟著一個(gè)子句。三、向表添加約束altertable表名addconstraint約束名約束定義,...,constraint約束名約束定義約束定義指:Primarykey[Clustered/Nonclustered](屬性組)Foreignkey(屬性組)references主鍵表名(屬性組)Unique[Clustered/Nonclustered](屬性組)Check(條件表達(dá)式)Default常量for?qū)傩悦?現(xiàn)有Student表與SC表,請(qǐng)為它們創(chuàng)建如下約束。Student表:列名Sno數(shù)據(jù)類型char長(zhǎng)度5約束主鍵SnameSsexsagechar8唯一約束chartinyint21只能輸入“男”或“女”只能為15~20sdeptchar2SC表:列名Sno數(shù)據(jù)類型char長(zhǎng)度52說(shuō)明外碼,參照student表CnogradeChartinyint1altertablestudentaddconstraintPK_studentprimarykey(sno),constraintIX_studentunique(sname),constraintCK_studentcheck(ssexin('男','女')),constraintCK_student_1check(sage>=15andsage<=20)altertablescaddconstraintPK_scprimarykey(sno,cno),constraintFK_sc_studentforeignkey(sno)referencesstudent(sno)默認(rèn)對(duì)象①默認(rèn)對(duì)象與默認(rèn)約束的功能類似。②默認(rèn)對(duì)象以單獨(dú)的對(duì)象創(chuàng)建,可以綁定到數(shù)據(jù)庫(kù)的所有表中。③默認(rèn)約束只能綁定到一個(gè)表中。規(guī)則《數(shù)據(jù)庫(kù)原理》知識(shí)點(diǎn)總結(jié)19628①規(guī)則與check約束的功能類似。②規(guī)則以單獨(dú)的對(duì)象創(chuàng)建,可以綁定到數(shù)據(jù)庫(kù)的所有表中。③check約束只能綁定到一個(gè)表中。存儲(chǔ)過(guò)程1.什么叫存儲(chǔ)過(guò)程?將一組SQL語(yǔ)句,以一個(gè)名稱存儲(chǔ)在數(shù)據(jù)庫(kù)中,就形成存儲(chǔ)過(guò)程。2.創(chuàng)建存儲(chǔ)過(guò)程Createproc存儲(chǔ)過(guò)程名[@形參名類型][=常量][output]AsSQL語(yǔ)句序列說(shuō)明:①[=常量]:用于指定形參的默認(rèn)值;[output]用來(lái)指定該形參值是可以返回的。3.執(zhí)行存儲(chǔ)過(guò)程Exec存儲(chǔ)過(guò)程名[常量|@變量名[output]|default]:執(zhí)行無(wú)返回值的存儲(chǔ)過(guò)程Exec@變量名1=存儲(chǔ)過(guò)程名[常量|@變量名[output]|default]:執(zhí)行有返回值的存儲(chǔ)過(guò)程②實(shí)參可以是常量,已賦值的局部變量,帶output的局部變量,defaul

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論