大學(xué)計算機(Windows 10+WPS Office 2019)(微課版) 課件 第8章 數(shù)據(jù)庫技術(shù)應(yīng)用基礎(chǔ)_第1頁
大學(xué)計算機(Windows 10+WPS Office 2019)(微課版) 課件 第8章 數(shù)據(jù)庫技術(shù)應(yīng)用基礎(chǔ)_第2頁
大學(xué)計算機(Windows 10+WPS Office 2019)(微課版) 課件 第8章 數(shù)據(jù)庫技術(shù)應(yīng)用基礎(chǔ)_第3頁
大學(xué)計算機(Windows 10+WPS Office 2019)(微課版) 課件 第8章 數(shù)據(jù)庫技術(shù)應(yīng)用基礎(chǔ)_第4頁
大學(xué)計算機(Windows 10+WPS Office 2019)(微課版) 課件 第8章 數(shù)據(jù)庫技術(shù)應(yīng)用基礎(chǔ)_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大學(xué)計算機任課老師:*******微課版第8章數(shù)據(jù)庫技術(shù)應(yīng)用基礎(chǔ)1數(shù)據(jù)庫基礎(chǔ)2數(shù)據(jù)模型3關(guān)系數(shù)據(jù)庫系統(tǒng)4關(guān)系數(shù)據(jù)庫標準語言SQL5關(guān)系數(shù)據(jù)庫設(shè)計6Python數(shù)據(jù)庫操作8.1

數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)數(shù)據(jù)庫數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫系統(tǒng)在計算機科學(xué)中,數(shù)據(jù)是指所有能輸入計算機中并被計算機程序處理的符號的介質(zhì)的總稱,是用于輸入電子計算機進行處理,具有一定意義的數(shù)字、字母、符號和模擬量等的通稱。數(shù)據(jù)庫是一個按數(shù)據(jù)結(jié)構(gòu)來存儲和管理數(shù)據(jù)的計算機軟件系統(tǒng)。數(shù)據(jù)庫的概念包括兩層意思:①數(shù)據(jù)庫是一個實體,它是能夠合理保管數(shù)據(jù)的倉庫,用戶在該倉庫中存放要管理的事務(wù)數(shù)據(jù),“數(shù)據(jù)”和“庫”兩個概念結(jié)合成為數(shù)據(jù)庫。②數(shù)據(jù)庫是數(shù)據(jù)管理的一種方法和技術(shù),它能更合適地組織數(shù)據(jù)、更方便地維護數(shù)據(jù)、更嚴密地控制數(shù)據(jù)和更有效地利用數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)是一種操縱和管理數(shù)據(jù)庫的大型軟件,用于建立、使用和維護數(shù)據(jù)庫。它對數(shù)據(jù)庫進行統(tǒng)一管理和控制,以保證數(shù)據(jù)庫的安全性和完整性。數(shù)據(jù)庫系統(tǒng)通常由軟件、數(shù)據(jù)庫和數(shù)據(jù)管理員(DatabaseAdministrator,DBA)組成。軟件主要包括操作系統(tǒng)、各種宿主語言、實用程序以及數(shù)據(jù)庫管理系統(tǒng);數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索都要通過數(shù)據(jù)庫管理系統(tǒng)進行;數(shù)據(jù)管理員負責(zé)創(chuàng)建、監(jiān)控和維護整個數(shù)據(jù)庫,使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。8.1.1數(shù)據(jù)庫的基本概念數(shù)據(jù)管理是指對數(shù)據(jù)進行分類、組織、編碼、存儲、檢索和維護。在應(yīng)用需求的推動下,在計算機硬件、軟件發(fā)展的基礎(chǔ)上,數(shù)據(jù)管理技術(shù)經(jīng)歷了人工管理階段、文件管理階段、數(shù)據(jù)庫系統(tǒng)管理階段3個階段。(1)人工管理階段8.1.2數(shù)據(jù)管理技術(shù)的發(fā)展(2)文件管理階段(3)數(shù)據(jù)庫系統(tǒng)管理階段8.1.2數(shù)據(jù)管理技術(shù)的發(fā)展①物理獨立性:指用戶的應(yīng)用程序與存儲在磁盤上的數(shù)據(jù)庫中的數(shù)據(jù)是相互獨立的。當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式等)改變時,如存儲設(shè)備的更換、物理存儲的更換、存取方式改變等,應(yīng)用程序都不用改變。②邏輯獨立性:指用戶的應(yīng)用程序與數(shù)據(jù)庫的邏輯結(jié)構(gòu)是相互獨立的。數(shù)據(jù)的邏輯結(jié)構(gòu)改變了,如修改數(shù)據(jù)模式、改變數(shù)據(jù)間聯(lián)系等,用戶程序都不用改變。8.1.3數(shù)據(jù)庫系統(tǒng)的特點數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)庫系統(tǒng)的特點數(shù)據(jù)的共享性好,冗余度低數(shù)據(jù)獨立性好數(shù)據(jù)由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理和控制數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)通常采用3級模式結(jié)構(gòu),并提供兩級映像功能8.1.4數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)體系8.1.4數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)體系三級模式是數(shù)據(jù)庫在邏輯級上的視圖,是對數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶的公共數(shù)據(jù)視圖。一個數(shù)據(jù)庫只有一個概念模式。定義模式時不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),而且要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)的安全性、完整性要求模式,也稱邏輯模式或概念模式是對數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它是由概念模式推導(dǎo)出來的,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。一個概念模式可以有多個外模式,但一個應(yīng)用程序只能使用一個外模式。外模式,也稱子模式或用戶模式是對數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。內(nèi)模式處于最底層,反映數(shù)據(jù)在計算機物理結(jié)構(gòu)中的實際存儲形式;概念模式在中間層,反映設(shè)計者的數(shù)據(jù)全局邏輯要求;而外模式處于最外層,反映用戶對數(shù)據(jù)的要求。內(nèi)模式,也稱物理模式或存儲模式兩層映像保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)具有較高的獨立性。8.1.4數(shù)據(jù)庫系統(tǒng)的內(nèi)部結(jié)構(gòu)體系兩級映射該映射給出了概念模式中數(shù)據(jù)的全局邏輯結(jié)構(gòu)與數(shù)據(jù)的物理存儲結(jié)構(gòu)間的對應(yīng)關(guān)系內(nèi)模式/模式映像概念模式是一個全局模式,外模式是用戶的局部模式。一個概念模式中可以定義多個外模式,而每個外模式是概念模式的一個基本視圖外模式/模式映像8.2

