數(shù)據(jù)庫(kù)原理與應(yīng)用課件_第1頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用課件_第2頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用課件_第3頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用課件_第4頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用課件_第5頁(yè)
已閱讀5頁(yè),還剩378頁(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ù)系統(tǒng)導(dǎo)論

2024/3/921.

信息的定義2.

DBMS的組成和功能3.

E—R模型教學(xué)重點(diǎn)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/93§1.1數(shù)據(jù)與信息§1.2計(jì)算機(jī)數(shù)據(jù)管理的發(fā)展§1.3數(shù)據(jù)庫(kù)系統(tǒng)的組成§1.4數(shù)據(jù)和數(shù)據(jù)聯(lián)系的描述課程章節(jié)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論第一章

數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論

數(shù)據(jù)庫(kù)(database)是通用化的相關(guān)數(shù)據(jù)的集合,它不僅包括數(shù)據(jù)本身,而且包括關(guān)于數(shù)據(jù)之間的聯(lián)系。§1.1數(shù)據(jù)與信息1.1.1數(shù)據(jù)、信息與數(shù)據(jù)處理1.1.2信息系統(tǒng)2024/3/961.?dāng)?shù)據(jù)的概念

數(shù)據(jù)(Data),通常只用符號(hào)記錄下來(lái)的可加以鑒別的信息(Information),即描述事物的符號(hào)記錄稱為數(shù)據(jù)。描述事物的符號(hào)可以是數(shù)字,也可以是文字、圖形、圖像、聲音、語(yǔ)言等,數(shù)據(jù)有多種表現(xiàn)形式,它們都可以經(jīng)過(guò)數(shù)字化后存入計(jì)算機(jī)。數(shù)據(jù)的概念包括兩個(gè)方面:其一,數(shù)據(jù)內(nèi)容是事物特性的反映或描述;其二,數(shù)據(jù)是符號(hào)的集合。

符號(hào):不僅指數(shù)字、字母、文字和其他特殊字符,且包括圖形、圖像、聲音等多媒體數(shù)據(jù)。

記錄:不僅指寫(xiě)在紙上,而且包括記錄在各種介質(zhì)上。

通信:在空間上傳遞

存儲(chǔ):在時(shí)間上傳遞1.1.1數(shù)據(jù)、信息與數(shù)據(jù)處理第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/972.信息的概念信息是關(guān)于現(xiàn)實(shí)世界事物的存在方式或運(yùn)動(dòng)形態(tài)反映的綜合,是人們進(jìn)行各種活動(dòng)所需要的知識(shí)。數(shù)據(jù)與信息的關(guān)系:有聯(lián)系也有區(qū)別

數(shù)據(jù)是載荷信息的物理符號(hào)或稱為載體,數(shù)據(jù)能表示信息,但并非任何數(shù)據(jù)都能表示信息。

信息是人們消化理解了的數(shù)據(jù)。

信息是抽象的,不隨數(shù)據(jù)設(shè)備所決定的數(shù)據(jù)形式而改變。

數(shù)據(jù)的表示方式具有可選性。

信息是反映客觀現(xiàn)實(shí)世界的知識(shí),用不同的數(shù)據(jù)形式可以表示同樣的信息。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/983.?dāng)?shù)據(jù)處理

數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過(guò)程。廣義地講,它包括對(duì)數(shù)據(jù)的收集、存儲(chǔ)、加工、分類、檢索、傳播等一系列活動(dòng)。狹義地講,它是指對(duì)所輸入的數(shù)據(jù)進(jìn)行加工整理。信息=數(shù)據(jù)+處理例如,人的“出生日期”是與生俱來(lái)的不可改變的基本特征之一,屬于原始數(shù)據(jù),而年齡使用現(xiàn)年與出生日期相減而得的,具有相對(duì)性。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/99數(shù)據(jù)收集原始數(shù)據(jù)信息傳播二次數(shù)據(jù)數(shù)據(jù)存儲(chǔ)((信息)處理1數(shù)據(jù)存儲(chǔ)處理2通信

圖1-1數(shù)據(jù)與信息的關(guān)系第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/9101.信息系統(tǒng)

信息系統(tǒng)只為了某些明確的目的而建立的,它是有人員、設(shè)備、程序和數(shù)據(jù)集合構(gòu)成的統(tǒng)一整體。信息系統(tǒng)的主要功能是提供信息,以支持一個(gè)組織機(jī)構(gòu)的運(yùn)行、管理和決策。更確切地說(shuō),信息系統(tǒng)將不使用的數(shù)據(jù)形式加工成可利用的形式。1.1.2信息系統(tǒng)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/9112.信息系統(tǒng)分類(1)數(shù)據(jù)處理系統(tǒng)EDP(ElectronicDataProcessing):用計(jì)算機(jī)代替繁雜的手工事務(wù)處理工作。目的:提高數(shù)據(jù)處理的準(zhǔn)確性、及時(shí)性,節(jié)約人力,提高工作效率。(2)管理信息系統(tǒng)MIS(ManagementInformationSystem):由若干子系統(tǒng)構(gòu)成的一個(gè)集成的人機(jī)系統(tǒng),從組織的全局出發(fā),實(shí)現(xiàn)數(shù)據(jù)共享

,提供分析、計(jì)劃、預(yù)測(cè)、控制等方面的綜合信息。目的:發(fā)揮系統(tǒng)的綜合效益,提高管理水平。(3)決策支持系統(tǒng)DSS(DecisionSupportSystem):為決策過(guò)程提供有效的信息和輔助決策手段的人機(jī)系統(tǒng)。目的:幫助決策者提高決策的科學(xué)性及有效性。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論§1.2計(jì)算機(jī)數(shù)據(jù)管理的發(fā)展2024/3/913

20世紀(jì)50年代以前,數(shù)據(jù)的組織和管理完全靠程序員手工完成。其硬件是:外存只有紙帶、卡片、磁帶,沒(méi)有磁盤(pán)等直接存取的存儲(chǔ)設(shè)備;軟件是:沒(méi)有操作系統(tǒng),沒(méi)有管理數(shù)據(jù)的軟件;數(shù)據(jù)處理方式是批處理。數(shù)據(jù)與應(yīng)用程序之間的關(guān)系如圖1-2所示。第一階段:人工管理階段(50年代中期以前)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/914圖1-2人工管理數(shù)據(jù)與程序的關(guān)系應(yīng)用程序2數(shù)據(jù)2數(shù)據(jù)n應(yīng)用程序n應(yīng)用程序1數(shù)據(jù)1

第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/915

特點(diǎn):

(1)數(shù)據(jù)與程序不具有獨(dú)立性一組數(shù)據(jù)對(duì)應(yīng)一組程序。這就使得程序依賴于數(shù)據(jù),如果數(shù)據(jù)的類型、格式或者數(shù)據(jù)量、存取方法、輸入輸出方式等改變了,程序必須做相應(yīng)的修改。(2)數(shù)據(jù)不能長(zhǎng)期保存由于數(shù)據(jù)是面向應(yīng)用程序的,在一個(gè)程序中定義的數(shù)據(jù),無(wú)法被其他程序利用,因此程序與程序之間存在大量的重復(fù)數(shù)據(jù)。(3)系統(tǒng)中沒(méi)有對(duì)數(shù)據(jù)進(jìn)行管理的軟件數(shù)據(jù)管理任務(wù),包括存儲(chǔ)結(jié)構(gòu)、存儲(chǔ)方法、輸入輸出方法等完全由計(jì)算機(jī)自負(fù)其責(zé)。這就給應(yīng)用程序設(shè)計(jì)人員增加了很大的負(fù)擔(dān)。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/916第二階段:文件系統(tǒng)階段(50年代后期至60年代中后期)

20世紀(jì)50年代后期到60年代中期,這時(shí)硬件方面已有了磁盤(pán)、磁鼓等直接存取存儲(chǔ)設(shè)備;軟件方面,操作系統(tǒng)中已經(jīng)有了專門(mén)的數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng);處理方式上不僅有了批處理,而且能夠聯(lián)機(jī)實(shí)時(shí)處理。由于文件系統(tǒng)具有數(shù)據(jù)的增、刪、改等操作,使得數(shù)據(jù)管理變得輕松,且數(shù)據(jù)可以反復(fù)使用。但這個(gè)階段仍存在一些問(wèn)題,如數(shù)據(jù)冗余度大、數(shù)據(jù)共享性差等。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/917文件系統(tǒng)存在的問(wèn)題

(1)數(shù)據(jù)冗余和數(shù)據(jù)不一致(DataRedundancyandInconsistency)(2)數(shù)據(jù)訪問(wèn)困難(DifficultyinAccessingData)(3)數(shù)據(jù)孤立(DataIsolation)(4)完整性問(wèn)題(IntegrityProblems)(5)原子性問(wèn)題(AtomicityProblems)(6)并發(fā)性問(wèn)題(Concurrent-accessAnomalies)(7)安全性問(wèn)題(SecurityProblems)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/918

圖1-3文件系統(tǒng)數(shù)據(jù)與程序的關(guān)系物理文件N物理文件1應(yīng)用程序N應(yīng)用程序1應(yīng)用程序2物理文件2

