




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
大學(xué)計(jì)算機(jī)任課老師:*******微課版第8章數(shù)據(jù)庫(kù)技術(shù)應(yīng)用基礎(chǔ)1數(shù)據(jù)庫(kù)基礎(chǔ)2數(shù)據(jù)模型3關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)4關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL5關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)6Python數(shù)據(jù)庫(kù)操作8.1
數(shù)據(jù)庫(kù)基礎(chǔ)數(shù)據(jù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)是指所有能輸入計(jì)算機(jī)中并被計(jì)算機(jī)程序處理的符號(hào)的介質(zhì)的總稱,是用于輸入電子計(jì)算機(jī)進(jìn)行處理,具有一定意義的數(shù)字、字母、符號(hào)和模擬量等的通稱。數(shù)據(jù)庫(kù)是一個(gè)按數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)和管理數(shù)據(jù)的計(jì)算機(jī)軟件系統(tǒng)。數(shù)據(jù)庫(kù)的概念包括兩層意思:①數(shù)據(jù)庫(kù)是一個(gè)實(shí)體,它是能夠合理保管數(shù)據(jù)的倉(cāng)庫(kù),用戶在該倉(cāng)庫(kù)中存放要管理的事務(wù)數(shù)據(jù),“數(shù)據(jù)”和“庫(kù)”兩個(gè)概念結(jié)合成為數(shù)據(jù)庫(kù)。②數(shù)據(jù)庫(kù)是數(shù)據(jù)管理的一種方法和技術(shù),它能更合適地組織數(shù)據(jù)、更方便地維護(hù)數(shù)據(jù)、更嚴(yán)密地控制數(shù)據(jù)和更有效地利用數(shù)據(jù)。數(shù)據(jù)庫(kù)管理系統(tǒng)是一種操縱和管理數(shù)據(jù)庫(kù)的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫(kù)。它對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。數(shù)據(jù)庫(kù)系統(tǒng)通常由軟件、數(shù)據(jù)庫(kù)和數(shù)據(jù)管理員(DatabaseAdministrator,DBA)組成。軟件主要包括操作系統(tǒng)、各種宿主語(yǔ)言、實(shí)用程序以及數(shù)據(jù)庫(kù)管理系統(tǒng);數(shù)據(jù)庫(kù)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索都要通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行;數(shù)據(jù)管理員負(fù)責(zé)創(chuàng)建、監(jiān)控和維護(hù)整個(gè)數(shù)據(jù)庫(kù),使數(shù)據(jù)能被任何有權(quán)使用的人有效使用。8.1.1數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)管理是指對(duì)數(shù)據(jù)進(jìn)行分類、組織、編碼、存儲(chǔ)、檢索和維護(hù)。在應(yīng)用需求的推動(dòng)下,在計(jì)算機(jī)硬件、軟件發(fā)展的基礎(chǔ)上,數(shù)據(jù)管理技術(shù)經(jīng)歷了人工管理階段、文件管理階段、數(shù)據(jù)庫(kù)系統(tǒng)管理階段3個(gè)階段。(1)人工管理階段8.1.2數(shù)據(jù)管理技術(shù)的發(fā)展(2)文件管理階段(3)數(shù)據(jù)庫(kù)系統(tǒng)管理階段8.1.2數(shù)據(jù)管理技術(shù)的發(fā)展①物理獨(dú)立性:指用戶的應(yīng)用程序與存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù)中的數(shù)據(jù)是相互獨(dú)立的。當(dāng)數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)、存取方式等)改變時(shí),如存儲(chǔ)設(shè)備的更換、物理存儲(chǔ)的更換、存取方式改變等,應(yīng)用程序都不用改變。②邏輯獨(dú)立性:指用戶的應(yīng)用程序與數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)是相互獨(dú)立的。數(shù)據(jù)的邏輯結(jié)構(gòu)改變了,如修改數(shù)據(jù)模式、改變數(shù)據(jù)間聯(lián)系等,用戶程序都不用改變。8.1.3數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)數(shù)據(jù)的共享性好,冗余度低數(shù)據(jù)獨(dú)立性好數(shù)據(jù)由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一管理和控制數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)部結(jié)構(gòu)通常采用3級(jí)模式結(jié)構(gòu),并提供兩級(jí)映像功能8.1.4數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)部結(jié)構(gòu)體系8.1.4數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)部結(jié)構(gòu)體系三級(jí)模式是數(shù)據(jù)庫(kù)在邏輯級(jí)上的視圖,是對(duì)數(shù)據(jù)庫(kù)系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶的公共數(shù)據(jù)視圖。一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)概念模式。定義模式時(shí)不僅要定義數(shù)據(jù)的邏輯結(jié)構(gòu),而且要定義數(shù)據(jù)之間的聯(lián)系,定義與數(shù)據(jù)有關(guān)的安全性、完整性要求模式,也稱邏輯模式或概念模式是對(duì)數(shù)據(jù)庫(kù)用戶能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它是由概念模式推導(dǎo)出來(lái)的,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。一個(gè)概念模式可以有多個(gè)外模式,但一個(gè)應(yīng)用程序只能使用一個(gè)外模式。外模式,也稱子模式或用戶模式是對(duì)數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式。內(nèi)模式處于最底層,反映數(shù)據(jù)在計(jì)算機(jī)物理結(jié)構(gòu)中的實(shí)際存儲(chǔ)形式;概念模式在中間層,反映設(shè)計(jì)者的數(shù)據(jù)全局邏輯要求;而外模式處于最外層,反映用戶對(duì)數(shù)據(jù)的要求。內(nèi)模式,也稱物理模式或存儲(chǔ)模式兩層映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)具有較高的獨(dú)立性。8.1.4數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)部結(jié)構(gòu)體系兩級(jí)映射該映射給出了概念模式中數(shù)據(jù)的全局邏輯結(jié)構(gòu)與數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)間的對(duì)應(yīng)關(guān)系內(nèi)模式/模式映像概念模式是一個(gè)全局模式,外模式是用戶的局部模式。一個(gè)概念模式中可以定義多個(gè)外模式,而每個(gè)外模式是概念模式的一個(gè)基本視圖外模式/模式映像8.2
數(shù)據(jù)模型1.概念模型的相關(guān)概念8.2.1數(shù)據(jù)模型中的基本概念實(shí)體屬性實(shí)體型和實(shí)體集實(shí)體(Entity)指客觀存在且可以相互區(qū)別的事物。它可以是具體的,如一個(gè)學(xué)生、一棵樹(shù);也可以是抽象的概念或聯(lián)系,如比賽活動(dòng)、學(xué)生與成績(jī)的關(guān)系等。實(shí)體用類型(Type)和值(Value)表示,如學(xué)生是一個(gè)實(shí)體,具體的學(xué)生王明、張立是實(shí)體值屬性是指描述實(shí)體的某一方面的特性。一個(gè)實(shí)體可以由若干個(gè)屬性來(lái)描述。例如,學(xué)生實(shí)體可以由學(xué)號(hào)、姓名、性別等屬性組成。每個(gè)屬性都有一個(gè)值,值的類型可以是整數(shù)、實(shí)數(shù)或字符型。屬性用類型和值表示,如學(xué)號(hào)、姓名、年齡是屬性的類型,08012001、張三、19是屬性的值。實(shí)體可以用型和值來(lái)表示。實(shí)體型是屬性的集合。例如,反映一個(gè)學(xué)生全部特征的所有屬性之和,就是學(xué)生這個(gè)實(shí)體的型。將這些屬性落實(shí)到某個(gè)學(xué)生身上而得到的所有數(shù)據(jù)就是實(shí)體的值。同類型的實(shí)體的集合稱為實(shí)體集,如全班學(xué)生就是一個(gè)實(shí)體集8.2.1數(shù)據(jù)模型中的基本概念碼域聯(lián)系碼是指能唯一標(biāo)識(shí)實(shí)體的屬性或?qū)傩约?,如學(xué)生的學(xué)號(hào)屬性域是指屬性的取值范圍,如性別的域?yàn)椤澳小焙汀芭?,成?jī)的域?yàn)?~100現(xiàn)實(shí)世界的事物和事物之間總是相互聯(lián)系的,這些聯(lián)系在信息世界中就反映為實(shí)體內(nèi)部或者實(shí)體之間的聯(lián)系。實(shí)體內(nèi)部的聯(lián)系是指組成實(shí)體的各屬性之間的聯(lián)系;實(shí)體之間的聯(lián)系是指不同實(shí)體集之間的聯(lián)系,實(shí)體之間的聯(lián)系通常有一對(duì)一、一對(duì)多和多對(duì)多3種①一對(duì)一聯(lián)系(1:1)。如果實(shí)體集X中的任一實(shí)體至多對(duì)應(yīng)實(shí)體集Y中的唯一實(shí)體,反之亦然,則稱X與Y是一對(duì)一聯(lián)系。例如,一個(gè)班只能有一個(gè)班長(zhǎng),而一個(gè)班長(zhǎng)只能屬于一個(gè)班,則班長(zhǎng)和班之間具有一對(duì)一聯(lián)系。②一對(duì)多聯(lián)系(1:n)。如果實(shí)體集X中至少有一個(gè)實(shí)體對(duì)應(yīng)實(shí)體集Y中一個(gè)以上的實(shí)體,且Y中任一實(shí)體至少對(duì)應(yīng)X中的一個(gè)實(shí)體,則稱X對(duì)Y是一對(duì)多聯(lián)系。例如,一個(gè)班對(duì)應(yīng)多個(gè)學(xué)生,而一個(gè)學(xué)生只屬于一個(gè)班,則班與學(xué)生之間具有一對(duì)多聯(lián)系。③多對(duì)多聯(lián)系(m:n)。如果實(shí)體集X中至少有一個(gè)實(shí)體對(duì)應(yīng)實(shí)體集Y中一個(gè)以上的實(shí)體,且Y中也至少有一個(gè)實(shí)體對(duì)應(yīng)X中一個(gè)以上的實(shí)體,則稱X與Y是多對(duì)多聯(lián)系。例如,一個(gè)學(xué)生可以學(xué)習(xí)多門(mén)課程,而一門(mén)課程又可以由多個(gè)學(xué)生來(lái)學(xué)習(xí),則學(xué)生與課程之間具有多對(duì)多聯(lián)系。8.2.1數(shù)據(jù)模型中的基本概念2.E-R圖概念模型是對(duì)信息世界建模的,所以概念模型應(yīng)該能夠方便、準(zhǔn)確地表示上述信息世界中的常用概念。概念模型的表示方法很多,最常用的是實(shí)體-聯(lián)系方法(Entity-Relationshipapproach)。該方法用E-R圖來(lái)描述現(xiàn)實(shí)世界的概念模型。E-R圖提供了表示實(shí)體型、屬性和聯(lián)系的方法,可以方便地轉(zhuǎn)換成表的邏輯結(jié)構(gòu)。構(gòu)成E-R圖的基本要素是實(shí)體、屬性和聯(lián)系,E-R圖的表示符號(hào)如圖所示。①實(shí)體:用矩形表示實(shí)體集,在矩形內(nèi)寫(xiě)上該實(shí)體集的名字。②屬性:用橢圓形表示屬性,在橢圓形內(nèi)寫(xiě)上該屬性的名稱。③聯(lián)系:用菱形表示聯(lián)系,在菱形內(nèi)寫(xiě)上聯(lián)系名。④連線:用來(lái)連接實(shí)體和各個(gè)屬性以及實(shí)體和聯(lián)系,在連接聯(lián)系時(shí),應(yīng)同時(shí)在直線上注明聯(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ù)庫(kù)的組成對(duì)象以及對(duì)象之間的聯(lián)系。數(shù)據(jù)結(jié)構(gòu)是所描述的對(duì)象類型的集合,是對(duì)系統(tǒng)靜態(tài)特性的描述。因?yàn)閿?shù)據(jù)結(jié)構(gòu)是刻畫(huà)一個(gè)數(shù)據(jù)模型性質(zhì)最重要的方面,因此,在數(shù)據(jù)庫(kù)系統(tǒng)中,按照數(shù)據(jù)結(jié)構(gòu)的類型來(lái)命名數(shù)據(jù)模型,如層次模型、網(wǎng)狀模型、關(guān)系模型等。②數(shù)據(jù)操作是指對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象的實(shí)例允許執(zhí)行的操作的集合,是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。數(shù)據(jù)庫(kù)主要有檢索和更新(插入、刪除、修改)兩大類操作。數(shù)據(jù)模型必須定義這些操作的確切含義、操作符號(hào)、操作規(guī)則以及實(shí)現(xiàn)操作的語(yǔ)言。③數(shù)據(jù)約束條件是一組完整性規(guī)則的集合。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫(kù)狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效、相容。數(shù)據(jù)模型應(yīng)該反映和規(guī)定其必須遵守的基本的和通用的完整性約束條件。8.2.2數(shù)據(jù)模型的組成要素層次模型網(wǎng)狀模型關(guān)系模型常見(jiàn)的數(shù)據(jù)模型關(guān)系模型中的關(guān)系是一張由行和列組成的二維表。①允許一個(gè)以上節(jié)點(diǎn)沒(méi)有雙親。②一個(gè)節(jié)點(diǎn)可以有多于一個(gè)的雙親節(jié)點(diǎn)。①有且只有一個(gè)節(jié)點(diǎn)沒(méi)有雙親節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)稱為根節(jié)點(diǎn)。②根以外的其他節(jié)點(diǎn)有且只有一個(gè)雙親節(jié)點(diǎn)。8.2.3常見(jiàn)的數(shù)據(jù)模型8.3
關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)在關(guān)系數(shù)據(jù)庫(kù)中,實(shí)體以及實(shí)體間的聯(lián)系都由單一的結(jié)構(gòu)類型來(lái)表示,這種邏輯結(jié)構(gòu)是一張二維表。。8.3.1關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)概述選課系統(tǒng)中學(xué)生-課程-老師實(shí)體及其之間聯(lián)系的E-R圖在關(guān)系數(shù)據(jù)庫(kù)中,實(shí)體以及實(shí)體間的聯(lián)系都由單一的結(jié)構(gòu)類型來(lái)表示,這種邏輯結(jié)構(gòu)是一張二維表。。8.3.1關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)概述按照數(shù)據(jù)模型的三個(gè)要素,關(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)非常簡(jiǎn)單,只包含單一的數(shù)據(jù)結(jié)構(gòu)—關(guān)系。在用戶看來(lái),關(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ī)則是對(duì)關(guān)系的某種約束條件。為了保持?jǐn)?shù)據(jù)庫(kù)中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)與更新操作必須遵循三類完整性規(guī)則,即實(shí)體完整性、參照完整性和用戶自定義完整性。8.3.2關(guān)系模型①關(guān)系(Relation):一個(gè)關(guān)系對(duì)應(yīng)通常所說(shuō)的一張表。通常將一個(gè)沒(méi)有重復(fù)行、重復(fù)列的二維表看成一個(gè)關(guān)系,每個(gè)關(guān)系都有一個(gè)關(guān)系名。②元組(Tuple):表中的一行即為一個(gè)元組。③屬性(Attribute):表中的一列即為一個(gè)屬性,每個(gè)屬性的名稱就是屬性名。④主關(guān)鍵字(Key):表中的某個(gè)屬性或?qū)傩越M,如果它可以唯一確定一個(gè)元組,則可成為本關(guān)系的主關(guān)鍵字。⑤域(Domain):屬性的取值范圍,如人的年齡一般在1~80歲,性別的域是(男,女),系別的域是一個(gè)學(xué)校所有系名的集合。⑥分量:元組中的一個(gè)屬性值。⑦關(guān)系模式:對(duì)關(guān)系的描述,一般
表示為關(guān)系名(屬性1,屬性2,……,屬性n)。8.3.2關(guān)系模型關(guān)系代數(shù)是一種抽象的查詢語(yǔ)言,它用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢。關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系。關(guān)系代數(shù)用到的運(yùn)算有以下兩類。1.傳統(tǒng)的集合運(yùn)算
傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,包括并、差、交、廣義笛卡兒積4種運(yùn)算。參加集合操作的各結(jié)果表的列數(shù)必須相同,對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同。如圖所示分別為具有三個(gè)屬性列的關(guān)系R和S。8.3.3關(guān)系代數(shù)(1)并(Union)設(shè)關(guān)系R和關(guān)系S具有相同的目n(即兩個(gè)關(guān)系都有n個(gè)屬性),且相應(yīng)的屬性取自同一個(gè)域,則關(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)的屬性取自同一個(gè)域,則關(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)的屬性取自同一個(gè)域,則關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成,仍為n目關(guān)系,如圖(c)所示。(4)廣義笛卡兒積(Extendedcartesianproduct)這里的笛卡兒積嚴(yán)格地講是廣義笛卡兒積(ExtendedCartesianProduct)。在不會(huì)出現(xiàn)混淆的情況下廣義笛卡兒積也稱為笛卡兒積。8.3.3關(guān)系代數(shù)2.專門(mén)的關(guān)系運(yùn)算專門(mén)的關(guān)系運(yùn)算包括選擇、投影、連接等。以如圖所示的兩張表為例。8.3.3關(guān)系代數(shù)(1)選擇(Selection)選擇運(yùn)算時(shí)根據(jù)給定的條件,從一個(gè)關(guān)系中選出一個(gè)或多個(gè)元組(表中的行)。被選出的行組成一個(gè)新關(guān)系,這個(gè)新關(guān)系是原關(guān)系的一個(gè)子集。例如,從學(xué)生信息表中選取“性別”為“男”的記錄,組成新關(guān)系,如圖(a)所示。(2)投影(Projection)投影運(yùn)算就是從一個(gè)關(guān)系中選擇某些特定的屬性(表中的列)重新排列組成一個(gè)新關(guān)系,投影后屬性減少,新關(guān)系可能有一些行具有相同的值,此時(shí)重復(fù)的行將會(huì)被刪除。例如,從學(xué)生信息表中選取“學(xué)號(hào)”“姓名”“院系”屬性,組成新關(guān)系,如圖(b)所示。8.3.3關(guān)系代數(shù)(3)連接(Join)連接運(yùn)算是從兩個(gè)或多個(gè)關(guān)系中選取屬性間滿足一定條件的元組,組成一個(gè)新關(guān)系。例如,將學(xué)生信息表和選課信息表按條件(學(xué)號(hào)相同)進(jìn)行連接,產(chǎn)生一個(gè)新關(guān)系,如圖(c)所示,其中“學(xué)號(hào)1”來(lái)自學(xué)生信息表,“學(xué)號(hào)2”來(lái)自選課信息表??梢钥闯觯B接運(yùn)算其實(shí)就是從兩個(gè)關(guān)系的笛卡兒積中選取屬性間滿足一定條件的元組。8.3.3關(guān)系代數(shù)8.4
關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL
SQL是因?yàn)樗且粋€(gè)綜合的、功能強(qiáng)大又簡(jiǎn)單易學(xué)的語(yǔ)言。其主要特點(diǎn)如下:8.4.1SQL的特點(diǎn)124533.面向集合的操作方式5.語(yǔ)言簡(jiǎn)潔,易學(xué)易用2.高度非過(guò)程化4.以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式1.SQL風(fēng)格統(tǒng)一8.4.1SQL的特點(diǎn)
SQL功能極強(qiáng),但由于設(shè)計(jì)巧妙,語(yǔ)言十分簡(jiǎn)潔,完成數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制的核心功能只用9個(gè)動(dòng)詞,如表所示。SQL語(yǔ)言語(yǔ)法簡(jiǎn)單,接近英語(yǔ)口語(yǔ),因此容易學(xué)習(xí)和使用。8.4.1SQL的特點(diǎn)以學(xué)生選課數(shù)據(jù)庫(kù)為例來(lái)講解SQL的數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢語(yǔ)句。該數(shù)據(jù)庫(kù)包含以下3張表。①學(xué)生信息表:Student(Sno,Sname,Ssex,Sbday,Sdept)其中,Sno表示學(xué)號(hào),字符型,長(zhǎng)度為4;Sname表示姓名,字符型,長(zhǎng)度為16;Ssex表示性別,字符型,長(zhǎng)度為1;Sbday表示出生日期,日期型;Sdept表示學(xué)院,字符型,長(zhǎng)度為16。②課程信息表:Course(Cno,Cname,Ccredit)其中,Cno表示課程編號(hào),字符型,長(zhǎng)度為4;Cname表示課程名,字符型,長(zhǎng)度為16;Ccredit表示學(xué)分,字符型,長(zhǎng)度為2③選課信息表:SC(Sno,Cno,Grade),其中Sno表示學(xué)號(hào);Cno表示課程號(hào);Grade表示成績(jī),短整數(shù)。加下畫(huà)線的屬性表示關(guān)系的主碼。1.定義基本表SQL語(yǔ)言使用CREATETABLE語(yǔ)句定義基本表,語(yǔ)句的一般格式:CREATETABLE<基本表名>(<列名1><數(shù)據(jù)類型1>[列級(jí)完整性約束條件1][,<列名2><數(shù)據(jù)類型2>[列級(jí)完整性約束條件2]]……[,<表級(jí)完整性約束條件>])SQL提供的數(shù)據(jù)類型很
多,常用的數(shù)據(jù)類型如
表所示。8.4.2數(shù)據(jù)定義2.修改基本表隨著應(yīng)用環(huán)境和應(yīng)用需求的變化,
有時(shí)需要修改已建立的基本表,修
改基本表的ALTER語(yǔ)句的格式:3.刪除基本表當(dāng)某個(gè)基本表不再需要時(shí),可以使用
DROPTABLE語(yǔ)句刪除它。該語(yǔ)句的格
式:8.2.1數(shù)據(jù)模型中的基本概念數(shù)據(jù)操縱就是對(duì)表中的記錄進(jìn)行的操作,包括記錄的插入(INSERT)、更新(UPDATE)和刪除(DELETE)。1.插入元組的一般格式2.更新數(shù)據(jù)(修改數(shù)據(jù))的一般格式3.刪除數(shù)據(jù)的一般格式8.4.3數(shù)據(jù)操縱數(shù)據(jù)查詢是數(shù)據(jù)庫(kù)的核心操作。SQL提供SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢,該語(yǔ)句的格式:說(shuō)明:整個(gè)SELECT語(yǔ)句的作用是根據(jù)WHERE子句的條件表達(dá)式,從FROM子句指定的表中找出滿足條件的元組,再按SELECT子句中的目標(biāo)表達(dá)式選出指定的屬性值形成結(jié)果表。如果有GROUPBY子句,則將結(jié)果按<列名1>的值進(jìn)行分組,該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組中使用聚集函數(shù)。如果GROUPBY子句帶HAVING短語(yǔ),則只有滿足指定條件的分組才能輸出。如果有ORDERBY子句,則結(jié)果還要按<列名2>的值升序或降序排序。8.4.4數(shù)據(jù)查詢【例8-3】使用SELECT語(yǔ)句從Student、Course和SC表查詢相關(guān)信息。①查詢“張鵬”同學(xué)的基本信息。SELECT*FROMStudentWHERESname=“張鵬”說(shuō)明:這里的“*”表示選擇所有的屬性。②在Student表中查詢所有計(jì)算機(jī)學(xué)院的學(xué)生的學(xué)號(hào)、姓名。SELECTSno,SnameFROMStudentWHERESdept=“計(jì)算機(jī)學(xué)院”③查詢所有姓張的同學(xué)的信息。SELECT*FROMStudentWHERESnameLIKE“張%”說(shuō)明:謂詞LIKE可以用來(lái)進(jìn)行字符串的匹配,也就是用%(百分號(hào))代表任意長(zhǎng)度的字符串,用_(下畫(huà)線)代表任意一個(gè)字符。例如,“張%”表示姓張的人,“張_”表示姓張且名字只有兩個(gè)字的人。8.4.4數(shù)據(jù)查詢④查詢所有選修了“C01”課程的學(xué)生的學(xué)號(hào)、姓名和成績(jī)。SELECTStudent.Sno,Sname,GradeFROMStudent,SCWHEREStudent.Sno=SC.SnoandCno=‘C01’學(xué)生的學(xué)號(hào)、姓名信息存放在Student表中,而選課信息存放在SC表中,所以需要在兩張表中進(jìn)行查詢。這兩張表之間的聯(lián)系是通過(guò)公共屬性Sno實(shí)現(xiàn)的。由于Sno屬性在兩張表中都存在,為了避免混淆,需要在屬性名前加上表名前綴,即Student.Sno和SC.Sno來(lái)表示。說(shuō)明:WHERE子句中可以包含查詢條件和連接條件。⑤統(tǒng)計(jì)每個(gè)學(xué)院的學(xué)生人數(shù)。SELECTsdept,COUNT(*)FROMstudentGROUPBYsdept說(shuō)明:GROUPBY分組子句將查詢結(jié)果按某一列或多列的值分組,值相等的為一組。例如,在本例中按院系分組,院系值相同的為一組。GROUPBY分組后,SELECT子句中一般只會(huì)出現(xiàn)分組字段和聚集函數(shù)。8.4.4數(shù)據(jù)查詢常見(jiàn)的聚集函數(shù)如表所示注意:WHERE子句中不能用聚集函數(shù)作為條件表達(dá)式。如果分組后還需要按一定條件對(duì)分組進(jìn)行篩選,最終只輸出滿足指定條件的分組,可以使用HAVING短語(yǔ)指定篩選條件。例如,在本例中,需要查找學(xué)院人數(shù)在50以上的學(xué)院及人數(shù),可以將SQL語(yǔ)句修改為:SELECTsdept,COUNT(*)FROMstudentGROUPBYsdeptHAVINGCOUNT(*)>50先對(duì)Student表中的記錄按sdept分組,然后篩選出記錄數(shù)大于50條的分組,將sdept和COUNT(*)的值輸出。WHERE子句與HAVING短語(yǔ)的區(qū)別在于,WHERE子句作用于表,從中選擇滿足條件的元組;HAVING短語(yǔ)作用于組,從中選擇滿足條件的組。8.4.4數(shù)據(jù)查詢⑥查詢所有考試成績(jī)?yōu)镹ULL的信息。SELECT*FROMSCWHEREGradeISNULL說(shuō)明:如果查詢涉及空值,不能用等號(hào),要使用ISNULL或ISNOTNULL。⑦查詢選修了C01課程的學(xué)生的學(xué)號(hào)和成績(jī),并按成績(jī)降序排列。SELECTSno,GradeFROMSCWHERECno=“C01”O(jiān)RDERBYGradeDESC說(shuō)明:ORDERBY子句對(duì)查詢結(jié)果按照一個(gè)或多個(gè)屬性列的升序(ASC)或降序(DESC)排列,默認(rèn)為升序。對(duì)于空值,排序時(shí)顯示的次序由具體系統(tǒng)實(shí)現(xiàn)來(lái)決定。8.4.4數(shù)據(jù)查詢8.5
關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)
關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造(設(shè)計(jì))優(yōu)化的數(shù)據(jù)庫(kù)邏輯模式和物理結(jié)構(gòu)并據(jù)此建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求,包括信息管理需求和數(shù)據(jù)操作需求。按照結(jié)構(gòu)化系統(tǒng)設(shè)計(jì)的方法,考慮數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)開(kāi)發(fā)全過(guò)程,將關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)分為6個(gè)階段。
8.5關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)8.6
Python數(shù)據(jù)庫(kù)操作SQLite3數(shù)據(jù)庫(kù)是一款非常小巧輕量級(jí)的嵌入式開(kāi)源數(shù)據(jù)庫(kù)軟件。由于其方便快捷,從Python2.5開(kāi)始SQLite3就成了Python語(yǔ)言的標(biāo)準(zhǔn)模塊了,這也是Python中唯一一個(gè)數(shù)據(jù)庫(kù)接口類模塊,適合用戶開(kāi)發(fā)小型數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的,它自然會(huì)對(duì)數(shù)據(jù)的類型進(jìn)行劃分,SQLite3中的數(shù)據(jù)類型如表所示。8.6.1SQLite3數(shù)據(jù)庫(kù)簡(jiǎn)介
SQLite3數(shù)據(jù)庫(kù)實(shí)現(xiàn)了自給自足的、無(wú)服務(wù)
器的、零配置的、事務(wù)性的SQL數(shù)據(jù)庫(kù)引擎,
通常在小型應(yīng)用,或者嵌入式開(kāi)發(fā)中使用較多。Python連接SQLite3數(shù)據(jù)庫(kù)的過(guò)程如圖所示。1.導(dǎo)入SQLite3模塊
由于Python2.5以后的安裝包已經(jīng)自帶
SQLite3的軟件包,所以用一行語(yǔ)句直接導(dǎo)入
即可,其語(yǔ)法格式:8.6.2Python連接SQLite3數(shù)據(jù)庫(kù)流程2.打開(kāi)(連接)數(shù)據(jù)庫(kù),建立數(shù)據(jù)庫(kù)連接使用connect()方法建立一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,其語(yǔ)法格式:這里的參數(shù)是指定要打開(kāi)的數(shù)據(jù)庫(kù)文件。在Python中,使用SQLite3創(chuàng)建數(shù)據(jù)庫(kù)的連接,當(dāng)指定的數(shù)據(jù)庫(kù)文件不存在時(shí),連接對(duì)象會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)文件;如果數(shù)據(jù)庫(kù)文件已經(jīng)存在,則連接對(duì)象不會(huì)再創(chuàng)建數(shù)據(jù)庫(kù)文件,而是直接打開(kāi)該數(shù)據(jù)庫(kù)文件。例如,conn=sqlite3.connect(“E:\\Test.db”)會(huì)打開(kāi)E盤(pán)下的Test數(shù)據(jù)庫(kù),如果這個(gè)數(shù)據(jù)庫(kù)不存在,則新建一個(gè)數(shù)據(jù)庫(kù)。connect()方法返回con對(duì)象,就是數(shù)據(jù)庫(kù)鏈接對(duì)象,它提供了如表8-6所示的連接對(duì)象的方法.8.6.2Python連接SQLite3數(shù)據(jù)庫(kù)流程3.創(chuàng)建游標(biāo)對(duì)象調(diào)用連接對(duì)象的cursor()方法可以得到一個(gè)游標(biāo)對(duì)象??梢园延螛?biāo)理解為一個(gè)指針。游標(biāo)如圖8-18所示,圖中的指針就是游標(biāo)cursor,假設(shè)右邊的表就是查詢到的結(jié)果,那么可以通過(guò)游標(biāo)掃描SQL查詢并檢查結(jié)果。定義游標(biāo)的語(yǔ)法格式:游標(biāo)對(duì)象有多種方法支持?jǐn)?shù)據(jù)庫(kù)操作,如表所示。8.6.2Python連接SQLite3數(shù)據(jù)庫(kù)流程4.使用游標(biāo)對(duì)象的execute()方法執(zhí)行SQL命令調(diào)用游標(biāo)對(duì)象的execute()方法執(zhí)行SQL命令,其語(yǔ)法格式:這里的參數(shù)是一個(gè)SQL語(yǔ)句。根據(jù)執(zhí)行的SQL語(yǔ)句類型的不同,可以分為以下兩種情況。(1)數(shù)據(jù)定義和操縱。數(shù)據(jù)定義語(yǔ)句包括新建表、刪除表、修改表結(jié)構(gòu)操作(CREATE、DROP、ALTER),數(shù)據(jù)操
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- AI診斷系統(tǒng)優(yōu)化醫(yī)療服務(wù)流程的新趨勢(shì)
- 醫(yī)療行業(yè)跨機(jī)構(gòu)數(shù)據(jù)安全保護(hù)的策略研究
- 2025年司機(jī)年終工作總結(jié)模版
- AI技術(shù)在輔助藥物研發(fā)中的潛在作用和責(zé)任分析
- 醫(yī)療產(chǎn)品推廣的動(dòng)畫(huà)效果運(yùn)用
- 協(xié)會(huì)年會(huì)發(fā)言稿模版
- 關(guān)注社會(huì)公共衛(wèi)生安全定期執(zhí)行醫(yī)療保健及預(yù)防策略研究
- 醫(yī)療機(jī)構(gòu)管理中的信息透明度與隱私保護(hù)探討
- 保時(shí)捷售車合同范例
- 從風(fēng)險(xiǎn)控制角度談企業(yè)級(jí)區(qū)塊鏈的合規(guī)和安全保障
- 2025森林消防考試試題及答案
- 武漢四調(diào)高中數(shù)學(xué)試卷及答案
- 液壓與氣壓傳動(dòng)(第5版)課件:氣動(dòng)控制閥及基本回路
- 2025年國(guó)家保安員試考試題庫(kù)(附答案)
- 大部分分校:地域文化形考任務(wù)三-國(guó)開(kāi)(CQ)-國(guó)開(kāi)期末復(fù)習(xí)資料
- 超星爾雅學(xué)習(xí)通《當(dāng)代大學(xué)生國(guó)家安全教育》章節(jié)測(cè)試答案
- 隧道反坡排水方案
- 民用航空行業(yè)標(biāo)準(zhǔn)(PPT)
- 班組長(zhǎng)績(jī)效考核表
- 畢業(yè)論文三相電壓型PWM整流器的研究
- 美國(guó)岡氏X光判讀之骨盆定位
評(píng)論
0/150
提交評(píng)論