數(shù)據(jù)模型1.概念模型的相關(guān)概念8.2.1數(shù)據(jù)模型中的基本概念實體屬性實體型和實體集實體(Entity)指客觀存在且可以相互區(qū)別的事物。它可以是具體的,如一個學(xué)生、一棵樹;也可以是抽象的概念或聯(lián)系,如比賽活動、學(xué)生與成績的關(guān)系等。實體用類型(Type)和值(Value)表示,如學(xué)生是一個實體,具體的學(xué)生王明、張立是實體值屬性是指描述實體的某一方面的特性。一個實體可以由若干個屬性來描述。例如,學(xué)生實體可以由學(xué)號、姓名、性別等屬性組成。每個屬性都有一個值,值的類型可以是整數(shù)、實數(shù)或字符型。屬性用類型和值表示,如學(xué)號、姓名、年齡是屬性的類型,08012001、張三、19是屬性的值。實體可以用型和值來表示。實體型是屬性的集合。例如,反映一個學(xué)生全部特征的所有屬性之和,就是學(xué)生這個實體的型。將這些屬性落實到某個學(xué)生身上而得到的所有數(shù)據(jù)就是實體的值。同類型的實體的集合稱為實體集,如全班學(xué)生就是一個實體集8.2.1數(shù)據(jù)模型中的基本概念碼域聯(lián)系碼是指能唯一標識實體的屬性或?qū)傩约鐚W(xué)生的學(xué)號屬性域是指屬性的取值范圍,如性別的域為“男”和“女”,成績的域為0~100現(xiàn)實世界的事物和事物之間總是相互聯(lián)系的,這些聯(lián)系在信息世界中就反映為實體內(nèi)部或者實體之間的聯(lián)系。實體內(nèi)部的聯(lián)系是指組成實體的各屬性之間的聯(lián)系;實體之間的聯(lián)系是指不同實體集之間的聯(lián)系,實體之間的聯(lián)系通常有一對一、一對多和多對多3種①一對一聯(lián)系(1:1)。如果實體集X中的任一實體至多對應(yīng)實體集Y中的唯一實體,反之亦然,則稱X與Y是一對一聯(lián)系。例如,一個班只能有一個班長,而一個班長只能屬于一個班,則班長和班之間具有一對一聯(lián)系。②一對多聯(lián)系(1:n)。如果實體集X中至少有一個實體對應(yīng)實體集Y中一個以上的實體,且Y中任一實體至少對應(yīng)X中的一個實體,則稱X對Y是一對多聯(lián)系。例如,一個班對應(yīng)多個學(xué)生,而一個學(xué)生只屬于一個班,則班與學(xué)生之間具有一對多聯(lián)系。③多對多聯(lián)系(m:n)。如果實體集X中至少有一個實體對應(yīng)實體集Y中一個以上的實體,且Y中也至少有一個實體對應(yīng)X中一個以上的實體,則稱X與Y是多對多聯(lián)系。例如,一個學(xué)生可以學(xué)習(xí)多門課程,而一門課程又可以由多個學(xué)生來學(xué)習(xí),則學(xué)生與課程之間具有多對多聯(lián)系。8.2.1數(shù)據(jù)模型中的基本概念2.E-R圖概念模型是對信息世界建模的,所以概念模型應(yīng)該能夠方便、準確地表示上述信息世界中的常用概念。概念模型的表示方法很多,最常用的是實體-聯(lián)系方法(Entity-Relationshipapproach)。該方法用E-R圖來描述現(xiàn)實世界的概念模型。E-R圖提供了表示實體型、屬性和聯(lián)系的方法,可以方便地轉(zhuǎn)換成表的邏輯結(jié)構(gòu)。構(gòu)成E-R圖的基本要素是實體、屬性和聯(lián)系,E-R圖的表示符號如圖所示。①實體:用矩形表示實體集,在矩形內(nèi)寫上該實體集的名字。②屬性:用橢圓形表示屬性,在橢圓形內(nèi)寫上該屬性的名稱。③聯(lián)系:用菱形表示聯(lián)系,在菱形內(nèi)寫上聯(lián)系名。④連線:用來連接實體和各個屬性以及實體和聯(lián)系,在連接聯(lián)系時,應(yīng)同時在直線上注明聯(lián)系的種類,即1:1,1:n或m:n。8.2.1數(shù)據(jù)模型中的基本概念數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作、數(shù)據(jù)約束條件組成。①數(shù)據(jù)結(jié)構(gòu)描述數(shù)據(jù)庫的組成對象以及對象之間的聯(lián)系。數(shù)據(jù)結(jié)構(gòu)是所描述的對象類型的集合,是對系統(tǒng)靜態(tài)特性的描述。因為數(shù)據(jù)結(jié)構(gòu)是刻畫一個數(shù)據(jù)模型性質(zhì)最重要的方面,因此,在數(shù)據(jù)庫系統(tǒng)中,按照數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型,如層次模型、網(wǎng)狀模型、關(guān)系模型等。②數(shù)據(jù)操作是指對數(shù)據(jù)庫中各種對象的實例允許執(zhí)行的操作的集合,是對系統(tǒng)動態(tài)特性的描述。數(shù)據(jù)庫主要有檢索和更新(插入、刪除、修改)兩大類操作。數(shù)據(jù)模型必須定義這些操作的確切含義、操作符號、操作規(guī)則以及實現(xiàn)操作的語言。③數(shù)據(jù)約束條件是一組完整性規(guī)則的集合。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效、相容。數(shù)據(jù)模型應(yīng)該反映和規(guī)定其必須遵守的基本的和通用的完整性約束條件。8.2.2數(shù)據(jù)模型的組成要素層次模型網(wǎng)狀模型關(guān)系模型常見的數(shù)據(jù)模型關(guān)系模型中的關(guān)系是一張由行和列組成的二維表。①允許一個以上節(jié)點沒有雙親。②一個節(jié)點可以有多于一個的雙親節(jié)點。①有且只有一個節(jié)點沒有雙親節(jié)點,這個節(jié)點稱為根節(jié)點。②根以外的其他節(jié)點有且只有一個雙親節(jié)點。8.2.3常見的數(shù)據(jù)模型8.3