文件系統(tǒng)

第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/919

20世紀(jì)60年代后期以來(lái),計(jì)算機(jī)越來(lái)越多地應(yīng)用于管理領(lǐng)域,使得數(shù)據(jù)量急劇增長(zhǎng)。同時(shí),人們對(duì)數(shù)據(jù)共享的要求也越來(lái)越強(qiáng)烈。這時(shí)硬件已有大容量硬盤(pán),硬件價(jià)格下降;軟件則價(jià)格上升,為編制和維護(hù)系統(tǒng)軟件及應(yīng)用程序所需的成本相對(duì)增加;在處理方式上,聯(lián)機(jī)實(shí)時(shí)處理要求更多,并開(kāi)始提出和考慮分布處理。文件系統(tǒng)管理數(shù)據(jù)已經(jīng)不能滿足應(yīng)用的需求,于是為了解決多用戶、多應(yīng)用共享數(shù)據(jù)的要求,使數(shù)據(jù)為盡可能多的應(yīng)用服務(wù),出現(xiàn)了統(tǒng)一管理數(shù)據(jù)的專門(mén)軟件系統(tǒng)即數(shù)據(jù)庫(kù)管理系統(tǒng)。第三階段:數(shù)據(jù)庫(kù)系統(tǒng)階段(60年代后期至70年代后期)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/920與人工管理和文件系統(tǒng)相比,數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)主要有以下幾個(gè)方面:(1)數(shù)據(jù)結(jié)構(gòu)化(2)數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充(3)數(shù)據(jù)獨(dú)立性高(4)數(shù)據(jù)由DBMS統(tǒng)一管理和控制第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/921

圖1-5分布式數(shù)據(jù)庫(kù)系統(tǒng)

第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論計(jì)算機(jī)1

DB1通信網(wǎng)絡(luò)計(jì)算機(jī)2計(jì)算機(jī)3

DB3

DB2§1.3數(shù)據(jù)庫(kù)系統(tǒng)的組成1.3.1數(shù)據(jù)庫(kù)系統(tǒng)的組成1.3.2三級(jí)結(jié)構(gòu)1.3.3數(shù)據(jù)庫(kù)的二級(jí)映象功能與數(shù)據(jù)獨(dú)立性1.3.4DBMS的主要功能2024/3/9231.硬件系統(tǒng)2.數(shù)據(jù)庫(kù)集合3.系統(tǒng)軟件(DBMS)(DataBaseManagementSystem,簡(jiǎn)稱DBMS)4.數(shù)據(jù)庫(kù)管理員(DataBaseAdministrator,簡(jiǎn)稱DBA)5.用戶1.3.1數(shù)據(jù)庫(kù)系統(tǒng)的組成第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/924數(shù)據(jù)庫(kù)管理系統(tǒng)操作系統(tǒng)硬件數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)專業(yè)用戶數(shù)據(jù)庫(kù)管理員最終用戶圖1-6數(shù)據(jù)庫(kù)系統(tǒng)層次示意圖第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/925

數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)是指數(shù)據(jù)庫(kù)系統(tǒng)是由外模式、模式和內(nèi)模式三級(jí)構(gòu)成。1.模式(Schema)2.外模式(ExternalSchema)3.內(nèi)模式(InternalSchema)1.3.2三級(jí)結(jié)構(gòu)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/926

模式也稱邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖,屬于邏輯層抽象(LogicalLevel)。它是數(shù)據(jù)庫(kù)系統(tǒng)模式結(jié)構(gòu)的中間層,既不涉及數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié)和硬件環(huán)境,也與具體的應(yīng)用程序,與所使用的應(yīng)用開(kāi)發(fā)工具及高級(jí)程序設(shè)計(jì)語(yǔ)言(如C,COBOL,F(xiàn)ORTRAN)無(wú)關(guān)。模式實(shí)際上是數(shù)據(jù)庫(kù)數(shù)據(jù)在邏輯級(jí)上的視圖。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)模式。數(shù)據(jù)庫(kù)模式以某一種數(shù)據(jù)模型為基礎(chǔ),統(tǒng)一綜合地考慮了所有用戶的需求,并將這些需求有機(jī)地結(jié)合成一個(gè)邏輯整體。定義模式時(shí)不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),例如數(shù)據(jù)記錄由哪些數(shù)據(jù)項(xiàng)構(gòu)成,數(shù)據(jù)項(xiàng)的名字、類型、取值范圍等,而且要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)的安全性、完整性要求。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/927

外模式也稱子模式(Subschema)或用戶模式,屬于視圖層抽象(ViewLevel),它是數(shù)據(jù)庫(kù)用戶(包括應(yīng)用程序員和最終用戶)能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)邏輯表示。外模式通常是模式的子集。一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式。由于它是各個(gè)用戶的數(shù)據(jù)視圖,如果不同的用戶在應(yīng)用需求、看待數(shù)據(jù)的方式、對(duì)數(shù)據(jù)保密的要求等方面存在差異,則其外模式描述就是不同的。即使對(duì)模式中同一數(shù)據(jù),在外模式中的結(jié)構(gòu)、類型、長(zhǎng)度、保密級(jí)別等都可以不同。另一方面,同一外模式也可以為某一用戶的多個(gè)應(yīng)用系統(tǒng)所使用,但一個(gè)應(yīng)用程序只能使用一個(gè)外模式。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/928

內(nèi)模式也稱存儲(chǔ)模式(StorageSchema),屬于物理層抽象(PhysicalLevel)。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式。例如,記錄的存儲(chǔ)方式是順序存儲(chǔ)、按照B樹(shù)結(jié)構(gòu)存儲(chǔ)還是按hash方法存儲(chǔ);索引按照什么方式組織;數(shù)據(jù)是否壓縮存儲(chǔ),是否加密;數(shù)據(jù)的存儲(chǔ)記錄結(jié)構(gòu)有何規(guī)定等。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/929數(shù)據(jù)庫(kù)管理系統(tǒng)在三級(jí)模式之間提供了兩層映象:

·

外模式/模式映象

·

模式/內(nèi)模式映象正是這兩層映象保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論1.3.3數(shù)據(jù)庫(kù)的二級(jí)映象功能與數(shù)據(jù)獨(dú)立性2024/3/9301.外模式/模式映象模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu),外模式描述的是數(shù)據(jù)的局部邏輯結(jié)構(gòu)。對(duì)應(yīng)于同一個(gè)模式可以有任意多個(gè)外模式。對(duì)于每一個(gè)外模式,數(shù)據(jù)庫(kù)系統(tǒng)都有一個(gè)外模式/模式映象,它定義了該外模式與模式之間的對(duì)應(yīng)關(guān)系。這些映象定義通常包含在各自外模式的描述中。當(dāng)模式改變時(shí)(例如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類型等),由數(shù)據(jù)庫(kù)管理員對(duì)各個(gè)外模式/模式的映象作相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫(xiě)的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的邏輯獨(dú)立性。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/9312.模式/內(nèi)模式映象數(shù)據(jù)庫(kù)中只有一個(gè)模式,也只有一個(gè)內(nèi)模式,所以模式/內(nèi)模式映象是唯一的,它定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系。例如,說(shuō)明邏輯記錄和字段在內(nèi)部是如何表示的。該映象定義通常包含在模式描述中。當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變了(例如選用了另一種存儲(chǔ)結(jié)構(gòu)),由數(shù)據(jù)庫(kù)管理員對(duì)模式/內(nèi)模式映象作相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變。保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的物理獨(dú)立性。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/932物理獨(dú)立性是指用戶的應(yīng)用程序與存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù)中數(shù)據(jù)的相互獨(dú)立性。也就是說(shuō),數(shù)據(jù)在磁盤(pán)上的數(shù)據(jù)庫(kù)中的存儲(chǔ)是由DBMS管理的,用戶程序一般不需要了解。應(yīng)用程序要處理的只是數(shù)據(jù)的邏輯結(jié)構(gòu)也就是數(shù)據(jù)庫(kù)中的數(shù)據(jù),這樣在計(jì)算機(jī)存儲(chǔ)設(shè)備上的物理存儲(chǔ)改變時(shí),應(yīng)用程序可以不必改變,而由DBMS來(lái)處理這種改變,這又稱為“物理獨(dú)立性”。有的DBMS還提供一些功能使得某些程序上數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)改變了,用戶程序也可以不改變,這又稱為“邏輯獨(dú)立性”所以說(shuō),數(shù)據(jù)獨(dú)立性是數(shù)據(jù)庫(kù)的一種特征和優(yōu)點(diǎn),它有利于在數(shù)據(jù)庫(kù)結(jié)構(gòu)修改應(yīng)用程序盡可能的不改變或少改變,這樣就大大減少了應(yīng)用程序開(kāi)發(fā)人員的工作量。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/933圖1-7數(shù)據(jù)庫(kù)的三級(jí)結(jié)構(gòu)和兩個(gè)獨(dú)立性2024/3/9341.數(shù)據(jù)定義功能

DBMS提供數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,簡(jiǎn)稱DDL)2.數(shù)據(jù)操縱功能

