版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)系統(tǒng)概論 課本知識(shí)點(diǎn)第1章 緒論1.1 數(shù)據(jù)庫(kù)系統(tǒng)概述一、基本概念1.數(shù)據(jù):描述事物的符號(hào)記錄稱(chēng)為數(shù)據(jù)。數(shù)據(jù)的含義稱(chēng)為語(yǔ)義,數(shù)據(jù)與其語(yǔ)義不可分。2.數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并為各種用戶(hù)共享。(1)數(shù)據(jù)庫(kù)利用數(shù)據(jù)模型把數(shù)據(jù)組織起來(lái)。(2)數(shù)據(jù)庫(kù)的基本特點(diǎn):永久存儲(chǔ)、有組織、可共享。3.數(shù)據(jù)庫(kù)管理系統(tǒng)DBMS:數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶(hù)和操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。DBMS和OS一樣是計(jì)算機(jī)的基礎(chǔ)軟件。4.數(shù)據(jù)庫(kù)管理系統(tǒng)的主要功能(1)數(shù)據(jù)定義功能。(
2、數(shù)據(jù)定義語(yǔ)言DDL)(2)數(shù)據(jù)組織、存儲(chǔ)和管理。(3)數(shù)據(jù)操作功能。(數(shù)據(jù)操縱語(yǔ)言DML)(4)數(shù)據(jù)庫(kù)的事務(wù)管理和運(yùn)行管理。(5)數(shù)據(jù)庫(kù)的建立和維護(hù)功能。(6)其他功能。5. 數(shù)據(jù)庫(kù)系統(tǒng):數(shù)據(jù)庫(kù)系統(tǒng)是由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其應(yīng)用開(kāi)發(fā)工具)、應(yīng)用程序和數(shù)據(jù)庫(kù)管理員組成的存儲(chǔ)、管理、處理和維護(hù)數(shù)據(jù)的系統(tǒng)。6.從文件系統(tǒng)到數(shù)據(jù)庫(kù)系統(tǒng)標(biāo)志著數(shù)據(jù)管理技術(shù)的飛躍。7.數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn):(1)數(shù)據(jù)結(jié)構(gòu)化:數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)整體數(shù)據(jù)的結(jié)構(gòu)化,這是數(shù)據(jù)庫(kù)的主要特征之一,也是數(shù)據(jù)庫(kù)系統(tǒng)與文件系統(tǒng)的本質(zhì)區(qū)別?!罢w”結(jié)構(gòu)化是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)不再僅僅針對(duì)某一應(yīng)用,而是面向整個(gè)組織或企業(yè);不僅數(shù)據(jù)內(nèi)部是結(jié)構(gòu)化的,而且
3、整體是結(jié)構(gòu)化的,數(shù)據(jù)之間是具有聯(lián)系的。(2)數(shù)據(jù)的共享性高、冗余度低且易擴(kuò)充數(shù)據(jù)共享可以大大減少數(shù)據(jù)冗余,節(jié)約存儲(chǔ)空間。數(shù)據(jù)共享還能夠避免數(shù)據(jù)之間的不相容性和不一致性。數(shù)據(jù)面向整個(gè)系統(tǒng),是有結(jié)構(gòu)的數(shù)據(jù),使得數(shù)據(jù)庫(kù)系統(tǒng)彈性大,易于擴(kuò)充。(3)數(shù)據(jù)獨(dú)立性:包括物理獨(dú)立性、邏輯獨(dú)立性。物理獨(dú)立性是指用戶(hù)的應(yīng)用程序與數(shù)據(jù)庫(kù)中數(shù)據(jù)的物理存儲(chǔ)是相互獨(dú)立的。邏輯獨(dú)立性是指用戶(hù)的應(yīng)用程序與數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)是相互獨(dú)立的。數(shù)據(jù)庫(kù)的獨(dú)立性由數(shù)據(jù)庫(kù)管理系統(tǒng)提供的二級(jí)映象功能來(lái)保證。(4)數(shù)據(jù)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理和控制。數(shù)據(jù)庫(kù)提供以下數(shù)據(jù)控制功能:數(shù)據(jù)的安全性保護(hù)、數(shù)據(jù)的完整性檢查、并發(fā)控制、數(shù)據(jù)庫(kù)恢復(fù)。數(shù)據(jù)的安全
4、保護(hù)是指保護(hù)數(shù)據(jù)以防止不合法使用造成的數(shù)據(jù)泄密和破壞;數(shù)據(jù)的完整性是指數(shù)據(jù)的正確性、有效性和相容性。8.綜上所述,數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)有組織、大量、共享的數(shù)據(jù)集合。它可以供各種用戶(hù)共享,具有最小冗余度和較高的數(shù)據(jù)獨(dú)立性。數(shù)據(jù)庫(kù)管理系統(tǒng)在數(shù)據(jù)庫(kù)建立、運(yùn)用和維護(hù)時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一控制,以保證數(shù)據(jù)的完整性和安全性,并在多用戶(hù)同時(shí)使用數(shù)據(jù)庫(kù)時(shí)進(jìn)行并發(fā)控制,在發(fā)生故障后對(duì)數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)。1.2 數(shù)據(jù)模型1.數(shù)據(jù)模型是對(duì)現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象,現(xiàn)有的數(shù)據(jù)庫(kù)系統(tǒng)軍事基于某種數(shù)據(jù)模型的。數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)的核心和基礎(chǔ)。2.兩類(lèi)數(shù)據(jù)模型:根據(jù)模型應(yīng)用的不同目的,將數(shù)據(jù)模型分為兩類(lèi)(兩個(gè)層次):第一類(lèi)是概
5、念模型,第二類(lèi)是邏輯模型和物理模型。概念模型:也稱(chēng)信息模型。它是按用戶(hù)的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫(kù)設(shè)計(jì)。邏輯模型:它是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模,主要用于數(shù)據(jù)庫(kù)管理系統(tǒng)的實(shí)現(xiàn)。物理模型:是面向計(jì)算機(jī)系統(tǒng)的,數(shù)據(jù)在計(jì)算機(jī)系統(tǒng)內(nèi)部的表示方法和存取方法。它是對(duì)數(shù)據(jù)最底層的抽象,3.首先將現(xiàn)實(shí)世界中抽象為信息世界,然后將信息世界轉(zhuǎn)換成機(jī)器世界。4.概念模型:概念模型用于信息世界的建模,是現(xiàn)實(shí)世界到信息世界的第一層抽象,是數(shù)據(jù)庫(kù)設(shè)計(jì)人員進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的有力工具,也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員和用戶(hù)之間進(jìn)行交流的語(yǔ)言。5.信息世界的基本概念:實(shí)體、屬性、碼、實(shí)體型、實(shí)體集、聯(lián)系(1)實(shí)體:客觀存在并可相
6、互區(qū)別的事物稱(chēng)為實(shí)體。(2)屬性:實(shí)體所具有的某一特性稱(chēng)為屬性。(3)碼:唯一標(biāo)識(shí)實(shí)體的屬性集稱(chēng)為碼。(4)實(shí)體型:用實(shí)體名及其屬性名集合來(lái)抽象和刻畫(huà)同類(lèi)實(shí)體,稱(chēng)為實(shí)體型。(5)實(shí)體集:同一類(lèi)型尸體的集合稱(chēng)為實(shí)體集。(6)聯(lián)系:分為內(nèi)部聯(lián)系和之間的聯(lián)系。實(shí)體內(nèi)部的聯(lián)系是指組成實(shí)體的各屬性之間的聯(lián)系;實(shí)體之間的聯(lián)系是指不同實(shí)體集之間的聯(lián)系,有一對(duì)一、一對(duì)多、多對(duì)多等多種類(lèi)型。6.實(shí)體-聯(lián)系方法是最常用的概念模型的表示方法,由P.P.S.chen與1976年提出。該方法用E-R圖來(lái)描述現(xiàn)實(shí)世界的概念。7.數(shù)據(jù)模型的組成要素“數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)的完整性約束條件三部分組成。(1)數(shù)
7、據(jù)結(jié)構(gòu)描述數(shù)據(jù)庫(kù)的組成對(duì)象以及對(duì)象之間的聯(lián)系;(2)數(shù)據(jù)操作是指數(shù)據(jù)庫(kù)中各種對(duì)象的實(shí)例允許執(zhí)行的操作的集合,包括操作及其有關(guān)的操作規(guī)則;(3)數(shù)據(jù)的完整性約束條件是一組完整性約束規(guī)則。數(shù)據(jù)結(jié)構(gòu)是刻畫(huà)模型性質(zhì)最基本的方面8.常用的數(shù)據(jù)模型有:層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο髷?shù)據(jù)模型、對(duì)象關(guān)系數(shù)據(jù)模型、半結(jié)構(gòu)化數(shù)據(jù)模型,其中層次模型和網(wǎng)狀模型統(tǒng)稱(chēng)為格式化模型。9.層次模型:滿(mǎn)足下面兩個(gè)條件的基本層次聯(lián)系的集合為層次模型:(1)有且只有一個(gè)結(jié)點(diǎn)沒(méi)有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱(chēng)為根結(jié)點(diǎn);(2)根以外的其他節(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。10.層次模型的實(shí)例:行政機(jī)構(gòu)系統(tǒng)、行政區(qū)域系統(tǒng)、學(xué)校層次系統(tǒng)。11.層次
8、模型像一棵道理的樹(shù),結(jié)點(diǎn)雙親是唯一的。12.層次模型的優(yōu)缺點(diǎn):優(yōu)點(diǎn):數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單清晰、查詢(xún)效率高、提供了良好的完整性支持。缺點(diǎn):(1)現(xiàn)實(shí)世界中的非層次聯(lián)系不適合用層次模型表示(2)用戶(hù)必須清楚數(shù)據(jù)庫(kù)的層次結(jié)構(gòu),對(duì)用戶(hù)要求比較高。13.網(wǎng)狀模型:滿(mǎn)足以下兩個(gè)條件的基本層次聯(lián)系集合稱(chēng)為網(wǎng)狀模型:(1)允許一個(gè)以上的結(jié)點(diǎn)無(wú)雙親。(2)一個(gè)結(jié)點(diǎn)可以有多余一個(gè)的雙親。14.層次模型中子女結(jié)點(diǎn)與雙親結(jié)點(diǎn)的聯(lián)系是唯一的,而在網(wǎng)狀模型中這種聯(lián)系可以不唯一。15.網(wǎng)狀數(shù)據(jù)庫(kù)的優(yōu)缺點(diǎn):優(yōu)點(diǎn):能夠更為直觀地描述現(xiàn)實(shí)世界,性能良好、效率高。缺點(diǎn):DDL、DML比較復(fù)雜,要求用戶(hù)掌握數(shù)據(jù)庫(kù)結(jié)構(gòu)和存取路徑,不容易使用。
9、16.關(guān)系模型由E.F.Codd與1970提出,他因此于1981年獲得ACM圖靈獎(jiǎng)。17.關(guān)系模型與以往的模型不同,它是建立在嚴(yán)格的數(shù)學(xué)概念基礎(chǔ)上。18.關(guān)系模型的基本概念:(1)關(guān)系:一個(gè)關(guān)系對(duì)應(yīng)一張表(2)元組:表中的一行稱(chēng)為一個(gè)元組(3)屬性:表中的一列稱(chēng)為一個(gè)屬性(4)碼:可以唯一確定一個(gè)元組的屬性組(5)域:域是一組具有相同數(shù)據(jù)類(lèi)型的值的集合(6)分量:元組中的一個(gè)屬性值(7)關(guān)系模式:即對(duì)關(guān)系的描述。一般表示為:關(guān)系名(屬性1,屬性2,屬性n)19.關(guān)系模型要求關(guān)系必須是規(guī)范化的,關(guān)系的每個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng)。20.關(guān)系模型中操作對(duì)象和操作結(jié)果都是關(guān)系;關(guān)系模型的存取路徑
10、對(duì)用戶(hù)隱蔽,提高了數(shù)據(jù)獨(dú)立性,提高了用戶(hù)生產(chǎn)率。21.關(guān)系數(shù)據(jù)流的優(yōu)缺點(diǎn):優(yōu)點(diǎn):具有嚴(yán)格的數(shù)學(xué)基礎(chǔ),概念單一,存取路徑對(duì)用戶(hù)透明,提高了數(shù)據(jù)獨(dú)立性和安全保密性,也提高了應(yīng)用程序員和數(shù)據(jù)庫(kù)開(kāi)發(fā)程序員的效率。缺點(diǎn):存取路徑透明,降低了數(shù)據(jù)庫(kù)的查詢(xún)效率,需要對(duì)查詢(xún)進(jìn)行優(yōu)化。1.3 數(shù)據(jù)庫(kù)系統(tǒng)的結(jié)構(gòu)1.數(shù)據(jù)庫(kù)有“型”和“值”的概念,模式是相對(duì)穩(wěn)定的,而實(shí)例是相對(duì)變動(dòng)的。2.數(shù)據(jù)庫(kù)的三級(jí)模式:模式、外模式、內(nèi)模式3.模式:模式也稱(chēng)邏輯模式, 是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述, 是所有用戶(hù)的公共數(shù)據(jù)視圖。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)模式。4.數(shù)據(jù)庫(kù)提供模式數(shù)據(jù)定義語(yǔ)言(模式DDL)來(lái)嚴(yán)格定義模式。5.外模式
11、:也稱(chēng)子模式或用戶(hù)模式。它是數(shù)據(jù)庫(kù)用戶(hù)能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述, 是數(shù)據(jù)庫(kù)用戶(hù)的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。6.外模式通常是模式的子集,一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式,外模式是保證數(shù)據(jù)庫(kù)安全性的一個(gè)有力措施。7.數(shù)據(jù)庫(kù)管理系統(tǒng)提供外模式數(shù)據(jù)定義語(yǔ)言(模式DDL)來(lái)嚴(yán)格定義外模式。8.內(nèi)模式:內(nèi)模式也稱(chēng)存儲(chǔ)模式。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的組織方式。9.數(shù)據(jù)庫(kù)的二層映象:外模式/模式映象、模式/內(nèi)模式映象。正是這兩層映象保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能具有較高的邏輯獨(dú)立性和物理獨(dú)立性。(1)外模式/模式映象保證邏輯獨(dú)
12、立性:當(dāng)模式改變時(shí),由數(shù)據(jù)庫(kù)管理員對(duì)各個(gè)外模式/模式的映象作相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫(xiě)的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡(jiǎn)稱(chēng)數(shù)據(jù)的邏輯獨(dú)立性。(2)模式/內(nèi)模式映象保證物理獨(dú)立性:當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),由數(shù)據(jù)庫(kù)管理員對(duì)模式/內(nèi)模式映象作相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨(dú)立性。1.4 數(shù)據(jù)庫(kù)系統(tǒng)的組成1.數(shù)據(jù)庫(kù)系統(tǒng)的組成:(1)硬件平臺(tái)及數(shù)據(jù)庫(kù)(內(nèi)存、硬盤(pán)、通道)(2)軟件(數(shù)據(jù)庫(kù)管理系統(tǒng)、操作系統(tǒng)、編譯系統(tǒng)應(yīng)用開(kāi)發(fā)工具)(3)人員(DBA、系統(tǒng)分析員和數(shù)據(jù)庫(kù)設(shè)計(jì)人員、應(yīng)用程序員、用戶(hù))【課
13、后題補(bǔ)充】1.數(shù)據(jù)庫(kù)技術(shù)管理數(shù)據(jù)的技術(shù),數(shù)據(jù)是數(shù)據(jù)庫(kù)管理的基本對(duì)象。2.常見(jiàn)DBMS舉例:IBM的DB2(關(guān)系型)和IMS(層次型)Oracle的Oracle、微軟的SQL Server國(guó)產(chǎn):人大金倉(cāng):金倉(cāng)數(shù)據(jù)庫(kù)管理系統(tǒng)、武漢達(dá)夢(mèng)公司:達(dá)夢(mèng)、神通公司:Oscar3.文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的聯(lián)系與區(qū)別:聯(lián)系: DBMS是在操作系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的,數(shù)據(jù)庫(kù)中數(shù)據(jù)的組織與存儲(chǔ)是通過(guò)操作系統(tǒng)中的文件系統(tǒng)來(lái)實(shí)現(xiàn)的。數(shù)據(jù)庫(kù)實(shí)現(xiàn)的基礎(chǔ)是文件,對(duì)數(shù)據(jù)庫(kù)的任何操作最終要轉(zhuǎn)化成對(duì)文件的操作。區(qū)別:(1)文件系統(tǒng)是操作系統(tǒng)的重要組成部分,DBMS是獨(dú)立與操作系統(tǒng)的軟件。(2)文件系統(tǒng)的數(shù)據(jù)是面向某一應(yīng)用的,共享差,冗余
14、大,獨(dú)立性差,文件的記錄是由結(jié)構(gòu)的,但整體是無(wú)結(jié)構(gòu)的;數(shù)據(jù)庫(kù)的數(shù)據(jù)是面向整個(gè)組織或企業(yè),數(shù)據(jù)的共享性高、榮譽(yù)小,具有高度的物理獨(dú)立性和邏輯獨(dú)立性,數(shù)據(jù)庫(kù)中的數(shù)據(jù)用數(shù)據(jù)模型組織和描述,有數(shù)據(jù)庫(kù)管理系統(tǒng)提供數(shù)據(jù)安全性、完整性、并發(fā)控制和恢復(fù)能力。4.獨(dú)立性是指相互不依賴(lài)。第2章 關(guān)系數(shù)據(jù)庫(kù)2.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義1.關(guān)系數(shù)據(jù)庫(kù)的提出:論文“A Relational Model of Data for Shared Data Banks”2.關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)是關(guān)系,即一張二維表。3.基本概念(1)域:一組具有相同數(shù)據(jù)類(lèi)型的值的集合。 基數(shù):一個(gè)域允許的不同取值個(gè)數(shù)稱(chēng)為這個(gè)域的基數(shù)。(2)笛
15、卡爾積:是域上的一種集合運(yùn)算D1×D2××Dn= d1,d2,dn diDi,i=1,2,n(3)關(guān)系:在域上的笛卡爾積的子集稱(chēng)為關(guān)系。(4)元組:關(guān)系中的每個(gè)元素稱(chēng)為元組。 表的每一行對(duì)應(yīng)一個(gè)元組,每一列對(duì)應(yīng)一個(gè)域。表的每一列起一個(gè)名字,稱(chēng)為屬性。(5)候選碼:若某一屬性組的值能夠唯一標(biāo)識(shí)一個(gè)元組,而其子集不能,則稱(chēng)該屬性組為候選碼。(6)若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼。(7)候選碼的諸屬性稱(chēng)為主屬性,不包含任何候選碼中的屬性稱(chēng)為非主屬性或非碼屬性。(8)全碼:關(guān)系模式的所有屬性是這個(gè)關(guān)系模式的候選碼,稱(chēng)為全碼。4.關(guān)系三種類(lèi)型:基本關(guān)系(基本表)
16、、查詢(xún)表、視圖表5.基本關(guān)系的性質(zhì)(6條)(1)列是同質(zhì)的(2)不同的列可出自同一個(gè)域(3)列的順序無(wú)所謂(4)任意兩個(gè)元組的候選碼不能取相同的值(5)行的順序無(wú)所謂(6)分量必須取原子值6.關(guān)系模型要求關(guān)系必須是規(guī)范化的,規(guī)范化的關(guān)系簡(jiǎn)稱(chēng)范式。其中組基本的一條就是:關(guān)系的每一個(gè)分量必須是不可分的數(shù)據(jù)項(xiàng)。7.關(guān)系模式:關(guān)系的描述稱(chēng)為關(guān)系模式。它可以表示為R(U,D,DOM,F).其中R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為U中樞性所來(lái)來(lái)自的域,DOM為屬性向域的映象集合,F(xiàn)為屬性間數(shù)據(jù)的依賴(lài)關(guān)系集合。8.關(guān)系數(shù)據(jù)庫(kù)的型也稱(chēng)關(guān)系數(shù)據(jù)庫(kù)模式,是對(duì)關(guān)系數(shù)據(jù)庫(kù)的描述。關(guān)系數(shù)據(jù)庫(kù)的值是這些關(guān)系模式在
17、某一時(shí)刻對(duì)于的關(guān)系的集合,通常就成為數(shù)據(jù)關(guān)系數(shù)據(jù)庫(kù)。9.關(guān)系模式和關(guān)系:(1)關(guān)系是關(guān)系模式的在某一時(shí)刻的狀態(tài)或內(nèi)容。關(guān)系模式是型,關(guān)系是值, 是關(guān)系模式的實(shí)例。(2)關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動(dòng)態(tài)的,隨時(shí)間不斷變化的。2.2 關(guān)系操作1.基本的關(guān)系操作:選擇、投影、并、差、笛卡爾積(5種)2.關(guān)系操作的對(duì)象和結(jié)果都是集合3.早期的關(guān)系操作能力通常用代數(shù)方式或邏輯方式來(lái)表示,分別稱(chēng)為關(guān)系代數(shù)和關(guān)系演算。關(guān)系代數(shù)用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢(xún)要求,關(guān)系演算則用謂詞來(lái)表達(dá)查詢(xún)要求。關(guān)系演算又可按謂詞邊緣的基本對(duì)象是元組變量還是域變量分為元組關(guān)系演算和域關(guān)系演算。關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算
18、三種語(yǔ)言在表達(dá)能力上等價(jià)的,都具有完備的表達(dá)能力。4.介于關(guān)系代數(shù)和關(guān)系演算之間的關(guān)系數(shù)據(jù)語(yǔ)言是結(jié)構(gòu)化查詢(xún)語(yǔ)言,他是集查詢(xún)、數(shù)據(jù)定義語(yǔ)言、數(shù)據(jù)操縱語(yǔ)言和數(shù)據(jù)控制語(yǔ)言于一體的關(guān)系數(shù)據(jù)語(yǔ)言。2.3 關(guān)系的完整性1.關(guān)系模型中有三類(lèi)完整性約束:實(shí)體完整性、參照完整性、用戶(hù)定義的完整性,其中實(shí)體完整性和操作完整性是關(guān)系模型必須滿(mǎn)足的約束條件,被稱(chēng)是關(guān)系的兩個(gè)不變性。2.實(shí)體完整性規(guī)則:“主屬性不空”若屬性(一個(gè)或一組)A是基本關(guān)系R的主屬性,則A不能取空值(null)??罩凳侵浮安恢馈?、“不存在”、“無(wú)意義”的值3.參照完整性: “參照屬性有效”(1)外碼:設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)
19、系R的碼,Ks 是基本關(guān)系S的主碼。如果F與Ks相對(duì)應(yīng),則稱(chēng)F是R的外碼,并稱(chēng)基本關(guān)系R為參照關(guān)系?;娟P(guān)系S為被參照關(guān)系或目標(biāo)關(guān)系。(2)參照完整性規(guī)則:或者取空值或者等于S中某個(gè)元組的主碼值。注意:(1)外碼為被參照關(guān)系的主碼(2)若外碼同時(shí)為參照關(guān)系的主碼,則該外碼不能為空。4.用戶(hù)定義的完整性:反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿(mǎn)足的語(yǔ)義要求。5.任何關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都用支持實(shí)體完整性和參照完整性。2.4 關(guān)系代數(shù)1.關(guān)系代數(shù)是一種抽象的查詢(xún)語(yǔ)言,它用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢(xún)。2.運(yùn)算對(duì)象、運(yùn)算符、運(yùn)算結(jié)果是運(yùn)算的三大要素。3.關(guān)系代數(shù)的運(yùn)算按運(yùn)算法的不同可分為傳統(tǒng)的集合運(yùn)算和專(zhuān)門(mén)的關(guān)系運(yùn)算
20、兩類(lèi)。4.傳統(tǒng)的集合運(yùn)算時(shí)二目運(yùn)算,包括并、差、交、笛卡爾積。5.專(zhuān)門(mén)的關(guān)系運(yùn)算包括選擇、投影、連接、除運(yùn)算等 (4個(gè))6.引入記號(hào)(1)tR:t是關(guān)系R的一個(gè)元組,tAi:元組t中的Ai分量(2)A表示一個(gè)屬性組,A表示去掉A中的屬性后剩下的屬性組。(3)若R為n目關(guān)系,S為m目關(guān)系,trR , tsS, trts稱(chēng)為元組的連接(串接)。(4)像集:若給定關(guān)系RX,Z,X和Z為屬性組。當(dāng)tX=x時(shí),x在R中的像集定義為:Zx=tX | tR, tX=x7.【選擇】又稱(chēng)為限制,它在關(guān)系中選擇滿(mǎn)足給定條件的諸元組,記作:FR=t|tR Ft='真' F表示選擇條件,它是一個(gè)邏輯表
21、達(dá)式。 選擇運(yùn)算實(shí)際上是從關(guān)系中選取使邏輯表達(dá)式為真的元組,這是從行的角度進(jìn)行的運(yùn)算。8.【投影】關(guān)系上的投影是從關(guān)系中選擇出若干屬性組成新的關(guān)系。記作:AA=tA|tR其中A為R中的屬性。 投影操作時(shí)從列的角度進(jìn)行的運(yùn)算。9.【連接】也稱(chēng)連接,它是從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿(mǎn)足一定條件的元組。記作:RAB= trts|trR tsStrA tsB 從行列角度進(jìn)行運(yùn)算。10.等值連接:當(dāng) 為“=”的連接運(yùn)算稱(chēng)為等值連接,它是從廣義笛卡爾積中選取屬性值相等的那些元組。11.等值連接:是自然連接時(shí)一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是同名的屬性組,并且在結(jié)果中把重復(fù)的屬性列
22、去掉。 等值連接是同時(shí)從行和列的角度進(jìn)行運(yùn)算。12.懸浮元組:自然連接時(shí)被舍棄的元組稱(chēng)為懸浮元組。13.如果把懸浮元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值,那么這種連接就叫做外連接;如果只保留左邊關(guān)系中的懸浮元組就叫做左外連接;如果只保留右邊關(guān)系中的懸浮元組就叫做右外連接。14.【除運(yùn)算】設(shè)關(guān)系 R 除以關(guān)系 S 的結(jié)果為關(guān)系 T ,則 T 包含所有在 R 但不在 S 中的屬性及其值,且 T 的元組與 S 的元組的所有組合都在 R 中。R÷S=trX|trRYSYx 除操作是同時(shí)從行和列的角度進(jìn)行的運(yùn)算。15.關(guān)系代數(shù)中,這些運(yùn)算經(jīng)有限次復(fù)合后形成的表達(dá)式稱(chēng)為關(guān)系代數(shù)表達(dá)式。16
23、.8種關(guān)系運(yùn)算中,并、差、笛卡爾積、投影和選擇5種運(yùn)算為基本運(yùn)算;其他三種運(yùn)算即交、連接和除,均可用這5種基本運(yùn)算來(lái)表達(dá)。第3章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL結(jié)構(gòu)化查詢(xún)語(yǔ)言是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,也是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。其功能不僅僅是查詢(xún),而且包括數(shù)據(jù)庫(kù)模式的創(chuàng)建、數(shù)據(jù)庫(kù)數(shù)據(jù)的插入與修改、數(shù)據(jù)庫(kù)安全性完整性定義與控制等一系列功能。3.1 SQL概述1. SQL是1974年提出,最初叫Sequel,并在IBM公司研制的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)圓形SystemR實(shí)現(xiàn)。2. 目前,沒(méi)有一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)能夠支持SQL標(biāo)準(zhǔn)的所有概念和特性。同時(shí),許多軟件廠(chǎng)商對(duì)SQL基本命令集還進(jìn)行了不同程度的
24、擴(kuò)充和修改,又可以支持標(biāo)準(zhǔn)以外的一些功能特性。3. SQL集數(shù)據(jù)查詢(xún)、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制功能與一體,其主要特點(diǎn)包括:(1)綜合統(tǒng)一(2)高度非過(guò)程化(3)面向集合的操作方式(4)以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式(5)語(yǔ)言簡(jiǎn)潔、易學(xué)易用4. 支持SQL的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)同樣支持關(guān)系數(shù)據(jù)庫(kù)三級(jí)模式結(jié)構(gòu):(1)外模式包括若干視圖和部分基本表(2)數(shù)據(jù)庫(kù)模式包括若干基本表(3)內(nèi)模式包括若干存儲(chǔ)文件5. 基本表和視圖一樣都是關(guān)系。3.2 學(xué)生-課程數(shù)據(jù)庫(kù)3.3 數(shù)據(jù)定義1. 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)支持三級(jí)模式結(jié)構(gòu),其模式、外模式和內(nèi)模式中的基本對(duì)象有模式、表、視圖和索引等。因此SQL的數(shù)據(jù)定義功能包括
25、模式定義、表定義、視圖和索引的定義。2. SQL標(biāo)準(zhǔn)不提供修改模式定義和修改視圖定義的操作,要想修改只能刪除后重建。3. SQL標(biāo)準(zhǔn)也沒(méi)有提供索相關(guān)語(yǔ)句。4. 現(xiàn)代的數(shù)據(jù)庫(kù)管理系統(tǒng)提供了一個(gè)層次化的數(shù)據(jù)對(duì)象命名機(jī)制:一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)的實(shí)例中可以建立多個(gè)數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)中可以建立多個(gè)模式,一個(gè)模式下通常包括多個(gè)表、視圖和索引等數(shù)據(jù)庫(kù)對(duì)象。5. 為用戶(hù)ZHANG 創(chuàng)建一個(gè)模式TEST,并且在其中定義一個(gè)表TAB1CREATE SCHEMA TEST AUTHORIZATION ZHANGCREATE TABLE TAB1(COL1 SMALL,COL2 INT,COL3 CHAR(20)COL
26、4 NUMBER(10,3),COL5 DECIMAL(5,2);6. 刪除模式ZHANG:DROP SCHEMA ZHANG CASCASE;同時(shí)模式中定義的表TAB1也被刪除了。7. 創(chuàng)建里一個(gè)模式就建立了一個(gè)數(shù)據(jù)庫(kù)的命名空間,一個(gè)框架。在這個(gè)空間中首先要定義的是該模式包含的數(shù)據(jù)庫(kù)基本表。8. 建立一個(gè)學(xué)生表:CRAETE TABLE Sudent(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),);9. 在SQL中域的概念用數(shù)據(jù)類(lèi)型來(lái)實(shí)現(xiàn)。NUMBER、DECI
27、MAL、REAL、DOUBLE PRECISON、FLOAT(n)、BOOLEAN、DATE、TIME、TIMESTAMP、TINTERVAL10.每個(gè)基本表都屬于某一個(gè)模式,一個(gè)模式包含多個(gè)基本表,當(dāng)定義基本表時(shí)一般有三種方法定義它所屬的模式:(1)在表名明顯地給出模式名(2)在創(chuàng)建模式語(yǔ)句中同時(shí)創(chuàng)建表(3)設(shè)置所屬的模式,這樣在創(chuàng)建表時(shí)表名中不必給出模式名11. 當(dāng)用創(chuàng)建基本表(其他數(shù)據(jù)對(duì)象也一樣)時(shí)若沒(méi)有指定模式,系統(tǒng)根據(jù)搜索路徑來(lái)確定該對(duì)象所屬的模式。12. 搜索路徑包含一組模式列表,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)會(huì)使用模式列表中第一個(gè)存在的模式作為數(shù)據(jù)庫(kù)對(duì)象的模式名,若搜索路徑中的模式名都不存在
28、,系統(tǒng)將給出錯(cuò)誤。13.修改基本表(1)ADD 子句用于增加新列、新的列級(jí)完整性約束條件和新的表級(jí)完整性約束條件。(2)DROP COLUMN子句用于刪除表中的列,如果指定了CASCADE短語(yǔ),則自動(dòng)刪除引用了該列的其他對(duì)象,比如視圖;如果指定了RESTRICT短語(yǔ),則如果該列被其他對(duì)象引用,DBMS將拒絕刪除該列。(3)DROP CONSTRAINT 子句用于刪除指定的完整性約束條件。(4)ALTER COLUMN子句用于修改原有的列定義,包含修改列名和數(shù)據(jù)類(lèi)型。14. 實(shí)例:(1)增加入學(xué)時(shí)間一列,時(shí)間為日期型ALTER TABLE Sudent ADD S_entrance DATE;(
29、2)將年齡的數(shù)據(jù)類(lèi)型由字符型改為整數(shù)ALTER TABLE Sudent ALTER COLUMN Sage INT;(3)增加課程名稱(chēng)必須取唯一值的約束條件ALTER TABLE Course ADD UNIQUE(Cname);15. 刪除基本表:DROP TABLE Suden CASCADE;16. 基本表定義一旦刪除,不僅表中的數(shù)據(jù)和此表的定義將被刪除,而且此表上建立的索引、觸發(fā)器等對(duì)象一般也都將刪除。有的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)還會(huì)同時(shí)刪除在此表上建立的視圖。如果欲刪除的的基本表被其他基本表所引用,則這些表也可能被刪除。17. 數(shù)據(jù)庫(kù)索引有多種類(lèi)型,常見(jiàn)的索引包括順序文件上的索引、B+索
30、引、散列索引、位圖索引等。(1)順序文件上的索引是針對(duì)按指定屬性值升序和降序存儲(chǔ)的關(guān)系,在該屬性上建立一個(gè)順訊索引文件,索引文件由屬性值和相應(yīng)的元組指針。(2)B+樹(shù)索引是將索引屬性組織稱(chēng)B+樹(shù)形式,B+的葉結(jié)點(diǎn)為屬性值和相應(yīng)的元組指針。B+樹(shù)索引具有動(dòng)態(tài)平衡的優(yōu)點(diǎn)。(3)散列索引是建立若干個(gè)桶,將索引屬性按照其散列函數(shù)值映射到相應(yīng)的桶中,桶中存放索引屬性值和相應(yīng)的元組指針。散列索引具有查找速度快的特點(diǎn)。(4)位圖索引是用位向量記錄索引屬性中可能出現(xiàn)的值,每個(gè)位向量對(duì)應(yīng)一個(gè)可能值。18. 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)在執(zhí)行查詢(xún)時(shí)會(huì)自動(dòng)選擇合適的索引作為存取路徑,用戶(hù)不必也不能顯示地選擇索引。索引是關(guān)系數(shù)
31、據(jù)庫(kù)管理系統(tǒng)的內(nèi)部實(shí)現(xiàn)技術(shù),屬于內(nèi)模式的范疇。19. 索引關(guān)鍵字: UNIQUE 表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄。CLUSTER表示要建立的索引是聚簇索引。20. 建立索引:(1)CREATE UNIQUE INDEX Stusno ON Student(Sno);(2)CREATE UNIQUE INDEX Stusno ON Course(Cno);(3)CREATE UNIQUE INDEX Stusno ON SCno ON SC(Sno ASC,Cno DEC);21 刪除索引:DROP INDEX Stusname;刪除索引時(shí),系統(tǒng)同時(shí)從數(shù)據(jù)字典刪去有關(guān)該索引的描述。
32、3.4 數(shù)據(jù)查詢(xún)1. 數(shù)據(jù)查詢(xún)是數(shù)據(jù)庫(kù)的核心操作。2. SELECT語(yǔ)句的含義:根據(jù)WHERE子句的條件表達(dá)式從FROM子句指定的基本表、視圖或派生表中找出滿(mǎn)足條件的元組,再按SELECT子句中的目標(biāo)列表達(dá)式選出元組中的屬性值形成結(jié)果表。(1)如果有GROUP BY 子句,則將結(jié)果按列名的值進(jìn)行分組,該屬性列值相等的元組為一個(gè)組,通常會(huì)在每組中作用聚集函數(shù)。如果GROUP BY子句帶HAVING短語(yǔ),則只有滿(mǎn)足指定條件的組才予以輸出。(2)如果有ORDER BY 子句,則結(jié)果還要按列質(zhì)的值升序或降序排列。【單表查詢(xún)】一、選擇表中的若干列1. 選擇表中的全部或部分類(lèi)即關(guān)系代數(shù)的投影運(yùn)算(1) 查
33、詢(xún)指定列:SELECT Sname,Sno,Sdept FROM Student;(2)查詢(xún)?nèi)苛蠸ELECT * FROM Student;(3)查詢(xún)經(jīng)計(jì)算的值SELECT Sname,2014-age FROM Student;目標(biāo)表達(dá)式不僅可以是算術(shù)表達(dá)式,還可以是字符串常量、函數(shù)等。SELECT Sname,Year of Birth:,2014-Sage,LOWER(Sdept) FROM Student;SELECT Sname NAME,Year of Birth: BIRTH,2014-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT FROM Stu
34、dent;二、選擇表中的若干元組1. 消除重復(fù)的行:兩個(gè)不完全相同的元組在投影到指定的某些列上后,可能會(huì)變成相同的行,可以用DISTINCT消除它們。SELECT DISTINCT Sno FROM SC;2. 查詢(xún)滿(mǎn)足條件的元組:(1)比較大?。?,>,<,>=,<=,!=<>,!>,!<SELECT Sname,Sage FROM Student WHERE Sage<20;SELECT DISTINCT Sno FROM SC WHERE Grade<60;(2)確定范圍:謂詞BETWEENAND和NOT BETWEENAND可
35、以用來(lái)查找屬性值在(或不在)指定范圍內(nèi)的元組,其中BETWEEN后是范圍的下限(即低值),AND后是范圍的上限(即高值)。SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 23 AND 30;SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 23 AND 30;(3)確定集合:謂詞IN可以用來(lái)查找屬性值屬于指定集合的元組SELECT Sname,Ssex FROM Student WHERE Sdept IN(CS,MA,IS);SELECT Sname,Ssex
36、 FROM Student WHERE Sdept NOT IN(CS,MA,IS);注:此處IN 實(shí)際上是多個(gè)OR運(yùn)算符的縮寫(xiě)。(4)字符匹配:謂詞LIKE可以用來(lái)進(jìn)行字符串的匹配通配符:%:代表任意長(zhǎng)度(可以為0)的字符串。_ 代表任意單個(gè)字符。數(shù)據(jù)庫(kù)字符集為ASCII時(shí)一個(gè)漢字需要兩個(gè)_;當(dāng)字符集為GBK時(shí)只需要一個(gè)_.SELECT * FROM Student WHERE Sno LIKER 201215121;SELECT * FROM Student WHERE Sno = 201215121;SELECT Sname, Sno,Ssex FROM Student WHERE Sn
37、ame LIKER劉%;SELECT Sname FROM Student WHERE Sname LIKER歐陽(yáng)_;SELECT Sname FROM Student WHERE Sname LIKER _陽(yáng)%;SELECT Sname FROM Student WHERE Sname NOT LIKER劉%;如果用戶(hù)要查詢(xún)的字符串本身就含有通配符 % 或 _ ,這是就要用ESCASPE<換碼字符>短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義。SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_DesignESCAPE;ESCAPE表示為換碼字符,這樣匹
38、配串中緊跟在后面的字符“_”不再具有通配符的含義,轉(zhuǎn)義為普通的“_”字符。SELECT * FROM Student WHERE Cname LIKE DB_%i_ESCAPE;(5)涉及空值的查詢(xún)SELECT Sno,Cno FROM SC WHERE Grade IS NULL;SELECT Sno,Cno FROM SC WHERE Grade NOT NULL;注意:此處IS不能用 = 替代。(6)多重條件查詢(xún)邏輯運(yùn)算符AND和OR可用來(lái)連接多個(gè)查詢(xún)條件。AND的優(yōu)先級(jí)高于OR,單用戶(hù)可以用括號(hào)改變優(yōu)先級(jí)。SELECT Sname FROM Student WHERE Sdept=CS
39、 AND Sage<20;SELECT Sname,Ssex FROM Student WHERE Sdept=CSOR Sdept=MAOR Sdept=IS;3. ORER BY 子句(1)用戶(hù)可以用ORER BY子句對(duì)查詢(xún)結(jié)果按照或多個(gè)屬性列的升序(ASC)或?qū)⑿颍―ESC)排列,默認(rèn)值為升序。(2)對(duì)于空值,排序時(shí)顯示的次序由具體系統(tǒng)實(shí)現(xiàn)決定,各個(gè)系統(tǒng)的實(shí)現(xiàn)可以不同,只要保持一致就行。4. 聚集函數(shù)(1)COUNT(*) 統(tǒng)計(jì)元組個(gè)數(shù)(2)COUNT(DISTINCT|ALL <列名>) 統(tǒng)計(jì)一列中值的個(gè)數(shù)(3)SUM(DISTINCT|ALL <列名>)
40、計(jì)算一列值的總和(此列必須是數(shù)值型)(4)AVG(DISTINCT|ALL <列名>)計(jì)算一列值的平均值(此列必須是數(shù)值型)(5)MAX(DISTINCT|ALL <列名>)求一列值中的最大值(6)MIN(DISTINCT|ALL <列名>)求一列值中的最小值示例:SELECT COUNT(*) FROM Student;SELECT COUNT(DISTINCT Sno) FROM SC;SELECT AVG(Grade) FROM SC WHERE Cno=1;SELECT MAX(Grade) FROM SC WHERE Cno=1;SELECT SU
41、M(Credit) FROM SC,Course WHERE Sno=201215012 AND SC.Cno=Course.Cno;當(dāng)聚集函數(shù)遇到控制時(shí),除COUNT(*),都跳過(guò)空值而只處理非空值。注:WHERE 子句中是不能用聚集函數(shù)作為條件表達(dá)式的。聚集函數(shù)只能用于SELECT 子句和GROUP BY中的HAVING子句。5. GROUP BY子句(1) GROUP BY子句將查詢(xún)結(jié)果按某一列或多列的值分組,值相等的為一組。(2)分組后聚集函數(shù)將作用于每一個(gè)組,即每一個(gè)組都有一個(gè)函數(shù)值。示例:SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;SELE
42、CT Sno FROM SC GROUP BY Sno HAVING COUNT(*)>3;注意:WHERE子句與HAVING短語(yǔ)的區(qū)別在于作用對(duì)象不同。WHERE子句作用于基本表或視圖,從中選擇滿(mǎn)足條件的元組。HAVING短語(yǔ)作用于組,從中選擇滿(mǎn)足條件的組。SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade)>=90 GROUP BY Sno; (錯(cuò)誤)SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>=90; (正確)【連接查詢(xún)】一、等值連接1. 若一個(gè)查詢(xún)同時(shí)
43、設(shè)計(jì)兩個(gè)以上的表,則稱(chēng)之為連接查詢(xún)。連接查詢(xún)是關(guān)系數(shù)據(jù)庫(kù)最主要的查詢(xún),包括等值連接查詢(xún)、自然連接查詢(xún)、非等值連接查詢(xún)、自身連接查詢(xún)、外連接查詢(xún)和復(fù)合連接查詢(xún)。2. 連接查詢(xún)的WHERE子句中用來(lái)連接兩個(gè)表的條件稱(chēng)為連接條件或連接謂詞。當(dāng)連接詞為=時(shí),稱(chēng)為等值連接。使用其他運(yùn)算符稱(chēng)為非等值連接。若在等值連接中把目標(biāo)列中重復(fù)的屬性列去掉則為自然連接。3. 連接謂詞中的列名稱(chēng)為連接字段。連接條件中的各連接字段類(lèi)型必須是可比的,但名字不必相同。4. 一條SQL語(yǔ)句可以同時(shí)完成選擇和連接查詢(xún),這時(shí)WHERE子句是由連接謂詞和選擇謂詞組成的復(fù)合條件。二、自身連接1. 自身連接:連接操作不僅可以在兩個(gè)表之間
44、進(jìn)行,也可以是一個(gè)表與其自己進(jìn)行連接,稱(chēng)為表的自身連接。三、外連接1. 把Student的懸浮元組保存在結(jié)果關(guān)系中外連接SELECT Student Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno);2. 左外連接列出左邊關(guān)系中所有的元組,右外連接列出右邊關(guān)系所有的元組。四、多表連接連接操作除了可以是兩表連接、一個(gè)表與其自身連接外,還可以是兩個(gè)以上的表進(jìn)行連接,后者通常稱(chēng)為多表連接。SELECT Student.Sno, Sname, Cname, Grade F
45、ROM Student,SC,Course WHERE Student. Sno=SC.Sno AND SC.Cno= Course. Cno;【嵌套查詢(xún)】1. 在SQL語(yǔ)言中,一個(gè)SELECT-FROM-WHERE語(yǔ)句稱(chēng)為一個(gè)查詢(xún)塊。將一個(gè)查詢(xún)塊嵌套在另一個(gè)查詢(xún)塊的WHERE子句或HAVING短語(yǔ)的條件中的查詢(xún)稱(chēng)為嵌套查詢(xún)。2. 上層的查詢(xún)塊稱(chēng)為外層查詢(xún)或父查詢(xún),下層查詢(xún)塊稱(chēng)為內(nèi)層查詢(xún)或子查詢(xún)。3. 子查詢(xún)的SELECT 語(yǔ)句不能使用ORDER BY子句,ORDER BY子句只能對(duì)最終的查詢(xún)結(jié)果排序。4. 嵌套查詢(xún)使用可以用多個(gè)簡(jiǎn)單查詢(xún)構(gòu)成復(fù)雜的查詢(xún),從而增強(qiáng)SQL的查詢(xún)能力,以層層嵌套的方
46、式構(gòu)造程序正式SQL中“結(jié)構(gòu)化”的含義。一、帶有IN謂詞的子查詢(xún)1. 先分步來(lái)完成查詢(xún),然后在把兩個(gè)查詢(xún)構(gòu)造稱(chēng)嵌套查詢(xún)。SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN(SELECT Sdept FROM Student WHERE Sname=劉晨)2. 實(shí)現(xiàn)同一個(gè)查詢(xún)請(qǐng)求可以有多種方法,這涉及到數(shù)據(jù)庫(kù)性能調(diào)優(yōu)技術(shù)。有些嵌套查詢(xún)可以用連接運(yùn)算替代,有些是不能替代的。3. 查詢(xún)條件不依賴(lài)父查詢(xún),稱(chēng)為不相關(guān)子查詢(xún);如果子查詢(xún)的查詢(xún)條件依賴(lài)于父查詢(xún),這類(lèi)子查詢(xún)稱(chēng)為相關(guān)子查詢(xún),整個(gè)查詢(xún)語(yǔ)句稱(chēng)為相關(guān)嵌套查詢(xún)語(yǔ)句。二、帶有比較運(yùn)算符的子查詢(xún)1. 帶
47、有比較運(yùn)算符的子查詢(xún)是指父查詢(xún)和子查詢(xún)之間用比較運(yùn)算符進(jìn)行連接。2. 求解相關(guān)子查詢(xún)不能像求解不相關(guān)子查詢(xún)那樣一次將子查詢(xún)求解出來(lái),然后求解父查詢(xún)。內(nèi)能查詢(xún)由于與外層查詢(xún)有關(guān),因此必須反復(fù)求值。3. 實(shí)例:SELECT Sno, Sname, Sdept FROM Student WHERE Sdept=( SELECT Sdept FROM Student WHERE Sname=劉晨)SELECT Sno, Cno FROM SC X WHERE Grade>=(SELECT AVG(Grade FROM SC y WHERE y. Sno= x. Sno)三、帶有ANY(SOME)
48、或ALL謂詞的子查詢(xún)SELECT Sname,Sage FROM Student WHERE Sage<ANY(SELECT Sage FROM Student WHERE Sdept=CS) AND Sdept<>CS;SELECT Sname,Sage FROM Student WHERE Sage<(SELECT MAX(Sage) FROM Student WHERE Sdept=CS) AND Sdept<>CS;SELECT Sname,Sage FROM Student WHERE Sage<ALL(SELECT Sage FROM St
49、udent WHERE Sdept=CS) AND Sdept<>CS;SELECT Sname,Sage FROM Student WHERE Sage<(SELECT MIN (Sage) FROM Student WHERE Sdept=CS) AND Sdept<>CS;事實(shí)上,用聚集函數(shù)實(shí)現(xiàn)子查詢(xún)通常比直接用ANY或ALL查詢(xún)效率高。四、帶有EXISTS謂詞的子查詢(xún)1. EXISTS代表存在量詞。帶有EXISTS謂詞的子查詢(xún)不返回任何數(shù)據(jù),只產(chǎn)生邏輯真“true”或邏輯假值“false”。2. 使用存在量詞EXISTS后,若內(nèi)層查詢(xún)結(jié)果非空,則外層的WH
50、ERE子句返回真值,否則返回假值; 使用存在量詞NOT EXISTS后,若內(nèi)層查詢(xún)結(jié)果為空,則外層的WHERE子句返回值真值,否則返回假值。SELECT Sname FROM Student WHERE EXISTS(SELECT* FROM SC WHERE Sno= Student. Sno AND Cno=1);SELECT Sname FROM Student WHERE NOT EXISTS(SELECT* FROM SC WHERE Sno= Student. Sno AND Cno=1);SELECT Sno, Sname, Sdept FROM Student S1 WHERE
51、 EXISTS(SELECT* FROM Student S2 WHERE S2. Sdept= S1. Sdept AND S2. Sname=劉晨);3. 一些帶EXISTS或NOT EXISTS謂詞的子查詢(xún)不能被其他形式的子查詢(xún)等價(jià)替換,但所有帶IN謂詞、比較運(yùn)算符、ANY和ALL謂詞的子查詢(xún)都能用帶EXISTS謂詞的子查詢(xún)等價(jià)代換。4. SQL中沒(méi)有全稱(chēng)量詞,但是可以把帶有全稱(chēng)量詞的謂詞轉(zhuǎn)換為等價(jià)的帶有存在量詞的謂詞5. SQL中沒(méi)有蘊(yùn)涵邏輯運(yùn)算,但是可以利用謂詞運(yùn)算將一個(gè)邏輯蘊(yùn)涵的謂詞等價(jià)轉(zhuǎn)化。SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXI
52、STS(SELECT * FROM SC SCY WHERE SCY. Sno=20121522 AND NOT EXISTS(SELECT* FROM SC SCZ WHERE SCZ. Sno= SCX. Sno AND SCZ. Cno=SCY.Cno);【集合查詢(xún)】1. SELECT語(yǔ)句的查詢(xún)結(jié)果是元組的集合,所以多個(gè)SELECT語(yǔ)句的結(jié)果可進(jìn)行集合操作。集合操作主要包括并操作UNION、交操作INTERSECTION和差操作EXCEPT.2. 參加集合操作的各查詢(xún)結(jié)果的列數(shù)必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類(lèi)型也必須相同。3. 使用UNION將多個(gè)查詢(xún)結(jié)果合并起來(lái)時(shí),系統(tǒng)會(huì)自動(dòng)去掉重復(fù)元組。如果
53、要保留重復(fù)元組則用UNION ALL操作符。4. 實(shí)例:SELECT* FROM Student WHERE Sdept=CS UNION SELECT * FROM Student WHERE Sage<=19;SELECT Sno FROM SC WHERE Cno=1 UNION SELECT Sno FROM SC WHERE Cno=2;SELECT*FROM Student WHERE Sdept=CS INTERSECT SELECT *FROM Student WHERE Sage<=19;SELECT Sno FROM SC WHERE Cno=1 INTERSE
54、CT SELECT Sno FROM SC WHERE Cno=2;SELECT* FROM Student WHERE Sdept=CS EXCEPT SELECT * FROM Student WHERE Sage<=19;【基于派生表的查詢(xún)】1. 子查詢(xún)不僅可以出現(xiàn)在WHERE子句中,還可以出現(xiàn)在FROM子句中,這是子查詢(xún)生成的臨時(shí)派生表稱(chēng)為主查詢(xún)的查詢(xún)對(duì)象。2. 通過(guò)FROM子句生成派生表時(shí),AS關(guān)鍵字可以省略,但必須為派生關(guān)系指定一個(gè)別名。3.5 數(shù)據(jù)更新【插入數(shù)據(jù)】1. INSERT INTO Student(Sno, Sname,Ssex,Sdept,Sage) VALUE
55、S(201215128,陳冬,男,IS,18);2. 字符串常量要用單引號(hào)(英文字符)括起來(lái)。3. 如果沒(méi)有指定屬性名,表示新元組要在表的所有屬性列上都指定值,屬性列的次序與CREATE TABLE中的次序相同,VALUES子句對(duì)新元組的各屬性列賦值,一定要注意值與屬性列要一一對(duì)應(yīng)。指定部分屬性名,為指定的列DBMS自動(dòng)賦空值。【插入子查詢(xún)結(jié)果】INSERT INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;【修改數(shù)據(jù)】1. 修改一個(gè)元組的值UPDATE Student SET Sag
56、e=22 WHERE Sno=201215121;2. 修改多個(gè)元組的值UPDATE Student SET Sage= Sage+1;3. 帶子查詢(xún)的修改語(yǔ)句UPDATE SC SET Grad=0 WHERE Sno IN(SELECT Sno FROM Student WHERE Sdept=CS);【刪除數(shù)據(jù)】1.刪除某一個(gè)元組的值DELETE FROM Student WHERE Sno=201515128;2.刪除多個(gè)元組的值DELETE FROM SC;3.帶子查詢(xún)的刪除語(yǔ)句DELETE FROM SC WHERE Sno IN(SELECT Sno FROM Student WHERE Sdept=CS);3.6 空值的處理1. 所謂控制就是“不知道”或“不存在”或“無(wú)意義”的值??刂剖呛芴厥獾闹担胁淮_定性。2. 判斷一個(gè)屬性的值是否為控制,用IS NULL 或IS NOT NULL來(lái)表示。3. 屬性定義(或域定義)中有NOT NULL 約束條件的不能取空值,加了UNIQUE限制的屬性不能取空值。碼屬性不能取空值。4. 有了U
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 對(duì)企業(yè)有利的加班合同(2篇)
- 二零二五年智能家電技術(shù)服務(wù)合同范本3篇
- 宜賓酒王二零二五年度800億控量保價(jià)市場(chǎng)占有率提升合同2篇
- 二零二五年度酒店會(huì)議住宿套餐定制合同2篇
- 2025年度電子信息產(chǎn)業(yè)設(shè)備采購(gòu)與技術(shù)服務(wù)合同3篇
- 二零二五版工程款分期支付還款協(xié)議合同范本3篇
- 二零二五版碧桂園集團(tuán)施工合同示范文本6篇
- 二零二五版豆腐出口貿(mào)易代理合同3篇
- 二零二五年度韻達(dá)快遞業(yè)務(wù)承包合同及綜合運(yùn)營(yíng)支持協(xié)議3篇
- 2024年物流運(yùn)輸承包合同3篇
- 氧化鋁生產(chǎn)工藝教學(xué)拜耳法
- 2023年十八項(xiàng)醫(yī)療核心制度考試題與答案
- 氣管切開(kāi)患者氣道濕化的護(hù)理進(jìn)展資料 氣管切開(kāi)患者氣道濕化
- 管理模板:某跨境電商企業(yè)組織結(jié)構(gòu)及部門(mén)職責(zé)
- 底架總組裝工藝指導(dǎo)書(shū)
- 簡(jiǎn)單臨時(shí)工勞動(dòng)合同模板(3篇)
- 聚酯合成反應(yīng)動(dòng)力學(xué)
- 自動(dòng)控制原理全套課件
- 上??萍即髮W(xué),面試
- 《五年級(jí)奧數(shù)總復(fù)習(xí)》精編課件
- TS2011-16 帶式輸送機(jī)封閉棧橋圖集
評(píng)論
0/150
提交評(píng)論