關(guān)系數(shù)據(jù)庫系統(tǒng)在關(guān)系數(shù)據(jù)庫中,實體以及實體間的聯(lián)系都由單一的結(jié)構(gòu)類型來表示,這種邏輯結(jié)構(gòu)是一張二維表。。8.3.1關(guān)系數(shù)據(jù)庫系統(tǒng)概述選課系統(tǒng)中學(xué)生-課程-老師實體及其之間聯(lián)系的E-R圖在關(guān)系數(shù)據(jù)庫中,實體以及實體間的聯(lián)系都由單一的結(jié)構(gòu)類型來表示,這種邏輯結(jié)構(gòu)是一張二維表。。8.3.1關(guān)系數(shù)據(jù)庫系統(tǒng)概述按照數(shù)據(jù)模型的三個要素,關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作合集和關(guān)系完整性約束三部分組成。1.關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡單,只包含單一的數(shù)據(jù)結(jié)構(gòu)—關(guān)系。在用戶看來,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表。2.關(guān)系模型的數(shù)據(jù)操縱關(guān)系數(shù)據(jù)模型的操作包括數(shù)據(jù)查詢、數(shù)據(jù)刪除、數(shù)據(jù)插入、數(shù)據(jù)修改,這些操作必須滿足關(guān)系的完整性約束條件。3.關(guān)系模型的完整性約束關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件。為了保持數(shù)據(jù)庫中數(shù)據(jù)與現(xiàn)實世界的一致性,關(guān)系數(shù)據(jù)庫的數(shù)據(jù)與更新操作必須遵循三類完整性規(guī)則,即實體完整性、參照完整性和用戶自定義完整性。8.3.2關(guān)系模型①關(guān)系(Relation):一個關(guān)系對應(yīng)通常所說的一張表。通常將一個沒有重復(fù)行、重復(fù)列的二維表看成一個關(guān)系,每個關(guān)系都有一個關(guān)系名。②元組(Tuple):表中的一行即為一個元組。③屬性(Attribute):表中的一列即為一個屬性,每個屬性的名稱就是屬性名。④主關(guān)鍵字(Key):表中的某個屬性或?qū)傩越M,如果它可以唯一確定一個元組,則可成為本關(guān)系的主關(guān)鍵字。⑤域(Domain):屬性的取值范圍,如人的年齡一般在1~80歲,性別的域是(男,女),系別的域是一個學(xué)校所有系名的集合。⑥分量:元組中的一個屬性值。⑦關(guān)系模式:對關(guān)系的描述,一般