DBMS還提供數(shù)據(jù)操縱語(yǔ)言(DataManipulationLanguage,簡(jiǎn)稱DML)第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論1.3.4DBMS的主要功能2024/3/9353.數(shù)據(jù)庫(kù)的運(yùn)行管理(1)并發(fā)(Concurrency)(2)數(shù)據(jù)的安全性(Security)保護(hù)(3)數(shù)據(jù)的完整性(Integrity)檢查(4)數(shù)據(jù)庫(kù)恢復(fù)(Recovery)4.數(shù)據(jù)字典數(shù)據(jù)字典DD(DataDictionary)中存放著對(duì)實(shí)際數(shù)據(jù)庫(kù)各級(jí)模式所做的定義,即對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)的描述。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論§1.4數(shù)據(jù)和數(shù)據(jù)聯(lián)系的描述1.4.1三個(gè)世界1.4.2E-R模型(Entity-RelationshipModel)1.4.3E-R模型的實(shí)例2024/3/9371.現(xiàn)實(shí)世界在現(xiàn)實(shí)世界中,事物及事物之間存在著聯(lián)系,這種聯(lián)系是客觀存在的。2.概念世界(1)實(shí)體(Entity)客觀存在并可相互區(qū)別的事物稱為實(shí)體。例如,一個(gè)職工、一個(gè)學(xué)生、一個(gè)部門(mén)、一門(mén)課、學(xué)生的一次選課、部門(mén)的一次訂貨、老師與系的工作關(guān)系(即某位老師在某系工作)等都是實(shí)體。(2)屬性(Attribute)實(shí)體所具有的某一特性稱為屬性。一個(gè)實(shí)體可以由若干個(gè)屬性來(lái)刻畫(huà)。例如學(xué)生實(shí)體可以由學(xué)號(hào)、姓名、性別、出生年份、系、入學(xué)時(shí)間等屬性組成。(94002268,張山,男,1976,計(jì)算機(jī)系,1994)。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論1.4.1三個(gè)世界2024/3/938

(3)關(guān)鍵字(Key)唯一標(biāo)識(shí)實(shí)體的屬性集稱為關(guān)鍵字。例如學(xué)號(hào)是學(xué)生實(shí)體的關(guān)鍵字。(4)聯(lián)系(Relationship)在現(xiàn)實(shí)世界中,事物內(nèi)部以及事物之間是有聯(lián)系的,這些聯(lián)系在信息世界中反映為實(shí)體(型)內(nèi)部的聯(lián)系和實(shí)體(型)之間的聯(lián)系。實(shí)體內(nèi)部的聯(lián)系通常是指組成實(shí)體的各屬性之間的聯(lián)系。實(shí)體之間的聯(lián)系通常是指不同實(shí)體集之間的聯(lián)系。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/939(5)實(shí)體型(EntityType)具有相同屬性的實(shí)體必然具有共同的特征和性質(zhì)。用實(shí)體名及其屬性名集合來(lái)抽象和刻畫(huà)同類實(shí)體,稱為實(shí)體型。例如,學(xué)生(學(xué)號(hào),姓名,性別,出生年份,系,入學(xué)時(shí)間)就是一個(gè)實(shí)體型。(6)實(shí)體集(EntitySet)同型實(shí)體的集合稱為實(shí)體集。例如,全體學(xué)生就是一個(gè)實(shí)體集。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/940相關(guān)英文講解:Entitytype:Agroupofobjectswiththesameproperties,whichareidentifiedbytheenterpriseashavinganindependentexistence.Entityoccurrence:Auniquelyidentifiableobjectofanentitytype.Attribute:Apropertyofanentityorarelationshiptype.Candidatekey:Theminimalsetofattributesthatuniquelyidentifieseachoccurrenceofanentitytype.3.機(jī)器世界數(shù)據(jù)庫(kù)中的數(shù)據(jù)是有結(jié)構(gòu)的,這種結(jié)構(gòu)用數(shù)據(jù)模型表示。數(shù)據(jù)模型將概念世界中的實(shí)體及實(shí)體間的聯(lián)系進(jìn)一步抽象成便于計(jì)算機(jī)處理的方式。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/941第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論1.4.2E-R模型(Entity-RelationshipModel)1.概念概念模型是對(duì)信息世界建模,所以概念模型應(yīng)該能夠方便、準(zhǔn)確地表示出上述信息世界中的常用概念。概念模型的表示方法很多,其中最為著名最為常用的是P.P.S.Chen于1976年提出的實(shí)體-聯(lián)系方法(Entity-RelationshipApproach)。該方法用E-R圖來(lái)描述現(xiàn)實(shí)世界的概念模型,E-R方法也稱為E-R模型。2024/3/9422.描述概念世界,建立概念模型的實(shí)用工具

E-R圖提供了表示實(shí)體型、屬性和聯(lián)系的方法:

·

實(shí)體型:用矩形表示,矩形框內(nèi)寫(xiě)明實(shí)體名。

·

屬性:用橢圓形表示,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來(lái)。

·

聯(lián)系:用菱形表示,菱形框內(nèi)寫(xiě)明聯(lián)系名,并用無(wú)向邊分別與有關(guān)實(shí)體連接起來(lái),同時(shí)在無(wú)向邊旁標(biāo)上聯(lián)系的類型(1:1,1:n或m:n)。

相關(guān)英文講解:TheERmodelusesahigherlevelofabstractionthanthesemanticnetbycombiningsetsofentityoccurrencesintoentitytypesandsetsofrelationshipoccurrencesintorelationshiptypes.第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/9433.聯(lián)系的類型兩個(gè)實(shí)體型之間的聯(lián)系可以分為三類:(1)一對(duì)一聯(lián)系(1:1)設(shè)A,B為兩個(gè)實(shí)體集。若A中的每個(gè)實(shí)體至多和B中的一個(gè)實(shí)體有聯(lián)系,反過(guò)來(lái),B中的每實(shí)體至多和A中的一個(gè)實(shí)體有聯(lián)系,稱A對(duì)B或B對(duì)A是1:1聯(lián)系,見(jiàn)圖1-8。例如,一個(gè)公司只有一個(gè)總經(jīng)理,同時(shí)一個(gè)總經(jīng)理不能在其他公司兼職。注意“至多”一詞的含義,1:1聯(lián)系不一定都是一一對(duì)應(yīng)的關(guān)系。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/944圖1-8一對(duì)一聯(lián)系第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/945(2)一對(duì)多聯(lián)系(1:n)如果A中的每個(gè)實(shí)體可以和B中的幾個(gè)試題有聯(lián)系,而B(niǎo)中的每個(gè)實(shí)體至多和A中的一個(gè)實(shí)體有聯(lián)系,那么A對(duì)B屬于1:n聯(lián)系,見(jiàn)圖1-9。這類聯(lián)系比較普遍,例如,部門(mén)與職工只在一個(gè)部門(mén)就職(只占一個(gè)部門(mén)的編制)。又如,一個(gè)學(xué)生只能在一個(gè)系注冊(cè),而一個(gè)系有很多個(gè)學(xué)生。一對(duì)一的聯(lián)系可以看作一對(duì)多聯(lián)系的一個(gè)特殊情況,即n=1時(shí)的特例。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/946圖1-9一對(duì)多聯(lián)系第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/947(3)多對(duì)多聯(lián)系(m:n)若A中的每個(gè)實(shí)體可與和B中的多個(gè)實(shí)體有聯(lián)系,反過(guò)來(lái),B中的每個(gè)實(shí)體也可以與A中的多個(gè)試題有聯(lián)系,稱A對(duì)B或B對(duì)A是m:n聯(lián)系,見(jiàn)圖1-10。例如,一個(gè)學(xué)生可以選修多門(mén)課程,一門(mén)課程由多名學(xué)生選修。學(xué)生和課程間存在多對(duì)多聯(lián)系。圖書(shū)與讀者之間是m:n聯(lián)系:一位讀者可以借閱若干本圖書(shū);同一本書(shū)可以相繼被幾個(gè)讀者借閱。研究人員和科研之間是m:n聯(lián)系:一個(gè)人可以參加多個(gè)課題;一個(gè)課題由多個(gè)人參加。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/948圖1-10多對(duì)多聯(lián)系第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/949相關(guān)英文講解:Relationshiptype:Asetofmeaningfulassociationsamongentitytypes.Relationshipoccurrence:Auniquelyidentifiableassociation,whichincludesoneoccurrencefromeachparticipatingentitytype.0..1Zerooroneentityoccurrence1..1(orjust1)Exactlyoneentityoccurrence0..*(orjust*)Zeroormanyentitiesoccurrences1..*Oneormanyentityoccurrences第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/950

