數(shù)據(jù)庫(kù)原理總結(jié)
數(shù)據(jù)庫(kù)原理總結(jié)
1.數(shù)據(jù)庫(kù)是數(shù)據(jù)的集合,是組織,存儲(chǔ),管理和加工數(shù)據(jù)的倉(cāng)庫(kù)
2.數(shù)據(jù)庫(kù)的三要素:數(shù)據(jù),存儲(chǔ)器(硬盤),數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),分別對(duì)應(yīng)數(shù)據(jù)庫(kù)存儲(chǔ)的內(nèi)容,數(shù)據(jù)庫(kù)載體,數(shù)據(jù)庫(kù)管理軟件
3.數(shù)據(jù)庫(kù)核心DBMS的主要功能:(1)數(shù)據(jù)定義功能(DDl)(2)數(shù)據(jù)管理功能(DMl)(3)數(shù)據(jù)庫(kù)運(yùn)行管理(4)數(shù)據(jù)庫(kù)建立和維護(hù)功能
4.數(shù)據(jù)庫(kù)系統(tǒng)的作用:提高數(shù)據(jù)管理的能力,使得數(shù)據(jù)可以重用和進(jìn)行數(shù)據(jù)分析
5.數(shù)據(jù)庫(kù)系統(tǒng)的目的(目標(biāo)):如何高效地,巧妙地進(jìn)行數(shù)據(jù)處理,而花費(fèi)最少(較快較省地為較多的用戶提供較好的信息服務(wù))
6.數(shù)據(jù)處理的中心問(wèn)題是數(shù)據(jù)管理,數(shù)據(jù)管理技術(shù)經(jīng)歷了三個(gè)階段:人工管理,文件系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng)7.數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)
(1)面向組織的復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(2)數(shù)據(jù)冗余度小,易擴(kuò)充
(3)具有較高的數(shù)據(jù)與程序的獨(dú)立性(物理和邏輯)8.DBMS進(jìn)行數(shù)據(jù)控制的功能:(1)數(shù)據(jù)的安全性控制(2)數(shù)據(jù)的完整性控制(3)并發(fā)控制(4)數(shù)據(jù)庫(kù)恢復(fù)
9.數(shù)據(jù)的最小存取單位是數(shù)據(jù)項(xiàng)
10.數(shù)據(jù)庫(kù)系統(tǒng)的核心和基礎(chǔ)是數(shù)據(jù)模型,它應(yīng)滿足三個(gè)方面的要求:能夠比較真實(shí)的模擬現(xiàn)實(shí)世界、容易為人理解、便于在計(jì)算機(jī)上實(shí)現(xiàn)11.兩級(jí)模型的抽象
(1)概念模型,用于數(shù)據(jù)庫(kù)設(shè)計(jì)(2)數(shù)據(jù)模型,用于DBMS的實(shí)現(xiàn)
12.數(shù)據(jù)模型的三要素:數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、數(shù)據(jù)的完整性約束
13.最常用的四種數(shù)據(jù)模型:層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P,前兩個(gè)為非關(guān)系模型
14.關(guān)系模型中的數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列構(gòu)成
◇關(guān)系(Relation):對(duì)應(yīng)通常說(shuō)的一張表;◇元組(Tuple):表中的一行即為一個(gè)元組;◇屬性(Attribute):表中的一列,給每個(gè)屬性命名;◇主碼(Key):表中某個(gè)屬性組,它可以唯一確定一個(gè)元組;
◇域(Domain):屬性的取值范圍;◇分量:元組中的一個(gè)屬性值;
◇關(guān)系模式:對(duì)關(guān)系的描述,一般表示為:關(guān)系名(屬性1,屬性1,…,屬性n)例如學(xué)生關(guān)系模式表示為:
學(xué)生(學(xué)號(hào),姓名,年齡,性別,系名,年級(jí))15.關(guān)系模型要求關(guān)系必須是規(guī)范化的,規(guī)范條件中最基本的一條就是,關(guān)系的每一個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng),即不允許表中還有表。
16.
在數(shù)據(jù)庫(kù)的物理組織中,表以文件形式存儲(chǔ)
17.關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的查詢效率是關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)要
考慮的一個(gè)重要問(wèn)題,必須進(jìn)行查詢執(zhí)行策略的優(yōu)化。18.面向?qū)ο髷?shù)據(jù)庫(kù)模式是類的集合19.數(shù)據(jù)庫(kù)三級(jí)模式:外模式,模式,內(nèi)模式
數(shù)據(jù)庫(kù)二級(jí)映像:外模式模式映像,模式內(nèi)模式映像外模式通常是模式的子集,可以有多個(gè)內(nèi)模式既是存儲(chǔ)模式,只有一個(gè)20.數(shù)據(jù)庫(kù)
擴(kuò)展閱讀:數(shù)據(jù)庫(kù)原理總結(jié)
1關(guān)系的范式及規(guī)范化
范式是衡量關(guān)系模式優(yōu)劣的標(biāo)準(zhǔn)。范式級(jí)別越高,其數(shù)據(jù)冗余和操作異常現(xiàn)象就越少。第一范式:如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則這個(gè)關(guān)系屬于第一范式。第二范式:若關(guān)系模式R屬于第一范式,且每個(gè)非主屬性都完全函數(shù)依賴于主鍵,則R屬于第二范式。第三范式:若關(guān)系模式R屬于第一范式,且每個(gè)非主屬性都不傳遞依賴于主關(guān)鍵字,則R屬于第三范式。BC范式:若關(guān)系模式R屬于第一范式,且每個(gè)屬性都不傳遞依賴于主關(guān)鍵字,則R屬于BC范式。
2對(duì)模式的分解顯然不是隨意的,主要涉及以下兩個(gè)原則:無(wú)損聯(lián)結(jié):當(dāng)對(duì)關(guān)系模式R進(jìn)行分解時(shí),R的元組將分別在相應(yīng)屬性集進(jìn)行投影而產(chǎn)生新的關(guān)系。如果對(duì)新的關(guān)系進(jìn)行自然聯(lián)接得到的元組的集合與原關(guān)系完全一致,則稱為無(wú)損聯(lián)結(jié)。保持依賴:當(dāng)對(duì)關(guān)系模式R進(jìn)行分解時(shí),R的函數(shù)依賴集也將按相應(yīng)的模式進(jìn)行分解。如果分解后總的函數(shù)依賴集與原函數(shù)依賴集保持一致,則稱為保持依賴。
3事務(wù)的定義:事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,由用戶定義的一組操作序列組成,序列中的操作要么全做要么全不做。
4簡(jiǎn)述事務(wù)所具有的ACID(原子性,一致性,隔離性,持續(xù)性)特性:事務(wù)的ACID特性是:原子性:事務(wù)是一個(gè)不可分割的單位。一致性:事務(wù)對(duì)數(shù)據(jù)庫(kù)操作的結(jié)果是將數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變?yōu)榱硪粋(gè)一致性狀態(tài)。隔離性:多個(gè)事務(wù)的并發(fā)執(zhí)行不互相干擾。持續(xù)性:事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久性的。5事務(wù)的調(diào)度:事務(wù)的執(zhí)行次序稱為調(diào)度。若多個(gè)事務(wù)是按照某一次序串行地執(zhí)行,則稱事務(wù)的調(diào)度是串行調(diào)度。若多個(gè)事務(wù)同時(shí)交叉地并行執(zhí)行,則稱事務(wù)的調(diào)度為并發(fā)調(diào)度。
6事務(wù)并發(fā)執(zhí)行產(chǎn)生的不一致情況及避免:并發(fā)操作可能會(huì)產(chǎn)生丟失修改,不能重復(fù)讀和讀”臟”數(shù)據(jù)這三種不一致情況,采用封鎖機(jī)制來(lái)進(jìn)行并發(fā)控制,可避各種不一致情況。一級(jí)封鎖協(xié)議可以避免丟失修改,二級(jí)封鎖協(xié)議可以避免丟失修改和讀”臟”數(shù)據(jù),三級(jí)封鎖協(xié)議可以避免丟失修改、不能重復(fù)讀和讀”臟”數(shù)據(jù)。
7事務(wù)的COMMIT語(yǔ)句和ROLLBACK語(yǔ)句的功能是什么?答:COMMIT語(yǔ)句表示事務(wù)執(zhí)行成功地接結(jié)束(提交),此時(shí)告訴系統(tǒng),DB要進(jìn)入一個(gè)新的正確狀態(tài),該事務(wù)對(duì)DB的所有更新都已交付實(shí)施(寫入磁盤)。ROLLBACK語(yǔ)句表示事務(wù)執(zhí)行不成功地結(jié)束(應(yīng)該“回退”)此時(shí)告訴系統(tǒng),已發(fā)生錯(cuò)誤,DB可能處在不正確的狀態(tài),該事務(wù)對(duì)DB的所有更新必須被撤消,DB應(yīng)恢復(fù)該事務(wù)到初始狀態(tài)。
8活鎖和死鎖:活鎖:在多個(gè)事務(wù)并發(fā)執(zhí)行的過(guò)程中,可能會(huì)存在某個(gè)總有機(jī)會(huì)獲得鎖的事務(wù)卻永遠(yuǎn)也沒(méi)得到鎖的現(xiàn)象,可以通過(guò)“先來(lái)先服務(wù)”的策略預(yù)防活鎖的發(fā)生。死鎖:在多個(gè)事務(wù)并發(fā)執(zhí)行過(guò)程中,多個(gè)并發(fā)事務(wù)處于相互等待的狀態(tài)的現(xiàn)象。
9死鎖的預(yù)防:數(shù)據(jù)庫(kù)當(dāng)中預(yù)防死鎖的方法有兩種。第一種方法是要求每個(gè)事務(wù)必須一次性地將所有要使用的數(shù)據(jù)加鎖或必須按照一個(gè)預(yù)定的加鎖順序?qū)κ褂玫降臄?shù)據(jù)加鎖。第二種方法是每當(dāng)處于等待狀態(tài)的事務(wù)由可能導(dǎo)致死鎖時(shí),就不再等待下去,強(qiáng)行回滾該事務(wù)。
10完整性約束的定義:關(guān)系數(shù)據(jù)庫(kù)提供的三類完整性約束:實(shí)體完整性、參照完整性和用戶自定義完整性。實(shí)體完整性:實(shí)體完整性約束是指任何基本表(關(guān)系)的主鍵(主關(guān)鍵字)中的每一個(gè)屬性列都不能取空值,即基本表中的每一個(gè)元組在主鍵上的分量都有值。參照完整性:根據(jù)參照完整性原則,用戶只要定義了某一個(gè)關(guān)系(基本表)的外鍵(外部關(guān)鍵字),系統(tǒng)就會(huì)控制外鍵的值要么為空,要么等于被參照關(guān)系中某一個(gè)主鍵的值,這就是系統(tǒng)對(duì)外鍵的一種約束。用戶定義完整性:用戶定義完整性約束條件的作用對(duì)象可以是屬性列、元組或關(guān)系(基本表),其中對(duì)屬性列的約束可以規(guī)定屬性列的數(shù)據(jù)類型、取值范圍等;對(duì)元組的約束可以規(guī)定元組中各屬性間的相互關(guān)系;而對(duì)關(guān)系的約束則可以規(guī)定各元組間或關(guān)系間的相互聯(lián)系。
11故障恢復(fù)的原則:對(duì)數(shù)據(jù)庫(kù)的影響有兩種可能性:一是數(shù)據(jù)庫(kù)本身被破壞;二是數(shù)據(jù)庫(kù)沒(méi)有被破壞,但數(shù)據(jù)可能不正確,這是因?yàn)槭聞?wù)的運(yùn)行被非正常終止造成的。12恢復(fù)算法一般由兩部分組成:在正常事務(wù)處理時(shí)采取措施,保證有足夠的冗余信息可用于故障恢復(fù)。故障發(fā)生后采取措施,將數(shù)據(jù)庫(kù)內(nèi)容恢復(fù)到某個(gè)保證數(shù)據(jù)庫(kù)一致性、事務(wù)原子性及持久性的狀態(tài)。
13數(shù)據(jù)庫(kù)在運(yùn)行過(guò)程中可能產(chǎn)生的故障有哪幾類?
答:1)事務(wù)故障:事務(wù)在運(yùn)行過(guò)程中由于種種原因,如輸入數(shù)據(jù)的錯(cuò)誤,運(yùn)算溢出,違反了某些完整性限制,某些應(yīng)用程序的錯(cuò)誤,以及并行事務(wù)發(fā)生死鎖等,使事務(wù)未能運(yùn)行到正常中指點(diǎn)之前就被撤消了,這種情況稱為“事務(wù)故障”。2)系統(tǒng)故障:系統(tǒng)故障是指系統(tǒng)在運(yùn)行過(guò)程中,由于某些原因,如OS和DBMS代碼錯(cuò)誤,操作員操作事物。特定類型的硬件錯(cuò)誤(CPU故障),突然停電等造成系統(tǒng)停止運(yùn)行,致使事物在執(zhí)行過(guò)程中以非控方式中指。這時(shí)。內(nèi)存中的信息丟失,而存儲(chǔ)在外存儲(chǔ)上的數(shù)據(jù)未受影響,這種情況稱為“系統(tǒng)故障”。3)介質(zhì)故障:系統(tǒng)在運(yùn)行過(guò)程中,由于某種硬件故障,如磁盤損壞,磁頭碰撞,或由于OS的某種潛在的錯(cuò)誤。瞬間強(qiáng)磁場(chǎng)干擾,使存儲(chǔ)在外存的數(shù)據(jù)部分損失或全部損失,稱之為“介質(zhì)故障”。14故障恢復(fù)技術(shù):數(shù)據(jù)轉(zhuǎn)儲(chǔ)、日志文件、檢查點(diǎn)方法、數(shù)據(jù)庫(kù)鏡像
15關(guān)系的完整性約束:域完整性約束:關(guān)系中屬性的值應(yīng)是域中的值,并由語(yǔ)義決定其能否為空值。實(shí)體完整性約束:關(guān)系中的主鍵不能為空值。參照完整性約束:關(guān)系的外鍵必須是另一個(gè)關(guān)系主鍵的有效值或者是空值。用戶自定義完整性約束:正對(duì)某一具體數(shù)據(jù)的約束條件,由應(yīng)用環(huán)境決定。
16故障恢復(fù)原理是冗余可分為副本和日志;謴(fù)算法:在正常事物處理時(shí)采取措施,保證有足夠的冗余信息可用于故障恢復(fù)、故障發(fā)生后采取措施,將數(shù)據(jù)庫(kù)內(nèi)容恢復(fù)到某個(gè)保證數(shù)據(jù)庫(kù)一致性、事物原子性及持久性的狀態(tài)。
17事務(wù)故障的恢復(fù):事務(wù)故障是指事務(wù)在運(yùn)行至正常終止點(diǎn)前被中止,這時(shí)恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(UNDO)此事務(wù)已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改。事務(wù)故障的恢復(fù)是由系統(tǒng)自動(dòng)完成的,對(duì)用戶是透明的,系統(tǒng)的恢復(fù)步驟是:⑴反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。⑵對(duì)該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫(kù)。這樣,如果記錄中是插入操作,則相當(dāng)于做刪除操作(因此時(shí)“更新前的值”為空)。若記錄中是刪除操作,則做插入操作,若是修改操作,則相當(dāng)于用修改前值代替修改后值。⑶繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。⑷如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,事務(wù)故障恢復(fù)就完成了。
18系統(tǒng)故障的恢復(fù):系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致狀態(tài)的原因有兩個(gè),一是未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能已寫入數(shù)據(jù)庫(kù),二是已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū)沒(méi)來(lái)得及寫入數(shù)據(jù)庫(kù)。因此,恢復(fù)操作就是要撤銷故障發(fā)生時(shí)未完成的事務(wù),重做已完成的事務(wù)。系統(tǒng)恢復(fù)步驟如下:正向掃描日志文件,即從頭掃描日志文件,找出在故障發(fā)證前已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)示記入重做隊(duì)列,同時(shí)找出故障發(fā)證時(shí)尚未完成的事務(wù),將其事務(wù)標(biāo)識(shí)計(jì)入撤銷隊(duì)列、對(duì)撤銷隊(duì)列中的各個(gè)事務(wù)進(jìn)行撤銷處理、對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行重做掃描
19日志文件作用及建立原因:答:日志文件是用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件。目的是進(jìn)行事物故障恢復(fù);進(jìn)行系統(tǒng)故障恢復(fù);協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。
20三級(jí)模式:三級(jí)模式結(jié)構(gòu):數(shù)據(jù)庫(kù)的三級(jí)模式由外模式、概念模式和內(nèi)模式三級(jí)模式構(gòu)成。概念模式:簡(jiǎn)稱模式,又稱數(shù)據(jù)庫(kù)模式、邏輯模式。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)概念模式,它是數(shù)據(jù)庫(kù)系統(tǒng)三級(jí)模式結(jié)構(gòu)的中間層,概念模式是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯描述,而不是數(shù)據(jù)庫(kù)本身,它是裝配數(shù)據(jù)的一個(gè)結(jié)構(gòu)框架。外模式:外模式簡(jiǎn)稱子模式,又稱用戶模式,是數(shù)據(jù)庫(kù)用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是用戶與數(shù)據(jù)庫(kù)系統(tǒng)之間的接口。一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式,設(shè)置外模式的優(yōu)點(diǎn)如下:方便用戶使用,簡(jiǎn)化用戶接口、保證數(shù)據(jù)的獨(dú)立性、有利于數(shù)據(jù)共享、有利于數(shù)據(jù)安全和保密。內(nèi)模式:內(nèi)模式也稱存儲(chǔ)模式。是對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示形式。一個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)內(nèi)模式。21兩級(jí)映像:外模式/概念模式映像:外模式/概念模式映像定義了各個(gè)外模式與概念模式間的映像關(guān)系。概念模式/內(nèi)模式映像:概念模式/內(nèi)模式映像定義了數(shù)據(jù)庫(kù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系。
22兩極結(jié)構(gòu)的獨(dú)立性:物理數(shù)據(jù)獨(dú)立性:如果數(shù)據(jù)庫(kù)內(nèi)模式要修改,即數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)有所變化,那么只要對(duì)概念模式/內(nèi)模式做相應(yīng)的修改即可。概念模式/內(nèi)模式提供了數(shù)據(jù)的物理數(shù)據(jù)獨(dú)立性。邏輯數(shù)據(jù)獨(dú)立性:如果概念模式要修改,例如增加記錄類型或增加數(shù)據(jù)項(xiàng),那么只要對(duì)外模式/概念模式映像做相應(yīng)的修改,就可以使外模式和應(yīng)用程序盡可能保持不變。這樣,就稱數(shù)據(jù)庫(kù)打到了邏輯數(shù)據(jù)獨(dú)立性。外模式/概念模式映像提供了數(shù)據(jù)的邏輯獨(dú)立性。
23數(shù)據(jù)庫(kù)技術(shù)的發(fā)展階段:工管理階段(數(shù)據(jù)部保存、沒(méi)有對(duì)數(shù)據(jù)進(jìn)行管理的軟件系統(tǒng)、沒(méi)有文件的概念、一組數(shù)據(jù)對(duì)應(yīng)于一個(gè)程序,數(shù)據(jù)時(shí)面向應(yīng)用的)、文件系統(tǒng)階段(數(shù)據(jù)需要長(zhǎng)期保存在外存上供反復(fù)使用、程序和數(shù)據(jù)之間有了一定得獨(dú)立性、文件的形式已經(jīng)多樣化、數(shù)據(jù)的存取基本以記錄為單位)、數(shù)據(jù)庫(kù)系統(tǒng)階段(數(shù)據(jù)結(jié)構(gòu)化、數(shù)據(jù)共享、減少數(shù)據(jù)冗余、具有較高的數(shù)據(jù)獨(dú)立性、方便用戶接口、統(tǒng)一的數(shù)據(jù)管理與控制功能)
某校與教學(xué)管理相關(guān)的3個(gè)關(guān)系模式的結(jié)構(gòu)如下:學(xué)生(學(xué)號(hào)、姓名、年齡、性別、所在系)課程(課程號(hào)、課程名、開課系、任課教師)學(xué)習(xí)(學(xué)號(hào)、課程號(hào)、成績(jī))試進(jìn)行如下操作:
1.創(chuàng)建“教學(xué)”數(shù)據(jù)庫(kù),在“教學(xué)”數(shù)據(jù)庫(kù)中創(chuàng)建“學(xué)生”、“課程”、“學(xué)習(xí)”這3個(gè)基本表,并說(shuō)明主鍵和外鍵。2.使用SQL的查詢語(yǔ)句表達(dá)下列查詢(1)查詢劉老師所授課程的課程號(hào)和課程名(2)查詢年齡大于23歲的男學(xué)生的學(xué)號(hào)和姓名
(3)查詢至少修讀劉老師所授課程中一門課程的女學(xué)生和姓名(4)查詢王樂(lè)同學(xué)不學(xué)的課程的課程號(hào)(5)查詢至少修讀兩門課程的學(xué)生學(xué)號(hào)
(6)查詢?nèi)繉W(xué)生都修讀的課程的課程號(hào)與課程名(7)查詢修讀課程中包含劉老師所授課程的學(xué)生學(xué)號(hào)
3)SELECT姓名FROM學(xué)生WHERE性別=‘女’ANDEXISTS(SELECT*FROM學(xué)習(xí)WHERE學(xué)習(xí).學(xué)號(hào)=學(xué)生.學(xué)號(hào)AND課程號(hào)IN(SELECT課程號(hào)FROM課程WHERE任課教師LIKE‘劉%’))
4)SELECT課程號(hào)FROM課程WHERENOTEXISTS(SELECT*FROM學(xué)習(xí)WHERE學(xué)習(xí).課程號(hào)=課程.課程號(hào)AND學(xué)號(hào)IN(SELECT學(xué)號(hào)FROM學(xué)生WHERE姓名=‘王樂(lè)’))
5)SELECT學(xué)號(hào)FROM學(xué)生GROUPBY學(xué)號(hào)HAVINGCOUNT(*)>=2
6)SELECT課程號(hào),課程名FROM課程WHERENOTEXISTS(SELECT*FROM學(xué)生WHERENOTEXISTS(SELECT*學(xué)號(hào)FROM學(xué)習(xí)WHERE學(xué)習(xí).課程號(hào)=課程.課程號(hào)AND學(xué)習(xí).學(xué)號(hào)=學(xué)生.學(xué)號(hào)))
7)SELECT學(xué)號(hào)FROM學(xué)習(xí)WHEREEXISTS(SELECT*FROM學(xué)習(xí)WHERE課程號(hào)IN(SELECT*FROM課程號(hào)FROM課程WHERE任課教師LIKE‘劉%’))試用SQL查詢語(yǔ)句表達(dá)下列對(duì)教學(xué)數(shù)據(jù)庫(kù)中3個(gè)基本表“學(xué)生”、“課程”、“學(xué)習(xí)”的查詢(1)統(tǒng)計(jì)有學(xué)生修讀的課程門數(shù)(2)求修讀C4課程的學(xué)生的平均年齡
(3)求劉老師所授課程的每門課程的學(xué)生平均成績(jī)
(4)統(tǒng)計(jì)每門課程學(xué)生的修讀人數(shù)(超過(guò)10人的課程才統(tǒng)計(jì)),要求輸出課程號(hào)和修讀人數(shù),查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號(hào)升序排列(5)查詢學(xué)號(hào)比王樂(lè)同學(xué)大,而年齡比他小的學(xué)生姓名(6)查詢姓名以王打頭的所有學(xué)生的姓名和年齡(7)在“學(xué)習(xí)”表中檢索成績(jī)?yōu)榭罩档膶W(xué)生學(xué)號(hào)和課程號(hào)(8)求年齡大于女同學(xué)平均年齡的男學(xué)生姓名和年齡(9)求年齡大于所有女同學(xué)年齡的男學(xué)生姓名和年齡SELECTCOUNT(DISTINCT課程號(hào))FROM學(xué)習(xí)
SELECTAVG(年齡)FROM學(xué)生WHEREEXISTS(SELECT*FROM學(xué)習(xí)WHERE學(xué)生.學(xué)號(hào)=學(xué)習(xí).學(xué)號(hào)AND課程號(hào)=’C4’)
SELECTAVG(成績(jī))FROM學(xué)習(xí)WHEREGROUPBY課程號(hào)HAVING課程號(hào)IN(SELECT課程號(hào)FROM課程WHERE任課教師LIKE‘劉%’)SELECT課程號(hào),COUNT(*)ASC_COUNTFROM學(xué)習(xí)HAVINGC_COUNT>10ORDERBYC_COUNTDESC,課程號(hào)
SELECT姓名FROM學(xué)生WHERE學(xué)號(hào)>ALL(SELECT學(xué)號(hào)FROM學(xué)生WHERE姓名=’王樂(lè)’)AND年齡SELECT學(xué)號(hào),課程號(hào)FROM學(xué)習(xí)WHERE成績(jī)ISNULL
SELECT姓名,年齡FROM學(xué)生WHERE性別=’男’AND年齡>(SELECTAVG(年齡)FROM學(xué)生WHERE性別=’女’)SELECT姓名,年齡FROM學(xué)生WHERE性別=’男’AND年齡>(SELECTMAX(年齡)FROM學(xué)生WHERE性別=’女’)試用SQL更新語(yǔ)句表達(dá)對(duì)“教學(xué)”數(shù)據(jù)庫(kù)中3個(gè)基本表“學(xué)生”、“課程”和“學(xué)習(xí)”的各個(gè)更新操作(1)向基本表“學(xué)生”中插入一個(gè)學(xué)生組(‘S009’,‘吳’,18)
(2)在基本表“學(xué)生”中查詢每一門課程成績(jī)都大于等于80分的學(xué)生學(xué)號(hào)、姓名和性別,并把查詢到的值送往另一個(gè)已存在的基本表“結(jié)果”(學(xué)號(hào),姓名,性別)中(3)在基本表“學(xué)習(xí)”中刪除尚無(wú)成績(jī)的元組
(4)把王樂(lè)同學(xué)在“學(xué)習(xí)”基本表中的課程和成績(jī)?nèi)縿h除(5)把修讀Java課程不及格的成績(jī)?nèi)臑榭罩担?)把低于總平均成績(jī)的女同學(xué)成績(jī)提高5%
(7)在基本表“學(xué)習(xí)”中修改C4課程的成績(jī),若成績(jī)小于等于75分時(shí)提高5%,若成績(jī)大于75分時(shí)提高4%(用兩個(gè)UPDATE語(yǔ)句實(shí)現(xiàn))INSERTINTO學(xué)生VALUES(‘S009’,’吳’,18)
INSERTINTO結(jié)果(學(xué)號(hào),姓名,性別)SELECT學(xué)號(hào),姓名,性別FROM學(xué)生WHERENOTEXISTS(SELECT*FROM學(xué)習(xí)WHERE學(xué)生.學(xué)號(hào)=學(xué)習(xí).學(xué)號(hào)AND成績(jī)
友情提示:本文中關(guān)于《數(shù)據(jù)庫(kù)原理總結(jié)》給出的范例僅供您參考拓展思維使用,數(shù)據(jù)庫(kù)原理總結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。