表示為關(guān)系名(屬性1,屬性2,……,屬性n)。8.3.2關(guān)系模型關(guān)系代數(shù)是一種抽象的查詢語言,它用對關(guān)系的運算來表達查詢。關(guān)系代數(shù)的運算對象是關(guān)系,運算結(jié)果也是關(guān)系。關(guān)系代數(shù)用到的運算有以下兩類。1.傳統(tǒng)的集合運算

傳統(tǒng)的集合運算是二目運算,包括并、差、交、廣義笛卡兒積4種運算。參加集合操作的各結(jié)果表的列數(shù)必須相同,對應(yīng)項的數(shù)據(jù)類型也必須相同。如圖所示分別為具有三個屬性列的關(guān)系R和S。8.3.3關(guān)系代數(shù)(1)并(Union)設(shè)關(guān)系R和關(guān)系S具有相同的目n(即兩個關(guān)系都有n個屬性),且相應(yīng)的屬性取自同一個域,則關(guān)系R與關(guān)系S的并仍為n目關(guān)系,并包含了關(guān)系R和關(guān)系S中的所有元組,如圖(a)所示。(2)差(Difference)設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個域,則關(guān)系R與關(guān)系S的差仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成,如圖(b)所示。8.3.3關(guān)系代數(shù)(3)交(IntersectionReferentialintegrity)設(shè)關(guān)系R和關(guān)系S具有相同的目n,且相應(yīng)的屬性取自同一個域,則關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成,仍為n目關(guān)系,如圖(c)所示。(4)廣義笛卡兒積(Extendedcartesianproduct)這里的笛卡兒積嚴格地講是廣義笛卡兒積(ExtendedCartesianProduct)。在不會出現(xiàn)混淆的情況下廣義笛卡兒積也稱為笛卡兒積。8.3.3關(guān)系代數(shù)2.專門的關(guān)系運算專門的關(guān)系運算包括選擇、投影、連接等。以如圖所示的兩張表為例。8.3.3關(guān)系代數(shù)(1)選擇(Selection)選擇運算時根據(jù)給定的條件,從一個關(guān)系中選出一個或多個元組(表中的行)。被選出的行組成一個新關(guān)系,這個新關(guān)系是原關(guān)系的一個子集。例如,從學(xué)生信息表中選取“性別”為“男”的記錄,組成新關(guān)系,如圖(a)所示。(2)投影(Projection)投影運算就是從一個關(guān)系中選擇某些特定的屬性(表中的列)重新排列組成一個新關(guān)系,投影后屬性減少,新關(guān)系可能有一些行具有相同的值,此時重復(fù)的行將會被刪除。例如,從學(xué)生信息表中選取“學(xué)號”“姓名”“院系”屬性,組成新關(guān)系,如圖(b)所示。8.3.3關(guān)系代數(shù)(3)連接(Join)連接運算是從兩個或多個關(guān)系中選取屬性間滿足一定條件的元組,組成一個新關(guān)系。例如,將學(xué)生信息表和選課信息表按條件(學(xué)號相同)進行連接,產(chǎn)生一個新關(guān)系,如圖(c)所示,其中“學(xué)號1”來自學(xué)生信息表,“學(xué)號2”來自選課信息表。可以看出,連接運算其實就是從兩個關(guān)系的笛卡兒積中選取屬性間滿足一定條件的元組。8.3.3關(guān)系代數(shù)8.4