以一個(gè)簡(jiǎn)單的工廠管理為例。通過(guò)實(shí)地調(diào)查分析,該工廠需要管理的實(shí)體類型有雇員、部門(mén)、項(xiàng)目、零件、供應(yīng)商和倉(cāng)庫(kù)。在該系統(tǒng)中,與管理這些實(shí)體有關(guān)的有以下這些聯(lián)系:(1)一個(gè)雇員只在一個(gè)部門(mén)工作,一個(gè)部門(mén)可以有多個(gè)雇員。(2)一個(gè)雇員可以參加一個(gè)以上的項(xiàng)目,每個(gè)項(xiàng)目常需要多個(gè)人參加。(3)每個(gè)項(xiàng)目必須確定一個(gè)負(fù)責(zé)人,一個(gè)人可以負(fù)責(zé)多個(gè)項(xiàng)目。(4)一個(gè)供應(yīng)商可以為若干個(gè)項(xiàng)目供應(yīng)零件,每個(gè)項(xiàng)目可以從不同的供應(yīng)商那里采購(gòu)零件,每個(gè)項(xiàng)目需要多種零件。(5)系統(tǒng)還保存各個(gè)供應(yīng)商可以提供的各種零件與數(shù)量。(6)一種零件還可以由其他幾種零件組裝而成。(7)購(gòu)買(mǎi)的零件存放在倉(cāng)庫(kù)里,一個(gè)倉(cāng)庫(kù)存放多種零件,一種零件也可以存放在不同的倉(cāng)庫(kù)當(dāng)中。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論1.4.3E-R模型的實(shí)例2024/3/951雇員雇員號(hào),姓名,性別,職稱,工資,住址部門(mén)部門(mén)號(hào),名稱,電話,部門(mén)地址項(xiàng)目項(xiàng)目號(hào),項(xiàng)目名,預(yù)算,開(kāi)始日期,完成日期零件零件號(hào),零件名,規(guī)模,單價(jià)供應(yīng)商編號(hào),名稱,聯(lián)系人,電話,賬號(hào)倉(cāng)庫(kù)庫(kù)號(hào),地址,面積,電話表1-1第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/952圖1-11一個(gè)工廠的E-R圖第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/953本章小結(jié)

在這一章,我們介紹了數(shù)據(jù)與信息的區(qū)別與聯(lián)系、信息系統(tǒng)、計(jì)算機(jī)數(shù)據(jù)管理發(fā)展的4個(gè)階段(人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫(kù)系統(tǒng)階段和分布式數(shù)據(jù)庫(kù)系統(tǒng)階段)、數(shù)據(jù)庫(kù)系統(tǒng)的組成、DBMS的主要功能,以及數(shù)據(jù)和數(shù)據(jù)聯(lián)系的描述方法:E-R模型。第一章數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論2024/3/954教學(xué)目的:l

了解幾種典型的數(shù)據(jù)模型,重點(diǎn)掌握關(guān)系模型l

掌握關(guān)系數(shù)據(jù)庫(kù)的基本概念l

掌握關(guān)系代數(shù)中6種基本運(yùn)算教學(xué)要求:l

牢記有關(guān)概念,掌握6種關(guān)系運(yùn)算第二章關(guān)系數(shù)據(jù)模型2024/3/955課程章節(jié)§2.1非關(guān)系模型§2.2關(guān)系模型§2.3關(guān)系運(yùn)算第二章關(guān)系數(shù)據(jù)模型2024/3/956§2.1非關(guān)系模型

2.1.1層次模型(HierarchicalDataModel)滿足下面兩個(gè)條件的基本層次聯(lián)系的集合為層次模型:(1)有且只有一個(gè)結(jié)點(diǎn)沒(méi)有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱為根結(jié)點(diǎn);(2)根以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。在層次模型中,每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型,記錄(類型)之間的聯(lián)系用結(jié)點(diǎn)之間的連線(有向邊)表示,這種聯(lián)系是父子之間的一對(duì)多的聯(lián)系。這就使得層次數(shù)據(jù)庫(kù)系統(tǒng)只能處理一對(duì)多的實(shí)體聯(lián)系。

第二章關(guān)系數(shù)據(jù)模型2024/3/9571.層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)

2.多對(duì)多聯(lián)系在層次模型中的表示

3.層次模型的數(shù)據(jù)操縱與完整性約束

4.層次數(shù)據(jù)模型的存儲(chǔ)結(jié)構(gòu)

5.層次模型的優(yōu)缺點(diǎn)

第二章關(guān)系數(shù)據(jù)模型2024/3/958層次模型的優(yōu)點(diǎn)主要有:

·

層次數(shù)據(jù)模型本身比較簡(jiǎn)單。

·

對(duì)于實(shí)體間聯(lián)系是固定的,且預(yù)先定義好的應(yīng)用系統(tǒng),采用層次模型來(lái)實(shí)現(xiàn),其性能優(yōu)于關(guān)系模型,不低于網(wǎng)狀模型。

·

層次數(shù)據(jù)模型提供了良好的完整性支持。

層次模型的缺點(diǎn)主要有:

·

現(xiàn)實(shí)世界中很多聯(lián)系是非層次性的,如多對(duì)多聯(lián)系、一個(gè)結(jié)點(diǎn)具有多個(gè)雙親等,層次模型表示這類聯(lián)系的方法很笨拙,只能通過(guò)引入冗余數(shù)據(jù)(易產(chǎn)生不一致性)或創(chuàng)建非自然的數(shù)據(jù)組織(引入虛擬結(jié)點(diǎn))來(lái)解決。

·

對(duì)插入和刪除操作的限制比較多。

·

查詢子女結(jié)點(diǎn)必須通過(guò)雙親結(jié)點(diǎn)。

·

由于結(jié)構(gòu)嚴(yán)密,層次命令趨于程序化。

第二章關(guān)系數(shù)據(jù)模型2024/3/9592.1.2網(wǎng)狀模型(NetworkDataModel)

1.網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)

把滿足以下兩個(gè)條件的基本層次聯(lián)系集合稱為網(wǎng)狀模型:(1)允許一個(gè)以上的結(jié)點(diǎn)無(wú)雙親;(2)一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的雙親。2.網(wǎng)狀數(shù)據(jù)模型的操縱與完整性約束

3.網(wǎng)狀數(shù)據(jù)模型的存儲(chǔ)結(jié)構(gòu)

第二章關(guān)系數(shù)據(jù)模型2024/3/960學(xué)生選修程課(a)S1C1

S1C2S2C2S2C1S2C3S3C1S3C2S3C3S3C4C1C3C4C2S1S3S2(b)

圖2-1網(wǎng)狀模型第二章關(guān)系數(shù)據(jù)模型2024/3/9614.網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點(diǎn)

網(wǎng)狀數(shù)據(jù)模型的優(yōu)點(diǎn)主要有:

·

能夠更為直接地描述現(xiàn)實(shí)世界,如一個(gè)結(jié)點(diǎn)可以有多個(gè)雙親。

·

具有良好的性能,存取效率較高。

網(wǎng)狀數(shù)據(jù)模型的缺點(diǎn)主要有:

·

結(jié)構(gòu)比較復(fù)雜,而且隨著應(yīng)用環(huán)境的擴(kuò)大,數(shù)據(jù)庫(kù)的結(jié)構(gòu)就變得越來(lái)越復(fù)雜,不利于最終用戶掌握。

·

其DDL,DML語(yǔ)言復(fù)雜,用戶不容易使用。第二章關(guān)系數(shù)據(jù)模型2024/3/9622.1.3面向?qū)ο竽P?ObjectOrientedModel)

面向?qū)ο竽P椭凶罨镜母拍钍菍?duì)象(object)和類(class)。1.對(duì)象現(xiàn)實(shí)世界中實(shí)體的模型化,它和記錄的概念相似,但更復(fù)雜。每個(gè)對(duì)象有一個(gè)唯一的標(biāo)識(shí)符,并把一個(gè)狀態(tài)(state)和一個(gè)行為(behavior)封裝在一起。2.類每個(gè)類有兩部分組成,其一是對(duì)象類型;其二是對(duì)這個(gè)對(duì)象類型進(jìn)行的操作方法。對(duì)象的狀態(tài)是描述該對(duì)象屬性值的集合,對(duì)象的行為是對(duì)該對(duì)象操作的集合。第二章關(guān)系數(shù)據(jù)模型2024/3/9633.類層次一個(gè)系統(tǒng)中所有的類和子類組成一個(gè)樹(shù)狀的類層次。4.面向?qū)ο竽P偷膬?yōu)缺點(diǎn)優(yōu)點(diǎn):由于面向?qū)ο竽P椭胁粌H包括描述對(duì)象狀態(tài)的屬性集,而且包括類的方法及類層次,具有更加豐富的表達(dá)能力。因此,面向?qū)ο蟮臄?shù)據(jù)庫(kù)比層次、網(wǎng)狀、關(guān)系數(shù)據(jù)庫(kù)使用方便。缺點(diǎn):由于模型復(fù)雜,系統(tǒng)實(shí)現(xiàn)起來(lái)難度大。第二章關(guān)系數(shù)據(jù)模型2024/3/964

§2.2關(guān)系模型(RelationDataModel)

2.2.1二維表

關(guān)系模型是用二維表的形式來(lái)表示實(shí)體和實(shí)體間聯(lián)系的數(shù)據(jù)模型。關(guān)系的邏輯結(jié)構(gòu)是一個(gè)二維表。表2-1和表2-2分別代表訂單和庫(kù)存兩個(gè)關(guān)系。表2-1訂單關(guān)系訂單號(hào)貨號(hào)訂貨單位售價(jià)訂貨量送貨地點(diǎn)96001JW65陽(yáng)光公司806.50280天津96002VF90友誼商城588.881700北京96003AB55和平飯店250.991005上海96004EF77五環(huán)實(shí)業(yè)674.00600北京第二章關(guān)系數(shù)據(jù)模型2024/3/965表2-2庫(kù)存關(guān)系貨號(hào)品名庫(kù)存量倉(cāng)庫(kù)地點(diǎn)單價(jià)VF90電話機(jī)1000北京550.00JW65收錄機(jī)300上海800.50SL88錄像機(jī)2600北京11898.50AB55收音機(jī)3000上海280.00EF77電視機(jī)1200廣州600.00第二章關(guān)系數(shù)據(jù)模型2024/3/9662.2.2關(guān)系術(shù)語(yǔ)

1.關(guān)系(Relations)一個(gè)關(guān)系對(duì)應(yīng)通常說(shuō)的一張表;2.元組(Tuples)表中的一行即為一個(gè)元組;3.屬性(Attributes)表中的一列即為一個(gè)屬性,給每一個(gè)屬性起一個(gè)名稱即屬性名。如上表有六列,對(duì)應(yīng)六個(gè)屬性(學(xué)號(hào),姓名,年齡,性別,系和年級(jí));第二章關(guān)系數(shù)據(jù)模型2024/3/967

4.域(Domains)屬性的取值范圍稱為該屬性的域。如人的年齡一般在1~150歲之間,大學(xué)生年齡屬性的域是(14~38),性別的域是(男,女),系別的域是一個(gè)學(xué)校所有系名的集合;學(xué)號(hào)的域?yàn)?位整數(shù),姓名的域?yàn)樽址稀?.關(guān)鍵字或碼(Keys)表中的某個(gè)屬性組,它可以唯一確定一個(gè)元組,如圖1.27中的學(xué)號(hào),可以唯一確定一個(gè)學(xué)生,也就成為本關(guān)系的主關(guān)鍵字;6.分量(Component):元組中的一個(gè)屬性值;7.關(guān)系模式(RelationSchemas)對(duì)關(guān)系的描述,一般表示為:關(guān)系名(屬性1,屬性2,…,屬性n)第二章關(guān)系數(shù)據(jù)模型2024/3/968相關(guān)英文講解:Recursiverelationship:Arelationshiptypewherethesameentitytypeparticipatesmorethanonceindifferentroles.Attribute:Apropertyofanentityorarelationshiptype.Attributedomain:Thesetofallowablevaluesforoneormoreattributes.Candidatekey:Theminimalsetofattributesthatuniquelyidentifieseachoccurrenceofanentitytype.第二章關(guān)系數(shù)據(jù)模型2024/3/9692.2.3關(guān)系模型的特點(diǎn)

1.關(guān)系必須規(guī)范化所謂規(guī)范化是指關(guān)系模型中的每一個(gè)關(guān)系模式都必須滿足一定的要求。2.

模型概念單一無(wú)論實(shí)體還是實(shí)體之間的聯(lián)系都用關(guān)系表示。對(duì)數(shù)據(jù)的檢索結(jié)果也是關(guān)系(即表)。所以其數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰,用戶易懂易用。3.集合操作在關(guān)系模型中,操作的對(duì)象和結(jié)果都是元組的集合,即關(guān)系。第二章關(guān)系數(shù)據(jù)模型2024/3/970關(guān)系數(shù)據(jù)模型還具有下列優(yōu)點(diǎn):

·關(guān)系模型與非關(guān)系模型不同,它是建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的。

·關(guān)系模型的存取路徑對(duì)用戶透明,從而具有更高的數(shù)據(jù)獨(dú)立性、更好的安全保密性,也簡(jiǎn)化了程序員的工作和數(shù)據(jù)庫(kù)開(kāi)發(fā)建立的工作。關(guān)系數(shù)據(jù)模型最主要的缺點(diǎn)是,由于存取路徑對(duì)用戶透明,查詢效率往往不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對(duì)用戶的查詢請(qǐng)求進(jìn)行優(yōu)化,增加了開(kāi)發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)難度。第二章關(guān)系數(shù)據(jù)模型2024/3/971§2.3關(guān)系運(yùn)算

關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果亦為關(guān)系。關(guān)系代數(shù)用到的運(yùn)算符包括四類:集合運(yùn)算符、專門(mén)的關(guān)系運(yùn)算符、算術(shù)比較符和邏輯運(yùn)算符。關(guān)系代數(shù)的運(yùn)算按運(yùn)算符的不同可分為傳統(tǒng)的集合運(yùn)算和專門(mén)的關(guān)系運(yùn)算兩類。第二章關(guān)系數(shù)據(jù)模型2024/3/9722.3.1傳統(tǒng)的集合運(yùn)算傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,包括并、差、交三種運(yùn)算。1.并運(yùn)算(Union)設(shè)有兩個(gè)關(guān)系R和S,它們具有相同的元素。R和S的并是由屬于R或?qū)儆赟的元素組組成的集合。2.差運(yùn)算(Difference)設(shè)有兩個(gè)關(guān)系R和S,它們具有相同的元數(shù)。R和S的差是由屬于R但不屬于S的元組組成的集合。3.交(Intersection)設(shè)有兩個(gè)關(guān)系R和S,它們具有相同的元數(shù)。R和S的交是由既屬于R又屬于S的元組組成的集合。第二章關(guān)系數(shù)據(jù)模型2024/3/9732.3.2選擇運(yùn)算(Selection)選擇運(yùn)算是從指定的關(guān)系中選取滿足給定條件的若干元組以構(gòu)成一個(gè)新關(guān)系的運(yùn)算,其表現(xiàn)形式為:

SELECT關(guān)系名

WHERE條件

其中,條件是由常數(shù)、字段名及其通過(guò)相應(yīng)的比較運(yùn)算符和邏輯運(yùn)算符連接形成邏輯運(yùn)算式組成的。第二章關(guān)系數(shù)據(jù)模型2024/3/974例1:設(shè)有關(guān)系圖書(shū)如表所示,從圖書(shū)中找出書(shū)名是“數(shù)據(jù)庫(kù)理論”的書(shū)目。

圖書(shū)目總編號(hào)分類號(hào)書(shū)名作者出版單位單價(jià)

445501445502445503332211112266665544114455113388TP3/12TP3/12TP3/12TP5/10TP3/12TS7/21TR9/12TR7/90數(shù)據(jù)庫(kù)導(dǎo)論數(shù)據(jù)庫(kù)導(dǎo)論數(shù)據(jù)庫(kù)導(dǎo)論計(jì)算機(jī)基礎(chǔ)FoxBASE高等數(shù)學(xué)線性代數(shù)大學(xué)英語(yǔ)DateDateDate李偉張三劉明孫業(yè)胡玲科技出版社科技出版社科技出版社高等教育出版社電子工業(yè)出版社高等教育出版社北京大學(xué)出版社清華大學(xué)出版社17.9017.9017.9018.0032.6019.0020.8012.50SELECT圖書(shū)WHERE書(shū)名=″數(shù)據(jù)庫(kù)導(dǎo)論″查詢結(jié)果包括3個(gè)元組第二章關(guān)系數(shù)據(jù)模型2024/3/975例2:從圖書(shū)中找出高等教育出版社出版的,單價(jià)不超過(guò)20元的書(shū)目。SELECT圖書(shū)WHERE出版單位=“高等教育出版社”AND單價(jià)<=20

查詢結(jié)果包括兩個(gè)元組第二章關(guān)系數(shù)據(jù)模型2024/3/9762.3.3投影運(yùn)算(Projection)關(guān)系R上的投影是從R中選擇出若干屬性列組成新的關(guān)系。投影運(yùn)算是從指定的關(guān)系中選取指定的若干字段從而構(gòu)成一個(gè)新關(guān)系的運(yùn)算,其表現(xiàn)形式為:PROJECT關(guān)系名(字段名1,字段名2,……,字段名n)第二章關(guān)系數(shù)據(jù)模型2024/3/977例3:設(shè)有讀者關(guān)系,讀者(借書(shū)證號(hào)、姓名、性別、單位、職稱、地址)。按照單位在前,姓名在后的次序列出讀者名單。PROJECT讀者(單位、姓名)

此運(yùn)算結(jié)果包括元組數(shù)目不變,但減少了列的數(shù)目,同時(shí)列的順序顛倒過(guò)來(lái)了。例4:從圖書(shū)中找出藏書(shū)所涉及的所有的出版社。PROJECT圖書(shū)(出版社)查詢結(jié)果包括5個(gè)元組。

投影之后不僅減少了某些列,也可能減少了某些元組。以為取消了某些屬性之后,其余屬性可能有相同的值,造成重復(fù)元組,應(yīng)當(dāng)刪除完全相同的元組。第二章關(guān)系數(shù)據(jù)模型2024/3/9782.3.4聯(lián)接運(yùn)算(Join)

選擇和投影運(yùn)算都屬于一目運(yùn)算,它們的操作對(duì)象只是一個(gè)關(guān)系。連接運(yùn)算是二目運(yùn)算,需要兩個(gè)關(guān)系作為操作對(duì)象。1.聯(lián)接聯(lián)接運(yùn)算是選取若干個(gè)指定關(guān)系中的字段滿足給定條件的元組從左至右連接,從而構(gòu)成一個(gè)新關(guān)系的運(yùn)算,其表現(xiàn)形式為:

JOIN〈關(guān)系1〉A(chǔ)ND〈關(guān)系2〉WHERE〈條件〉第二章關(guān)系數(shù)據(jù)模型2024/3/979例5:設(shè)有訂單和庫(kù)存兩個(gè)關(guān)系如表2-4和表2-5所示。查看存庫(kù)量的商品詳情。

表2-4定單關(guān)系訂單號(hào)貨號(hào)訂貨單位售價(jià)訂貨量送貨地點(diǎn)96001JW65陽(yáng)光公司806.50280天津96002VF90友誼商城588.881700北京96003AB55和平飯店250.991005上海96004EF77五環(huán)實(shí)業(yè)590.00600北京第二章關(guān)系數(shù)據(jù)模型2024/3/980貨號(hào)品名庫(kù)存量倉(cāng)庫(kù)地點(diǎn)單價(jià)VF90電話機(jī)1000北京550.00JW65收音機(jī)300上海800.50SL88錄像機(jī)2600北京11898.50AB55收音機(jī)3000上海280.00EF77電視機(jī)1200廣州600.00表2-5庫(kù)存關(guān)系第二章關(guān)系數(shù)據(jù)模型2024/3/981表2.6定單關(guān)系訂貨號(hào)貨號(hào)訂貨單位售價(jià)訂購(gòu)量送貨地點(diǎn)品名存庫(kù)量倉(cāng)庫(kù)地點(diǎn)單價(jià)96001JW65陽(yáng)光公司806.50280天津收音機(jī)300上海800.5096003AB55和平飯店250.991005上海收音機(jī)3000上海280.0096004EF77五還實(shí)業(yè)674.00600北京電視機(jī)1200廣州600.00JOIN訂單AND庫(kù)存WHERE訂單(貨號(hào))=庫(kù)存(貨號(hào))AND庫(kù)存量>=訂購(gòu)量結(jié)果如表2-6所示。表2-6例5聯(lián)接結(jié)果第二章關(guān)系數(shù)據(jù)模型2024/3/982例6:設(shè)有3個(gè)關(guān)系:學(xué)生(學(xué)號(hào),姓名,所在系,性別,籍貫,現(xiàn)住址……)課程(課程號(hào),課程名稱,學(xué)分,課時(shí)……)選修(學(xué)號(hào),課程號(hào),成績(jī))查詢成績(jī)90分以上的學(xué)生姓名。R1=SELECT選修WHERE成績(jī)>=90R2=PROJECT學(xué)生(學(xué)號(hào),姓名)R3=JOINR1ANDR2WHERER1(學(xué)號(hào))=R2(學(xué)號(hào))如果用以下方式查詢,效率則低得多。S1=JOIN選課AND學(xué)生WHERE選課(學(xué)號(hào))=學(xué)生(學(xué)號(hào))S2=SELECTS1WHERE成績(jī)>=90第二章關(guān)系數(shù)據(jù)模型2024/3/983例7查看選修了“操作系統(tǒng)”課程的學(xué)生詳細(xì)情況。S1=SELECT課程WHERE課程名=“操作系統(tǒng)”S2=PROJECTS1(課程號(hào),課程名)S3=JOIN選修ANDS2WHERE選課(課程號(hào))=S2(課程號(hào))S4=JOIN學(xué)生ANDS3WHERE學(xué)生(學(xué)號(hào))=S3(學(xué)號(hào))通過(guò)上述例子可見(jiàn),不同關(guān)系中的公共屬性是自然聯(lián)接的“紐帶”。利用關(guān)系的投影、選擇和自然聯(lián)接可以方便地構(gòu)造新的關(guān)系。2.自然聯(lián)接自然聯(lián)接是去掉重復(fù)屬性的等值聯(lián)接。它屬于聯(lián)接運(yùn)算的一個(gè)特例,是最常用的聯(lián)接運(yùn)算,在關(guān)系運(yùn)算中起著重要作用。第二章關(guān)系數(shù)據(jù)模型2024/3/984

2.3.5外關(guān)鍵字

定義:如果一個(gè)關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它們是另外一個(gè)關(guān)系的關(guān)鍵字,則稱其為該關(guān)系的外關(guān)鍵字。在例5、例6中,訂單關(guān)系中的關(guān)鍵字是訂單號(hào),屬性貨號(hào)不是本關(guān)系的關(guān)鍵字,而是庫(kù)存關(guān)系的關(guān)鍵字。因此,對(duì)于訂單關(guān)系而言,貨號(hào)是外關(guān)鍵字。在例7、例8中,選修關(guān)系的關(guān)鍵字是屬性組合(學(xué)號(hào),課程號(hào));學(xué)號(hào)或課程號(hào)的任何一個(gè)都不能唯一確定選修關(guān)系的整個(gè)元組,但它們分別是學(xué)生和課程關(guān)系的關(guān)鍵字。因此,對(duì)于選修而言,它們是外關(guān)鍵字。第二章關(guān)系數(shù)據(jù)模型2024/3/985本章小結(jié)

在這一章,我們首先簡(jiǎn)單介紹了非關(guān)系模型:層次模型、網(wǎng)狀模型、面向?qū)ο竽P?。然后重點(diǎn)介紹了關(guān)系數(shù)據(jù)模型。通俗的講,一個(gè)關(guān)系就是一個(gè)二維表。表中的一行是關(guān)系的一個(gè)元組,表中的一列為關(guān)系中一個(gè)屬性的具體值。應(yīng)當(dāng)掌握關(guān)系模型的特點(diǎn)和關(guān)系運(yùn)算。關(guān)系運(yùn)算包括傳統(tǒng)的集合運(yùn)算(并、差、交)和專門(mén)的關(guān)系運(yùn)算(選擇、投影、聯(lián)接)。此外關(guān)鍵字是一個(gè)很重要的概念,它是使關(guān)系之間建立聯(lián)系的手段。第二章關(guān)系數(shù)據(jù)模型2024/3/986章后習(xí)題