關(guān)系數(shù)據(jù)庫標準語言SQL

SQL是因為它是一個綜合的、功能強大又簡單易學(xué)的語言。其主要特點如下:8.4.1SQL的特點124533.面向集合的操作方式5.語言簡潔,易學(xué)易用2.高度非過程化4.以同一種語法結(jié)構(gòu)提供兩種使用方式1.SQL風(fēng)格統(tǒng)一8.4.1SQL的特點

SQL功能極強,但由于設(shè)計巧妙,語言十分簡潔,完成數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制的核心功能只用9個動詞,如表所示。SQL語言語法簡單,接近英語口語,因此容易學(xué)習(xí)和使用。8.4.1SQL的特點以學(xué)生選課數(shù)據(jù)庫為例來講解SQL的數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢語句。該數(shù)據(jù)庫包含以下3張表。①學(xué)生信息表:Student(Sno,Sname,Ssex,Sbday,Sdept)其中,Sno表示學(xué)號,字符型,長度為4;Sname表示姓名,字符型,長度為16;Ssex表示性別,字符型,長度為1;Sbday表示出生日期,日期型;Sdept表示學(xué)院,字符型,長度為16。②課程信息表:Course(Cno,Cname,Ccredit)其中,Cno表示課程編號,字符型,長度為4;Cname表示課程名,字符型,長度為16;Ccredit表示學(xué)分,字符型,長度為2③選課信息表:SC(Sno,Cno,Grade),其中Sno表示學(xué)號;Cno表示課程號;Grade表示成績,短整數(shù)。加下畫線的屬性表示關(guān)系的主碼。1.定義基本表SQL語言使用CREATETABLE語句定義基本表,語句的一般格式:CREATETABLE<基本表名>(<列名1><數(shù)據(jù)類型1>[列級完整性約束條件1][,<列名2><數(shù)據(jù)類型2>[列級完整性約束條件2]]……[,<表級完整性約束條件>])SQL提供的數(shù)據(jù)類型很

多,常用的數(shù)據(jù)類型如

表所示。8.4.2數(shù)據(jù)定義2.修改基本表隨著應(yīng)用環(huán)境和應(yīng)用需求的變化,

有時需要修改已建立的基本表,修

改基本表的ALTER語句的格式:3.刪除基本表當(dāng)某個基本表不再需要時,可以使用

DROPTABLE語句刪除它。該語句的格