1.?dāng)?shù)據(jù)模型有幾種,都是什么?2.解釋下列名詞:關(guān)系、關(guān)系模式、關(guān)系模型、屬性、元組、關(guān)鍵字、外關(guān)鍵字。3.試舉出層次模型、網(wǎng)狀模型和關(guān)系模型的例子,并給出一個(gè)實(shí)例。4.關(guān)系模型有事么特點(diǎn)?5.關(guān)系數(shù)據(jù)庫(kù)有哪些特點(diǎn)?6.試給出一個(gè)有3個(gè)以上屬性的關(guān)系,至少包括5個(gè)元組,并指出關(guān)鍵字。7.關(guān)系運(yùn)算有幾種類型,都包括哪些?8.能否舉出一個(gè)例子,聯(lián)接運(yùn)算但不是自然聯(lián)接。第二章關(guān)系數(shù)據(jù)模型2024/3/9879.試畫(huà)出選擇、投影、聯(lián)接運(yùn)算的流程圖,或用某種程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)。10.設(shè)有學(xué)生選修課程數(shù)據(jù)庫(kù),S(S#,SNAME,AGE,SEX,DEPARTMENT,ADDRESS,BIRTHPLACE)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)試用關(guān)系運(yùn)算查詢下列問(wèn)題:(1)學(xué)生“李小波”所在的系。(2)學(xué)生“李小波”所選修的全部課程名稱。(3)所有成績(jī)都在80分以上的學(xué)生姓名及所在的系。第二章關(guān)系數(shù)據(jù)模型2024/3/988教學(xué)目的了解SQL的背景知識(shí)掌握SQL查詢語(yǔ)句掌握SQL數(shù)據(jù)定義語(yǔ)句CREATE、DROP、ALTER掌握數(shù)據(jù)操縱語(yǔ)句INSERT、DELETE、UPDATE掌握數(shù)據(jù)控制語(yǔ)句GRANT、REVOKE教學(xué)要求牢記有關(guān)概念,掌握SQL查詢第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/989§3.1SQL查詢§3.2SQL數(shù)據(jù)定義§3.3SQL數(shù)據(jù)操作§3.4SQL數(shù)據(jù)控制§3.5數(shù)據(jù)字典課程章節(jié)第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/990教學(xué)重點(diǎn)SQL數(shù)據(jù)定義:基本表、視圖、別名,建立索引SQL數(shù)據(jù)操縱:插入、更新、刪除SQL數(shù)據(jù)查詢教學(xué)難點(diǎn)SQL查詢:簡(jiǎn)單查詢、聯(lián)接查詢、嵌套查詢、庫(kù)函數(shù)查詢、集合運(yùn)算第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/991SQL的特點(diǎn)

SQL語(yǔ)言集數(shù)據(jù)查詢(DataQuery)、數(shù)據(jù)操縱(DataManipulation)、數(shù)據(jù)定義(DataDefinition)和數(shù)據(jù)控制(DataControl)功能于一體,主要特點(diǎn)包括:1.綜合統(tǒng)一2.高度非過(guò)程化3.面向集合的操作方式4.以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式5.語(yǔ)言簡(jiǎn)捷,易學(xué)易用第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/992§3.1SQL查詢

SELECT-FROM-WHERE基本結(jié)構(gòu):SELECT[DISTINCT]目標(biāo)列SELECT子句FROM基本表(或視圖)列FROM子句[WHERE條件表達(dá)式]WHERE子句[GROUPBY列名1GROUPBY子句[HAVING內(nèi)部函數(shù)表達(dá)式]]HAVING字句[ORDERBY列名2[ASC/DESC]]第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/993注釋:選擇表中的全部列或部分列,這就是投影運(yùn)算。2.消除取值重復(fù)的行兩個(gè)本來(lái)并不完全相同的元組,投影到指定的某些列上后,可能變成相同的行了。3.如果指定DISTINCT短語(yǔ),則表示在計(jì)算時(shí)要取消指定列中的重復(fù)值。如果不指定DISTINCT短語(yǔ)或指定ALL短語(yǔ)(ALL為缺省值),則表示不取消重復(fù)值。第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/994l

單價(jià)between10and20等價(jià)于單價(jià)>=10and單價(jià)<=20l

出版單位in(“人民出版社”,”科學(xué)出版社”)等價(jià)于出版單位=”人民出版社”

or出版單位=”科學(xué)出版社”l

書(shū)名like“數(shù)據(jù)庫(kù)%”

或書(shū)名like“數(shù)據(jù)庫(kù)__”like后面必須是字符串常量_下劃線任何一個(gè)字符

%任何多個(gè)字符(包括0個(gè))l

exists存在notexists不存在4.條件表達(dá)式(1)關(guān)系運(yùn)算(2)邏輯運(yùn)算(3)謂詞(4)幾種特殊的第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9956.集合的比較

SOME:“至少比一個(gè)……”;

ALL:“比所有的都……”。

7.集合基數(shù)的測(cè)試(1)測(cè)試一個(gè)子查詢的結(jié)構(gòu)是否為空

EXISTS:子查詢的結(jié)果不為空時(shí)為真;

NOTEXISTS:子查詢的結(jié)果為空時(shí)為真。(2)測(cè)試一個(gè)子查詢的結(jié)果是否存在重復(fù)元組

UNIQUE:子查詢的結(jié)果不存在重復(fù)元組時(shí)為真;

NOTUNIQUE:子查詢的結(jié)果存在重復(fù)元組時(shí)為真。5.集合成員資格的確認(rèn)

IN:當(dāng)指定元素在集合中時(shí)為真;

NOTIN:當(dāng)指定元素不在集合中時(shí)為真。第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9968.測(cè)試空值ISNULL:為空時(shí)為真;ISNOTNULL:不為空時(shí)為真。9.GROUPBY子句將查詢結(jié)果表按某一列或多列值分組,值相等的為一組。10.對(duì)查詢結(jié)果排序用戶可以用ORDERBY子句對(duì)查詢結(jié)果按照一個(gè)或多個(gè)屬性列的升序(ASC)或降序(DESC)排列,缺省值為升序。第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/997查詢實(shí)例例題:設(shè)圖書(shū)管理關(guān)系數(shù)據(jù)模型的三個(gè)關(guān)系模式:圖書(shū)(總編號(hào),分類號(hào),書(shū)名,作者,出版單位,單價(jià))讀者(借書(shū)證號(hào),姓名,性別,單位,職稱,地址)借閱(借書(shū)證號(hào),總編號(hào),借閱日期,備注)第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9983.1.1簡(jiǎn)單查詢例1:找出讀者李欣所在單位SELECT“讀者李欣所在單位:”,姓名,單位FROM讀者WHERE姓名=“李欣”;注:SELECT子句中允許有字符串常量(表達(dá)式的簡(jiǎn)單情況)例2:查看所有讀者的全部情況SELECT*FROM讀者;注:SELECT子句中的*表示全部屬性的通配符在查詢中無(wú)條件限制時(shí),可省略WHERE子句第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/999例3:查找人民出版社和科學(xué)出版社的所有圖書(shū)及作者方法一:SELECT書(shū)名,作者,出版單位FROM圖書(shū)WHERE出版單位=“人民出版社”

OR出版單位=“科學(xué)出版社”;方法二:SELECT書(shū)名,作者,出版單位FROM圖書(shū)WHERE出版單位IN(“人民出版社”,“科學(xué)出版社”);第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9100例4:查找書(shū)名以“數(shù)據(jù)庫(kù)”打頭的所有圖書(shū)及作者SELECT書(shū)名,作者FROM圖書(shū)WHERE書(shū)名LIKE“數(shù)據(jù)庫(kù)%”;注:謂詞LIKE后面必須是字符串常量,其中可以使用兩個(gè)通配符:_下劃線任何一個(gè)字符%任何多個(gè)字符(包括0個(gè))

例5:列出圖書(shū)館中所有藏書(shū)的書(shū)名及出版單位SELECTDISTINCT書(shū)名,出版單位FROM圖書(shū);注:DISTINCT從查詢結(jié)果中去掉重復(fù)元組第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9101例6:查出人民出版社的所有圖書(shū)及單價(jià),結(jié)果按單價(jià)降序排列SELECT書(shū)名,出版單位,單價(jià)FROM圖書(shū);WHERE出版單位=“人民出版社”O(jiān)RDERBY單價(jià)DESC;第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9102例7:查找價(jià)格介于10和20元之間的圖書(shū),結(jié)果按分類號(hào)和單價(jià)升序排列方法一:SELECT書(shū)名,作者,單價(jià),分類號(hào)FROM圖書(shū)WHERE單價(jià)BETWEEN10AND20ORDERBY分類號(hào),單價(jià)[ASC];方法二:SELECT書(shū)名,作者,單價(jià),分類號(hào)FROM圖書(shū)WHERE單價(jià)>=10AND單價(jià)<=20ORDERBY分類號(hào),單價(jià)[ASC];注:用ORDERBY可對(duì)查詢結(jié)果排序DESC(descending)降序ASC(ascending)升序多重排序:主關(guān)鍵字,次關(guān)鍵字,關(guān)鍵字3,……第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9103例8:檢索借了總編號(hào)為500088和100909兩本書(shū)的借書(shū)證號(hào)SELECTX.借書(shū)證號(hào)FROM借閱X,借閱YWHEREX.借書(shū)證號(hào)=Y(jié).借書(shū)證號(hào)ANDX.總編號(hào)=”500088”ANDY.總編號(hào)=”100909”;注:同一個(gè)關(guān)系借閱在一個(gè)查詢模塊中出現(xiàn)兩次,則必須引入別名X,Y用相同屬性時(shí)用“.”分開(kāi)第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9104例9:求缺少職稱的讀者姓名SELECT姓名FROM讀者WHERE職稱ISNULL;注:列名IS[NOT]NULL不能寫(xiě)成列名=NULL第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/91053.1.2聯(lián)接查詢查詢目標(biāo)涉及到兩個(gè)或幾個(gè)關(guān)系1.等值與非等值連接查詢

連接查詢中用來(lái)連接兩個(gè)表的條件稱為連接條件或連接謂詞。2.自身連接

連接操作不僅可以在兩個(gè)表之間進(jìn)行,也可以是一個(gè)表與其自己進(jìn)行連接,稱為表的自身連接。3.外連接

在通常的連接操作中,只有滿足連接條件的元組才能作為結(jié)果輸出。4.復(fù)合條件連接

上面各個(gè)連接查詢中,WHERE子句中只有一個(gè)條件,即連接謂詞。WHERE子句中可以有多個(gè)連接條件,稱為復(fù)合條件連接。注:連接條件中的字段類型必須是可比的,但不必相同第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9106例10:查找所有借閱了圖書(shū)的讀者姓名及所在單位SELECTDISTINCT姓名,單位FROM讀者,借閱WHERE讀者.借書(shū)證號(hào)=借閱.借書(shū)證號(hào);

例11:找出讀者李欣所借的所有圖書(shū)的書(shū)名及借閱日期SELECT姓名,“所借圖書(shū):”,書(shū)名,借閱日期FROM圖書(shū),借閱,讀者WHERE讀者.借書(shū)證號(hào)=借閱.借書(shū)證號(hào)and借閱.總編號(hào)=圖書(shū).總編號(hào)and姓名=”李欣”;注:查詢涉及到三個(gè)關(guān)系之間的自然聯(lián)接,用外關(guān)鍵字指出聯(lián)接條件第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9107例12:查找價(jià)格在20元以上已借出的圖書(shū),結(jié)果按單價(jià)降序排序SELECT*FROM圖書(shū),借閱WHERE圖書(shū).總編號(hào)=借閱.總編號(hào)and單價(jià)>=20ORDERBY單價(jià)DESC;注:這里*代表圖書(shū)和借閱兩個(gè)關(guān)系聯(lián)接后的所有屬性第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9108

在SQL語(yǔ)言中,一個(gè)SELECT-FROM-WHERE語(yǔ)句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語(yǔ)的條件中的查詢稱為嵌套查詢。1.帶有IN謂詞的子查詢

在嵌套查詢中,子查詢的結(jié)果往往是一個(gè)集合,所以謂詞IN是嵌套查詢中最經(jīng)常使用的謂詞。2.帶有比較運(yùn)算符的子查詢

帶有比較運(yùn)算符的子查詢是指父查詢與子查詢之間用比較運(yùn)算符進(jìn)行連接。3.帶有ANY或ALL謂詞的子查詢

子查詢返回單值時(shí)可以用比較運(yùn)算符,而使用ANY或ALL謂詞時(shí)則必須同時(shí)使用比較運(yùn)算符。4.帶有EXISTS謂詞的子查詢

EXISTS代表存在量詞$。帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值“true”或邏輯假值“false”。3.1.3嵌套查詢第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9109例13:找出讀者李欣所借的所有圖書(shū)的書(shū)名及借閱日期SELECT姓名,“所借圖書(shū):”,書(shū)名,借閱日期FROM圖書(shū)WHERE總編號(hào)IN(SELECT總編號(hào)FROM借閱WHERE借書(shū)證號(hào)IN(SELECT借書(shū)證號(hào)FROM讀者WHERE姓名=”李欣”)));第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9110例14:找出借閱了“C語(yǔ)言程序設(shè)計(jì)”一書(shū)的讀者姓名及所在單位方法一:SELECT姓名,單位FROM圖書(shū),借閱,讀者WHERE讀者.借書(shū)證號(hào)=借閱.借書(shū)證號(hào)and借閱.總編號(hào)=圖書(shū).總編號(hào)and書(shū)名=”C語(yǔ)言程序設(shè)計(jì)”;方法二:SELECT姓名,單位FROM讀者WHERE借書(shū)證號(hào)IN(SELECT借書(shū)證號(hào)FROM借閱WHERE總編號(hào)IN(SELECT總編號(hào)FROM圖書(shū)WHERE書(shū)名=”C語(yǔ)言程序設(shè)計(jì)”)));注:在嵌套查詢中最常用的是謂詞IN

并非所有的嵌套查詢都能用聯(lián)接查詢替代,往往是結(jié)合使用更顯得簡(jiǎn)潔、方便第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9111例15:找出與李欣在同一天借書(shū)的讀者姓名、所在單位SELECT姓名,單位,借閱日期FROM讀者,借閱WHERE借閱.借書(shū)證號(hào)=讀者.借書(shū)證號(hào)AND借閱日期IN(SELECT借書(shū)日期FROM借閱,讀者WHERE借閱.借書(shū)證號(hào)=讀者.借書(shū)證號(hào)AND姓名=“李欣”);第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9112例16:找出沒(méi)有借閱任何圖書(shū)的讀者及所在單位方法一:SELECT姓名,單位FROM讀者WHERE借書(shū)證號(hào)NOTIN(SELECT借書(shū)證號(hào)FROM借閱);方法二:SELECT姓名,單位FROM讀者WHERENOTEXISTS(SELECT*FROM借閱WHERE借閱.借書(shū)證號(hào)=讀者.借書(shū)證號(hào));注:EXISTS表示存在,若子查詢結(jié)果非空,則滿足條件

NOTEXISTS表示不存在,若子查詢結(jié)果為空,則滿足條件第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9113例17:找出藏書(shū)中所有與“數(shù)據(jù)庫(kù)導(dǎo)論”或“數(shù)據(jù)庫(kù)原理”在同一出版單位出版的書(shū)SELECT*FROM圖書(shū)WHERE出版單位=ANY(SELECT出版單位FROM圖書(shū)WHERE書(shū)名IN(“數(shù)據(jù)庫(kù)導(dǎo)論”,“數(shù)據(jù)庫(kù)原理”));注:ANY表示與子查詢結(jié)果的任何一個(gè)值相比較,滿足條件即可=ANY亦可用IN代替第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9114例18:找出藏書(shū)中比高等教育出版社的所有圖書(shū)單價(jià)更高的書(shū)籍方法一:SELECT*FROM圖書(shū)WHERE單價(jià)>ALL(SELECT單價(jià)FROM圖書(shū)WHERE出版單位=“高等教育出版社”);方法二:用函數(shù)SELECT*FROM圖書(shū)WHERE單價(jià)>(SELECTMAX(單價(jià))FROM圖書(shū)WHERE出版單位=“高等教育出版社”);注:ALL表示與子查詢結(jié)果的所有單價(jià)相比都高才算滿足條件第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9115為了進(jìn)一步方便用戶,增強(qiáng)檢索功能,SQL提供了許多集函數(shù),主要有:

COUNT(*)統(tǒng)計(jì)元組個(gè)數(shù)

COUNT(屬性名)統(tǒng)計(jì)一列中值的個(gè)數(shù)

SUM計(jì)算一列值的總和(此列必須是數(shù)值型)

AVG計(jì)算一列值的平均值(此列必須是數(shù)值型)

MAX求一列值中的最大值

MIN求一列值中的最小值例19:見(jiàn)例18方法二3.1.4使用庫(kù)函數(shù)查詢第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9116例20:求圖書(shū)館藏書(shū)的總冊(cè)數(shù)SELECT“藏書(shū)總冊(cè)數(shù):”,COUNT(*)FROM圖書(shū);例21:求計(jì)算機(jī)科學(xué)系當(dāng)前借閱了圖書(shū)的讀者人數(shù)SELECT“計(jì)算機(jī)科學(xué)系借書(shū)人數(shù):”,COUNT(DISTINCT借書(shū)證號(hào))FROM借閱WHERE借書(shū)證號(hào)IN(SELECT借書(shū)證號(hào)FROM讀者WHERE單位=“計(jì)算機(jī)科學(xué)系”);第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9117例22:求出各個(gè)出版社圖書(shū)的最高價(jià)格,最低價(jià)格和平均價(jià)格SELECT出版單位,MAX(單價(jià)),MIN(單價(jià)),AVG(單價(jià))FROM圖書(shū)GROUPBY出版單位;注:GROUPBY的作用是按屬性的取值對(duì)元組分組,然后對(duì)每一組分別使用庫(kù)函數(shù)此時(shí),若在SELECT子句中出現(xiàn)庫(kù)函數(shù),與之并列的其他項(xiàng)目必須也是庫(kù)函數(shù)或者是GROUPBY的對(duì)象,否則會(huì)出現(xiàn)邏輯錯(cuò)誤第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9118例23:找出藏書(shū)中各個(gè)出版單位的冊(cè)數(shù)、價(jià)值總額,并按總價(jià)排列,總價(jià)相同時(shí)按冊(cè)數(shù)降序排列

SELECT出版單位,“冊(cè)數(shù):”,COUNT(*),“總價(jià):”,SUM(單價(jià))FROM圖書(shū)GROUPBY出版單位ORDERBYSUM(單價(jià)),COUNT(*)DESC;注:SELECT子句中允許有字符串常量(表達(dá)式的簡(jiǎn)單情況)第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9119例24:找出當(dāng)前至少借閱了5本圖書(shū)的讀者及所在單位SELECT姓名,單位FROM讀者WHERE借書(shū)證號(hào)IN(SELECT借書(shū)證號(hào)FROM借閱GROUPBY借書(shū)證號(hào)HAVINGCOUNT(*)>=5);第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9120例25:分別找出借書(shū)人數(shù)超過(guò)10人次的單位及具體人數(shù)SELECT單位,“借書(shū)人數(shù):”,COUNT(借書(shū)證號(hào))FROM讀者,借閱WHERE讀者.借書(shū)證號(hào)=借閱.借書(shū)證號(hào)GROUPBY單位HAVINGCOUNT(借書(shū)證號(hào))>10;注:HAVING子句通常在GROUPBY之后用,作用是限定分組檢索條件HAVING中條件必須包含庫(kù)函數(shù),WHERE子句里不能直接用庫(kù)函數(shù)HAVING子句與WHERE子句不矛盾,先用WHERE限定元組,再用GROUPBY分組,最后用HAVING限定分組的選擇條件第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9121SELECT語(yǔ)句的查詢結(jié)果是元組的集合,所以多個(gè)SELECT語(yǔ)句的結(jié)果可進(jìn)行集合操作。集合操作主要包括并操作UNION、交操作INTERSECT和差操作MINUS。集合并(UNION)集合交(INTERSECT)集合差(EXCEPT)MINUS3.1.5集合運(yùn)算第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9122例26:有一個(gè)校友通訊記錄關(guān)系,包含姓名、職稱和單位三個(gè)屬性,相應(yīng)的數(shù)據(jù)定義與讀者關(guān)系一致。求校友與讀者中具有教授、副教授職稱人員的并集。SELECT姓名,職稱,單位FROM讀者WHERE職稱IN(“教授”,“副教授”)UNIONSELECT姓名,職稱,單位FROM校友WHERE職稱IN(“教授”,“副教授”);注:子查詢目標(biāo)的結(jié)構(gòu)與類型必須互相匹配集合運(yùn)算結(jié)果將去掉重復(fù)元組第三章數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL2024/3/9123SQL語(yǔ)言中的SELECT句型靈活多樣,所表達(dá)的語(yǔ)義可以從簡(jiǎn)單到復(fù)雜。

小節(jié)上述例子可知SELECT語(yǔ)句的一般語(yǔ)法如下:

SELECT查詢目標(biāo)

FROM關(guān)系

溫馨提示

  • 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)論