式:8.2.1數(shù)據(jù)模型中的基本概念數(shù)據(jù)操縱就是對表中的記錄進行的操作,包括記錄的插入(INSERT)、更新(UPDATE)和刪除(DELETE)。1.插入元組的一般格式2.更新數(shù)據(jù)(修改數(shù)據(jù))的一般格式3.刪除數(shù)據(jù)的一般格式8.4.3數(shù)據(jù)操縱數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。SQL提供SELECT語句進行數(shù)據(jù)查詢,該語句的格式:說明:整個SELECT語句的作用是根據(jù)WHERE子句的條件表達式,從FROM子句指定的表中找出滿足條件的元組,再按SELECT子句中的目標表達式選出指定的屬性值形成結(jié)果表。如果有GROUPBY子句,則將結(jié)果按<列名1>的值進行分組,該屬性列值相等的元組為一個組。通常會在每組中使用聚集函數(shù)。如果GROUPBY子句帶HAVING短語,則只有滿足指定條件的分組才能輸出。如果有ORDERBY子句,則結(jié)果還要按<列名2>的值升序或降序排序。8.4.4數(shù)據(jù)查詢【例8-3】使用SELECT語句從Student、Course和SC表查詢相關(guān)信息。①查詢“張鵬”同學(xué)的基本信息。SELECT*FROMStudentWHERESname=“張鵬”說明:這里的“*”表示選擇所有的屬性。②在Student表中查詢所有計算機學(xué)院的學(xué)生的學(xué)號、姓名。SELECTSno,SnameFROMStudentWHERESdept=“計算機學(xué)院”③查詢所有姓張的同學(xué)的信息。SELECT*FROMStudentWHERESnameLIKE“張%”說明:謂詞LIKE可以用來進行字符串的匹配,也就是用%(百分號)代表任意長度的字符串,用_(下畫線)代表任意一個字符。例如,“張%”表示姓張的人,“張_”表示姓張且名字只有兩個字的人。8.4.4數(shù)據(jù)查詢④查詢所有選修了“C01”課程的學(xué)生的學(xué)號、姓名和成績。SELECTStudent.Sno,Sname,GradeFROMStudent,SCWHEREStudent.Sno=SC.SnoandCno=‘C01’學(xué)生的學(xué)號、姓名信息存放在Student表中,而選課信息存放在SC表中,所以需要在兩張表中進行查詢。這兩張表之間的聯(lián)系是通過公共屬性Sno實現(xiàn)的。由于Sno屬性在兩張表中都存在,為了避免混淆,需要在屬性名前加上表名前綴,即Student.Sno和SC.Sno來表示。說明:WHERE子句中可以包含查詢條件和連接條件。⑤統(tǒng)計每個學(xué)院的學(xué)生人數(shù)。SELECTsdept,COUNT(*)FROMstudentGROUPBYsdept說明:GROUPBY分組子句將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。例如,在本例中按院系分組,院系值相同的為一組。GROUPBY分組后,SELECT子句中一般只會出現(xiàn)分組字段和聚集函數(shù)。8.4.4數(shù)據(jù)查詢常見的聚集函數(shù)如表所示注意:WHERE子句中不能用聚集函數(shù)作為條件表達式。如果分組后還需要按一定條件對分組進行篩選,最終只輸出滿足指定條件的分組,可以使用HAVING短語指定篩選條件。例如,在本例中,需要查找學(xué)院人數(shù)在50以上的學(xué)院及人數(shù),可以將SQL語句修改為:SELECTsdept,COUNT(*)FROMstudentGROUPBYsdeptHAVINGCOUNT(*)>50先對Student表中的記錄按sdept分組,然后篩選出記錄數(shù)大于50條的分組,將sdept和COUNT(*)的值輸出。WHERE子句與HAVING短語的區(qū)別在于,WHERE子句作用于表,從中選擇滿足條件的元組;HAVING短語作用于組,從中選擇滿足條件的組。8.4.4數(shù)據(jù)查詢⑥查詢所有考試成績?yōu)镹ULL的信息。SELECT*FROMSCWHEREGradeISNULL說明:如果查詢涉及空值,不能用等號,要使用ISNULL或ISNOTNULL。⑦查詢選修了C01課程的學(xué)生的學(xué)號和成績,并按成績降序排列。SELECTSno,GradeFROMSCWHERECno=“C01”O(jiān)RDERBYGradeDESC說明:ORDERBY子句對查詢結(jié)果按照一個或多個屬性列的升序(ASC)或降序(DESC)排列,默認為升序。對于空值,排序時顯示的次序由具體系統(tǒng)實現(xiàn)來決定。8.4.4數(shù)據(jù)查詢8.5

關(guān)系數(shù)據(jù)庫設(shè)計

關(guān)系數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造(設(shè)計)優(yōu)化的數(shù)據(jù)庫邏輯模式和物理結(jié)構(gòu)并據(jù)此建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理需求和數(shù)據(jù)操作需求。按照結(jié)構(gòu)化系統(tǒng)設(shè)計的方法,考慮數(shù)據(jù)庫及其應(yīng)用系統(tǒng)開發(fā)全過程,將關(guān)系數(shù)據(jù)庫設(shè)計分為6個階段。

8.5關(guān)系數(shù)據(jù)庫設(shè)計8.6

Python數(shù)據(jù)庫操作SQLite3數(shù)據(jù)庫是一款非常小巧輕量級的嵌入式開源數(shù)據(jù)庫軟件。由于其方便快捷,從Python2.5開始SQLite3就成了Python語言的標準模塊了,這也是Python中唯一一個數(shù)據(jù)庫接口類模塊,適合用戶開發(fā)小型數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫是存儲數(shù)據(jù)的,它自然會對數(shù)據(jù)的類型進行劃分,SQLite3中的數(shù)據(jù)類型如表所示。8.6.1SQLite3數(shù)據(jù)庫簡介

SQLite3數(shù)據(jù)庫實現(xiàn)了自給自足的、無服務(wù)

器的、零配置的、事務(wù)性的SQL數(shù)據(jù)庫引擎,

通常在小型應(yīng)用,或者嵌入式開發(fā)中使用較多。Python連接SQLite3數(shù)據(jù)庫的過程如圖所示。1.導(dǎo)入SQLite3模塊

由于Python2.5以后的安裝包已經(jīng)自帶

SQLite3的軟件包,所以用一行語句直接導(dǎo)入

即可,其語法格式:8.6.2Python連接SQLite3數(shù)據(jù)庫流程2.打開(連接)數(shù)據(jù)庫,建立數(shù)據(jù)庫連接使用connect()方法建立一個數(shù)據(jù)庫連接對象,其語法格式:這里的參數(shù)是指定要打開的數(shù)據(jù)庫文件。在Python中,使用SQLite3創(chuàng)建數(shù)據(jù)庫的連接,當(dāng)指定的數(shù)據(jù)庫文件不存在時,連接對象會自動創(chuàng)建數(shù)據(jù)庫文件;如果數(shù)據(jù)庫文件已經(jīng)存在,則連接對象不會再創(chuàng)建數(shù)據(jù)庫文件,而是直接打開該數(shù)據(jù)庫文件。例如,conn=sqlite3.connect(“E:\\Test.db”)會打開E盤下的Test數(shù)據(jù)庫,如果這個數(shù)據(jù)庫不存在,則新建一個數(shù)據(jù)庫。connect()方法返回con對象,就是數(shù)據(jù)庫鏈接對象,它提供了如表8-6所示的連接對象的方法.8.6.2Python連接SQLite3數(shù)據(jù)庫流程3.創(chuàng)建游標對象調(diào)用連接對象的cursor()方法可以得到一個游標對象??梢园延螛死斫鉃橐粋€指針。游標如圖8-18所示,圖中的指針就是游標cursor,假設(shè)右邊的表就是查詢到的結(jié)果,那么可以通過游標掃描SQL查詢并檢查結(jié)果。定義游標的語法格式:游標對象有多種方法支持數(shù)據(jù)庫操作,如表所示。8.6.2Python連接SQLite3數(shù)據(jù)庫流程4.使用游標對象的execute()方法執(zhí)行SQL命令調(diào)用游標對象的execute()方法執(zhí)行SQL命令,其語法格式:這里的參數(shù)是一個SQL語句。根據(jù)執(zhí)行的SQL語句類型的不同,可以分為以下兩種情況。(1)數(shù)據(jù)定義和操縱。數(shù)據(jù)定義語句包括新建表、刪除表、修改表結(jié)構(gòu)操作(CREATE、DROP、ALTER),數(shù)據(jù)操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論