版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο笈c數(shù)據(jù)庫技術(shù)
O-OandDBMS機電學(xué)院楊靜萍2013-2014(1)面向?qū)ο箨P(guān)系數(shù)據(jù)庫數(shù)據(jù)庫概述實體—關(guān)系(ER)模型關(guān)系數(shù)據(jù)庫概述對象關(guān)系數(shù)據(jù)庫數(shù)據(jù)倉庫技術(shù)數(shù)據(jù)庫概述數(shù)據(jù)庫的概念數(shù)據(jù)庫的由來數(shù)據(jù)庫的發(fā)展數(shù)據(jù)庫的體系結(jié)構(gòu)數(shù)據(jù)模型數(shù)據(jù)庫系統(tǒng)相關(guān)概念數(shù)據(jù)庫與新技術(shù)的發(fā)展數(shù)據(jù)庫的概念數(shù)據(jù)庫是長期存儲在計算機內(nèi)有組織的共享的數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲存。早在60年代,數(shù)據(jù)庫技術(shù)作為現(xiàn)代信息系統(tǒng)基礎(chǔ)的一門軟件學(xué)科便應(yīng)運而生了?,F(xiàn)在,數(shù)據(jù)庫技術(shù)已成為計算機領(lǐng)域中最重要的技術(shù)之一,它是軟件學(xué)科中一個獨立的分支。21世紀(jì)是“知識爆炸”的信息社會,如何組織和利用這些龐大的信息和知識已成為衡量一個國家科學(xué)技術(shù)水平高低的重要標(biāo)志,多年來在美國等軟件業(yè)發(fā)達國家,各種數(shù)據(jù)庫管理系統(tǒng)(DBMS)的年銷售額在各大類軟件中居于第二位。在各行業(yè)中,數(shù)據(jù)庫技術(shù)是應(yīng)用最為廣泛的軟件技術(shù)之一。數(shù)據(jù)庫的由來紙制系統(tǒng)文件系統(tǒng)數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)的存儲可分為以下幾個階段:
~1950s中期科學(xué)計算卡片、紙帶程序1950s后期~1960s中后期科學(xué)計算磁盤、磁鼓程序+文件1960s中后期~科學(xué)計算磁盤、磁鼓程序+數(shù)據(jù)庫數(shù)據(jù)庫的發(fā)展數(shù)據(jù)庫發(fā)展的初級階段:網(wǎng)狀/層次數(shù)據(jù)模型Honeywell(阿波羅)/CODASYL/IBM
數(shù)據(jù)庫發(fā)展的中級階段關(guān)系數(shù)據(jù)模型IBM/Oracle
數(shù)據(jù)庫發(fā)展的高級階段對象—關(guān)系型數(shù)據(jù)模型Oracle
數(shù)據(jù)庫系統(tǒng)發(fā)展的三個階段數(shù)據(jù)庫的體系結(jié)構(gòu)內(nèi)模式Internalschema模式Logicalschema外模式Externalschema三級體系結(jié)構(gòu)模式:即數(shù)據(jù)庫的結(jié)構(gòu)(型)映像映像物理獨立性邏輯獨立性外模式又稱為用戶模式,是數(shù)據(jù)庫用戶和數(shù)據(jù)庫系統(tǒng)的接口,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是數(shù)據(jù)庫用戶可以看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。外模式通常是模式的子集。一個數(shù)據(jù)庫通常都有多個外模式。一個應(yīng)用程序只能使用一個外模式,但同一外模式可為多個應(yīng)用程序所用。保證數(shù)據(jù)庫安全性的一個有力措施。內(nèi)模式又稱為存儲模式,是數(shù)據(jù)庫物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。一個數(shù)據(jù)庫只有一個內(nèi)模式。內(nèi)模式并不涉及物理記錄,也不涉及硬件設(shè)備。映象是一種對應(yīng)規(guī)則,說明映象雙方如何進行轉(zhuǎn)換外模式/模式映像模式/內(nèi)模式映像
三級模式間的兩層映象保證數(shù)據(jù)具有較高的邏輯獨立性和物理獨立性一、外模式/模式映象(定義在外模式描述中)作用:把描述局部邏輯結(jié)構(gòu)的外模式與描述全局邏輯結(jié)構(gòu)的模式聯(lián)系起來。當(dāng)模式改變時,只要對外模式/模式映象做相應(yīng)的改變,使外模式保持不變,則以外模式為依據(jù)的應(yīng)用程序不受影響,從而保證了數(shù)據(jù)與程序之間的邏輯獨立性,也就是數(shù)據(jù)的邏輯獨立性。二、模式/內(nèi)模式映象(定義在模式描述中)作用:把描述全局邏輯結(jié)構(gòu)的模式與描述物理結(jié)構(gòu)的內(nèi)模式聯(lián)系起來。當(dāng)內(nèi)模式改變時,比如存儲設(shè)備或存儲方式有所改變,只要模式/內(nèi)模式映象做相應(yīng)的改變,使模式保持不變,則應(yīng)用程序就不受影響,從而保證了數(shù)據(jù)與程序之間的物理獨立性。二級映象功能與數(shù)據(jù)獨立性數(shù)據(jù)庫的二級映像保證了數(shù)據(jù)庫外模式的穩(wěn)定性,從而從底層保證了應(yīng)用程序的穩(wěn)定性數(shù)據(jù)與程序之間的獨立性,使得數(shù)據(jù)的定義和描述可以從應(yīng)用程序中分離出去。用戶不必考慮存取路徑等細(xì)節(jié),簡化了應(yīng)用程序的編制,減少了應(yīng)用程序的維護和修改。數(shù)據(jù)模型現(xiàn)實世界概念數(shù)據(jù)模型邏輯數(shù)據(jù)模型獨立于任何計算機系統(tǒng)實現(xiàn)的,完全不涉及信息在計算機系統(tǒng)中的表示,只是用來描述某個特定組織所關(guān)心的信息結(jié)構(gòu),如實體聯(lián)系(ER<P.P.Chen,1976>)模型。一種直接面向數(shù)據(jù)庫中數(shù)據(jù)的邏輯結(jié)構(gòu),用來描述存儲數(shù)據(jù)的容器以及在該容器中存儲和檢索數(shù)據(jù)的過程,例如:關(guān)系/網(wǎng)狀/層次/面向?qū)ο竽P偷?。?shù)據(jù)結(jié)構(gòu)數(shù)據(jù)操作數(shù)據(jù)完整性定義實體類型和實體間聯(lián)系在計算機中的表達和實現(xiàn);定義對數(shù)據(jù)庫的檢索和更新(包括插入、刪除、修改)兩類操作;定義數(shù)據(jù)及其聯(lián)系應(yīng)具有的制約和依賴規(guī)則;物理模型DBMS的任務(wù),普通用戶不必考慮物理級的細(xì)節(jié)層次模型(HierarchicalModel)用樹形結(jié)構(gòu)來表示實體及實體之間聯(lián)系的數(shù)據(jù)模型。樹的結(jié)點是記錄類型,記錄之間的聯(lián)系通過指針實現(xiàn)。其主要特點有兩個:①樹的最高結(jié)點—根結(jié)點,只有一個,該結(jié)點沒有雙親結(jié)點;②根以外的其他結(jié)點都與一個且只與一個父結(jié)點相連。例如1968年IBM公司研制推的IMS數(shù)據(jù)庫管理系統(tǒng)是第一個基于層次模型的大型商用數(shù)據(jù)庫管理系統(tǒng)。
網(wǎng)狀模型(NetworkModel)把用有向圖結(jié)構(gòu)表示實體類型及實體之間聯(lián)系的模型叫網(wǎng)狀模型,有向圖的結(jié)點是記錄類型,記錄之間的聯(lián)系是通過指針來實現(xiàn)的,網(wǎng)狀模型和層次模型在本質(zhì)上是一樣的。例如1969年,CODASYL組織(ConferenceOnDataSystemLanguage,數(shù)據(jù)庫系統(tǒng)語言協(xié)會)推出的DBTG系統(tǒng),又稱CODASYL系統(tǒng),奠定了網(wǎng)狀數(shù)據(jù)庫系統(tǒng)的基本概念、方法和技術(shù)。實際的基于網(wǎng)狀模型的數(shù)據(jù)庫系統(tǒng)有CullinetSoftwareInc公司的IDMS、Univac公司的DMS1100、Honeywell公司的IDS/2、HP公司的IMAGE。
系老師課程專業(yè)學(xué)生成績聘任設(shè)置任課開設(shè)招收被選選課關(guān)系模型(RelationalModel)1970年由美國IBM公司SanJose研究室的研究員E.F.Codd提出的一種數(shù)據(jù)模型,該模型用二維表格來表示實體和實體間聯(lián)系,稱為關(guān)系模型(RelationalModel)。在層次模型和網(wǎng)狀模型中,文件中存放的是數(shù)據(jù),各文件之間的聯(lián)系是通過指針來實現(xiàn)。關(guān)系模型中,文件存放兩類數(shù)據(jù):實體、實體間的聯(lián)系。例如典型的關(guān)系數(shù)據(jù)庫系統(tǒng)有ORACLE、SYBASE、DB/2、COBASE、PBASE、EasyBase、DM/2、OpenBase。面向?qū)ο竽P停∣OModel)面向?qū)ο蟮母拍钤缭?968年就出現(xiàn)了,現(xiàn)已使用在數(shù)據(jù)庫技術(shù)中。面向?qū)ο竽P椭凶罨镜母拍钍菍ο螅╫bject)和類(class)?,F(xiàn)實世界中存在著許多復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如CAD數(shù)據(jù)、圖形數(shù)據(jù)、嵌套遞歸數(shù)據(jù)等,這樣的數(shù)據(jù)結(jié)構(gòu)關(guān)系模型不能表達實現(xiàn),但面向?qū)ο竽P蛥s可以方便地表示。
數(shù)據(jù)庫系統(tǒng)相關(guān)概念數(shù)據(jù)(Data)、信息(Information)、數(shù)據(jù)處理(DataProcessing)數(shù)據(jù)庫(Database,簡記為DB)數(shù)據(jù)庫管理系統(tǒng)(DatabaseManagementSystem,簡記為DBMS)數(shù)據(jù)庫系統(tǒng)(DatabaseSystem,簡記為DBS)數(shù)據(jù)庫與新技術(shù)的發(fā)展新技術(shù)的進展與數(shù)據(jù)庫的發(fā)展密不可分Web數(shù)據(jù)庫技術(shù)數(shù)據(jù)挖掘(DataMining)商業(yè)智能(BusinessIntelligence)WAP/更廣泛無線上網(wǎng)技術(shù)801.11802.163G…數(shù)據(jù)、信息、數(shù)據(jù)處理數(shù)據(jù)(Data):現(xiàn)實中的事物的描述都可以稱為數(shù)據(jù),事物可以用數(shù)字、文字、圖表、圖像、聲音等來描述。信息(Information):
數(shù)據(jù)經(jīng)過一定的計算
過程得到的新的數(shù)據(jù)。數(shù)據(jù)處理(Dataprocessing):從某些已知的數(shù)據(jù)出發(fā),推導(dǎo)加工出一些新的數(shù)據(jù)(即信息),數(shù)據(jù)處理是完成數(shù)據(jù)轉(zhuǎn)換成信息的方法,包括數(shù)據(jù)的收集、存儲、傳遞、加工、統(tǒng)計管理、輸出等過程。數(shù)據(jù)、數(shù)據(jù)處理和信息的關(guān)系如圖所示。數(shù)據(jù)處理數(shù)據(jù)信息數(shù)據(jù)庫存儲在磁帶、磁盤、光盤或其他外存介質(zhì)上,按一定結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)對象+數(shù)據(jù)數(shù)據(jù)庫存儲過程(StoredProcedure)表(Table)視圖(View)觸發(fā)器(Trigger)數(shù)據(jù)對象(dataobject)數(shù)據(jù)(data)數(shù)據(jù)庫管理系統(tǒng)
DBMS是用戶與操作系統(tǒng)間的一層(對數(shù)據(jù)進行管理的)系統(tǒng)軟件:數(shù)據(jù)定義功能(DDL:DataDefineLanguage)數(shù)據(jù)操縱功能(DML:DataManipulateLanguage)數(shù)據(jù)庫的運行管理與維護(數(shù)據(jù)庫的建立、數(shù)據(jù)庫的恢復(fù)、數(shù)據(jù)庫的并發(fā)控制、數(shù)據(jù)完整性控制、數(shù)據(jù)安全性控制等)數(shù)據(jù)庫系統(tǒng)DBS是采用數(shù)據(jù)庫技術(shù)的計算機系統(tǒng):數(shù)據(jù)庫(DB);數(shù)據(jù)庫管理系統(tǒng)(DBMS);數(shù)據(jù)庫管理員(DBA);用戶;應(yīng)用程序系統(tǒng);等。用戶用戶用戶應(yīng)用系統(tǒng)應(yīng)用開發(fā)工具數(shù)據(jù)庫管理系統(tǒng)操作系統(tǒng)數(shù)據(jù)庫文件數(shù)據(jù)庫管理員實體—關(guān)系(ER)模型ER模型的相關(guān)概念實體的聯(lián)系ER圖的繪制ER圖到關(guān)系模型設(shè)計的轉(zhuǎn)換ER模型的相關(guān)概念⑴實體(entity):客觀世界中可相互區(qū)別的事物。⑵屬性(attribute)、值(value)和域(domain):分別指實體具有的特性、特性的取值以及取值范圍。一個實體可具有多個屬性,每個屬性有各自的值域。
⑶實體集(entityset):屬性名完全相同實體的集合。⑷碼(key):能惟一標(biāo)識實體的屬性或?qū)傩约袝r也稱為實體標(biāo)識符,或簡稱為鍵。(5)域(domain):屬性的取值范圍。實體的聯(lián)系實體及實體集之間存在的關(guān)聯(lián),也是實體,有自己的屬性。(實例)(1)一對一聯(lián)系(1:1)(2)一對多或多對一的聯(lián)系(1:n)、(n:1)(3)多對多的聯(lián)系(n:m)1:1n:11:mn:m實例圖書館借閱管理系統(tǒng),讀者與圖書的聯(lián)系問題。(1-N?)一位借閱者一次可以借閱多本圖書一本圖書一次只能被一位借閱者借閱在此情況下滿足1-N,可以解決“某本圖書當(dāng)前是否被借出,被誰所借”之類的問題。但如果需求涉及“某本書在2008年被哪些借閱者借過”,1-N能否滿足?實例實例1.1:M-N通過考慮借閱時間等因素:一位借閱者可以借閱多本圖書一本圖書可以借給多位借閱者此聯(lián)系應(yīng)該具有聯(lián)系屬性如“借閱流水號”、“借閱時間”和“歸還時間”等實例實例1.1:結(jié)論聯(lián)系類型應(yīng)由需求,即現(xiàn)實世界的語義來確定不同角度的不同用戶,看問題可能不同,造成沖突實例實例1.2:三元聯(lián)系與三個二元聯(lián)系選課系統(tǒng),一門課程可以由多位教師開設(shè),一個教師可以開設(shè)多門課程,學(xué)生可以選多門課程??梢杂靡粋€三元聯(lián)系表示某位學(xué)生選了某位教師開設(shè)的某門課程選課<學(xué)生,教師,課程>可以用三個二元聯(lián)系:1選課<學(xué)生,課程>,2講授<教師,課程>,3上課<教師,學(xué)生>思考:兩者有何區(qū)別?實例對于三個二元聯(lián)系的語義:選課<學(xué)生,課程>
可知某位學(xué)生選了哪些課程,或某門課程被哪些學(xué)生所選講授<教師,課程>
可知某位教師講了哪些課程,或某門課程由哪些教師所講上課<教師,學(xué)生>
可知某位教師給哪些學(xué)生上了課,或某位同學(xué)上了哪些教師的課實例一個三元聯(lián)系的語義:選課<學(xué)生,教師,課程>
可知某位同學(xué)選了哪些教師所講的哪些課程,或某位教師給哪些學(xué)生講授了哪些課程,或某門課程被哪些教師所教的學(xué)生所選三個二元聯(lián)系的語義在三元聯(lián)系中全有,反之則不然。如:“06010034”號同學(xué)是否選了“王紅”老師上的“C語言”在三個二元聯(lián)系中找不出!實體的聯(lián)系除基本聯(lián)系外,實踐中常遇到isa聯(lián)系和弱實體集聯(lián)系實體集及其子類的表示A與B是兩個實體集,如果B在具有A所具有的全部屬性的基礎(chǔ)上又具有自己的屬性,即B是A的一個子集。稱B為A的子類,A為B的超類(借用面向?qū)ο蟮母拍?,用isa(屬于)聯(lián)系。實例例如,學(xué)生與本科生、研究生的聯(lián)系:學(xué)生isaisa研究生本科生實例研究生和本科生除繼承了學(xué)生的屬性外,還各自具有自己的屬性。isa聯(lián)系實際上反映了超類和子類(supper-classandsubclass)間的聯(lián)系!實體的聯(lián)系弱實體沒有獨立標(biāo)識,依賴于其它實體,需要從其所依賴的強實體借碼來標(biāo)識自己還有兩種情況可能形成弱實體集:實體集B是實體集A的組成部分(形成層次結(jié)構(gòu)),B為弱實體集。鏈接實體是弱實體集。弱實體集B到實體A必然是多對一聯(lián)系。(標(biāo)識依賴聯(lián)系)A應(yīng)為B的碼提供自己的碼。實例例如:學(xué)院與系即是一種層次結(jié)構(gòu),系是弱實體集。如下圖所示:學(xué)院Unitof系ER圖的繪制
bookstitleisbnpagetypeyearpricewriteBooknameidbirthplaceauthorsbegin_dateauthors實體集:用矩形表示聯(lián)系集:菱形表示屬性集:橢圓形表示線段:有向邊代表“1”,無向邊代表“n”注意:聯(lián)系本身也可能有屬性。ER圖到關(guān)系模型設(shè)計的轉(zhuǎn)換bookstitleisbnpageyeartypepriceidauthorsnamebirthplacewriteBookbook(title,isbn,page,type,year,price)author(Id,Name,country,City)writeBook(isbn,authorID,begin_date)1)多對多聯(lián)系集時,關(guān)系的鍵碼是兩個相關(guān)實體集的鍵碼。2)多對一聯(lián)系集時,關(guān)系的鍵碼是“多”基數(shù)實體集的鍵碼。3)一對一聯(lián)系集時,關(guān)系的鍵碼可以是任一個實體集的鍵碼。關(guān)系數(shù)據(jù)庫概述關(guān)系數(shù)據(jù)庫的基本概念基本關(guān)系六性質(zhì)關(guān)系數(shù)據(jù)庫的基本要求關(guān)系的完整性關(guān)系數(shù)據(jù)庫的范式SQL簡介關(guān)系數(shù)據(jù)庫的基本概念關(guān)系(Relation):即表,一個關(guān)系對應(yīng)一張表。元組(Tuple):表中的一行。屬性(Attribute):表中的一列,列的名稱即屬性名。主鍵(Key):表中可唯一確定一個元組的某個屬性組。域(Domain):屬性的取值范圍。分量(Component):元組中的一個屬性值。關(guān)系模式(RelationSchema):對關(guān)系的描述。在關(guān)系模型中,實體以及實體之間的聯(lián)系都用關(guān)系來表示。
基本關(guān)系六性質(zhì)基本關(guān)系六性質(zhì)列是同質(zhì)的;不同列可出自同一個域,每一列為一個屬性,不同屬性(列)給不同屬性名;列的順序可任意交換;任意兩個元組不能完全相同;行的順序可任意交換;每一分量是不可分的數(shù)據(jù)項。關(guān)系數(shù)據(jù)庫的基本要求基于關(guān)系模型的關(guān)系數(shù)據(jù)庫的基本要素有三部分組成:數(shù)據(jù)結(jié)構(gòu):關(guān)系操作的對象和結(jié)果都是集合。一個表由表結(jié)構(gòu)和記錄(數(shù)據(jù))兩部分組成。一個關(guān)系數(shù)據(jù)庫可以包含一個或多個表。定義一個關(guān)系數(shù)據(jù)庫,就是對它所包含的所有表的結(jié)構(gòu)進行描述。關(guān)系操作集合:查詢操作(包括專門的關(guān)系數(shù)據(jù)操作:選擇、投影、連接,和傳統(tǒng)集合操作中的并、交、差、笛卡爾積等),以及對數(shù)據(jù)庫的檢索和更新,包括增、刪、改操作。關(guān)系的完整性:數(shù)據(jù)及其聯(lián)系應(yīng)具有的制約和依賴規(guī)則,包括:實體完整性(主鍵唯一性)、參照完整性(外鍵對應(yīng)性)、用戶定義的完整性。數(shù)據(jù)結(jié)構(gòu)關(guān)系操作集合關(guān)系的完整性專門的關(guān)系數(shù)據(jù)操作45從關(guān)系中找出滿足給定條件的行稱為選擇。選擇條件以邏輯表達式給出,使該邏輯表達式的值為真的行被選出.從關(guān)系的所有屬性中挑選若干屬性組成新的關(guān)系稱為投影。這是對列進行運算,相當(dāng)于對關(guān)系進行垂直分解。聯(lián)接是將兩個關(guān)系的屬性名拼接在一起,形成一個更寬的關(guān)系模式,生成新的關(guān)系中包含滿足聯(lián)接條件的元組投影聯(lián)接選擇關(guān)系的完整性關(guān)系模型的三類完整性:實體完整性:參照完整性:用戶定義的完整性:實體完整性實體完整性:每一關(guān)系必有一主碼,構(gòu)成主碼的各屬性值均不能取空值。例如學(xué)生選課關(guān)系“選修(學(xué)號,課程號,成績)”中,“學(xué)號、課程號”為主碼,則“學(xué)號”和“課程號”都不能取空值,而不是整體不為空。參照完整性參照完整性:若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值)或者等于S中某個元組的主碼值例如,學(xué)生選課系統(tǒng),選課關(guān)系的學(xué)號按實體完整性要求,不能為空;按參照完整性要求,只能選學(xué)生關(guān)系中的學(xué)號,表示語義關(guān)系“只有注冊的學(xué)生才能選課”。用戶定義的完整性用戶定義的完整性就是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。關(guān)系的并、交、差關(guān)系R關(guān)系Sidnamesexnationbirthdayclassidhome011001葉海平男漢1986-01-23011山西011002景風(fēng)男漢1986-06-25011重慶012001華麗佳女漢1987-05-20012大連012002范治華男漢1986-06-12012山東idnamesexnationbirthdayclassidhome012002范治華男漢1986-06-12012山東013001李佳佳女漢1986-03-01013湖南013002史慧敏女漢1986-10-11013湖北014001安靜女漢1986-03-23014山西關(guān)系的并Union
(R∪S)idnamesexnationbirthdayclassidhome011001葉海平男漢1986-01-23011山西011002景風(fēng)男漢1986-06-25011重慶012001華麗佳女漢1987-05-20012大連012002范治華男漢1986-06-12012山東013001李佳佳女漢1986-03-01013湖南013002史慧敏女漢1986-10-11013湖北014001安靜女漢1986-03-23014山西RS關(guān)系的交Intersection
(R∩S)idnamesexnationbirthdayclassidhome012002范治華男漢1986-06-12012山東RSR∩S關(guān)系的差Difference
(R-S)idnamesexnationbirthdayclassidhome011001葉海平男漢1986-01-23011山西011002景風(fēng)男漢1986-06-25011重慶012001華麗佳女漢1987-05-20012大連RSR-S廣義笛卡爾積關(guān)系R關(guān)系Cidnamesexnationbirthdayclassidhome011001葉海平男漢1986-01-23011山西011002景風(fēng)男漢1986-06-25011重慶012001華麗佳女漢1987-05-20012大連012002范治華男漢1986-06-12012山東idCourse_idgrade011001100182011002100186011001200178廣義笛卡爾積
關(guān)系R的列數(shù)為n(4),關(guān)系C的列數(shù)為m(此例為3),笛卡爾積RC是一個n+m(7)列的元組集合。每個元組的前n個分量來自R,后m個分量來自C。若R有k1(4)行,C有k2(3)行,則RC有k1k2行(12)。idnamesexnationidCourse_idgrade011001葉海平男漢011001100182011001葉海平男漢011002100186011001葉海平男漢011001200178011002景風(fēng)男漢011001100182011002景風(fēng)男漢011002100186011002景風(fēng)男漢011001200178012001華麗佳女漢011001100182012001華麗佳女漢011002100186012001華麗佳女漢011001200178012002范治華男漢011001100182012002范治華男漢011002100186012002范治華男漢011001200178關(guān)系數(shù)據(jù)庫的范式關(guān)系必須是規(guī)范化的,即關(guān)系必須滿足一定的規(guī)范條件:范式一(1NF):范式二(2NF):范式三(3NF):SQL簡介SQL的概念SQL的組成常用的SQL命令關(guān)系運算符連接運算符布爾運算符SQL的概念SQL(Structured
QueryLanguage),結(jié)構(gòu)化查詢語言。SQL最早是由IBM的圣約瑟研究實驗室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEMR開發(fā)的一種查詢語言。SQL語言結(jié)構(gòu)簡潔,功能強大,簡單易學(xué),自從IBM公司1981年推出以來,SQL語言得到了廣泛的應(yīng)用,1986年,美國ANSI(美國國家標(biāo)準(zhǔn)協(xié)會)采用SQL作為關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL的組成SQL語言DMLDDLDCLDQL數(shù)據(jù)操縱語言DML(DataManipulationLanguage),例如INSERT、UPDATE、DELETE
數(shù)據(jù)控制語言DCL(DataControlLanguage),例如COMMIT、WORK、ROLLBACK、WORK數(shù)據(jù)定義語言DDL(DataDefinitionLanguage),例如CREATE、ALTER、DROP
數(shù)據(jù)查詢語言DQL(DataQueryLanguage),例如SELECT常用的SQL命令DDL命令創(chuàng)建表:Createtable刪除表:Droptable修改表:AlerttableDQL命令插入行:insert查詢數(shù)據(jù):select語句更新數(shù)據(jù):update語句刪除數(shù)據(jù):delete語句練習(xí)創(chuàng)建表:Createtable格式(例如:)createtable表名(列名1數(shù)據(jù)類型【約束】,列名2數(shù)據(jù)類型【約束】,列名3數(shù)據(jù)類型【約束】)
varchar2(size)存放可變長字符數(shù)據(jù),注:Derby數(shù)據(jù)格式見文檔char(size)存放定長字符數(shù)據(jù)number(l,d)存放數(shù)值型數(shù)據(jù),l代表總位數(shù),d代表小數(shù)點后的位數(shù)blob二進制大對象raw(size)純二進制數(shù)據(jù)date存放日期long存放可變長字符數(shù)據(jù)約束
null/notnullprimarykey要求進入該列的值是惟一的,且不為nullforeignkeyunique防止重復(fù)值進入該列,但允許為nullcheck限制屬性列的輸入值創(chuàng)建表:Createtable實例屬性:公司名company-name、卡號card-number、初值starting-value、余額value-left、初始密碼pin-number。設(shè)定:屬性company-name可具有多達25個字符,屬性value-left及starting-value用元及分來度量。屬性card-number屬性定義為主碼;將pin-number屬性定義為惟一碼。請用命名約束來書寫createtable。CreatetablecallingCard(companyNamevarchar(25),
cardNumbervarchar(20)primarykey,
startingValuedecimal(5,2),
valueLeftdecimal(5,2),
pinNumberchar(12)unique)創(chuàng)建表:Createtable實例屬性:公司名company-name、卡號card-number、初值starting-value、余額value-left、初始密碼pin-number。設(shè)定:屬性company-name可具有多達25個字符,屬性value-left及starting-value用元及分來度量。屬性card-number屬性定義為主碼;將pin-number屬性定義為惟一碼。請用命名約束來書寫createtable。CreatetablecallingCard(companyNamevarchar(25),
cardNumbervarchar(20)primarykey,
startingValuedecimal(5,2),
valueLeftdecimal(5,2),
pinNumberchar(12)unique);刪除表:Droptable格式droptable表名例如:Droptableprogrammer
Createtableprogrammer(empnovarchar2(3)primarykey,namevarchar2(25)notnull,
hiredatedate,projectvarchar2(3),languagevarchar2(15),
tasknonumber(2));empnoNamehiredateprojectLanguageTaskno201John1/1/95NPRVB52789richard08/31/98RNCJAVA11134Andy08/15/94NITC++89Insertintoprogrammer(empno,name,hire-date,project,language,tashno)values(‘201’,’John’,’1995-01-01’,’NPR’,’VB’,52)修改表:Alerttable對已存在的表添加屬性列對已存在的表修改屬性列從表中刪除約束在一個已存在的表中定義主鍵在一個已存在的表中定義外鍵對已存在的表添加屬性列Altertable表名
add新列名數(shù)據(jù)類型【約束】;例1:在dep表中,加入一個名為managerName的新列。假設(shè)該列可長達25個字符。altertabledepdropcolumnmanagerName
altertabledepaddmanagerNamevarchar(25)對已存在的表修改屬性列Altertable表名
altercolumn列名
setdatatype【數(shù)據(jù)類型/約束】;例1:在dep表中,增加name列大小。
altertabledepaltercolumnnamesetdatatypevarchar(45)從表中刪除約束Altertable表名
dropprimarykeyAltertable表名
dropuniqueAltertable表名
drop約束名在一個已存在的表中定義主鍵使用altertable命令:
altertable表名
add【constraint約束名】primarykey(列1[,列2…])例如:
altertabledepdropprimarykey
altertabledepaddprimarykey(id)在一個已存在的表中定義外鍵使用altertable命令:
altertable表名
add【constraint約束名】foreignkey(列名)references參照表名(列名);例如定義外鍵:altertabledepaddforeignkey(regionId)referencesregion(id)插入行:insert格式(例如:)insertinto表名(列1,列2,……列N)values(值1,值2……值N)一條語句只允許一次插入一行。如果寫在values子句中的數(shù)據(jù)項的順序與createtable命令中表的屬性順序相同,則不用在insertinto子句中寫出列名。插入行:insert實例將下列數(shù)據(jù)插入callingCard表移動123709643550.0012.45987234569871聯(lián)通5497443544100.0011.37433809835833InsertintocallingCard(companyName,cardNumber,startingValue,valueLeft,pinNumber)values('移動,'1237096435',15.00,11.37,'987234569871')InsertintocallingCard(companyName,cardNumber,startingValue,valueLeft,pinNumber)values('聯(lián)通','5497443544',100.00,11.37,'433809835833')注:所有的字符數(shù)據(jù)都放再單引號內(nèi)。查詢數(shù)據(jù):select語句Where子句的比較運算符:=,<>,<,<=,>,>=查詢表中所有列信息:select*from表名格式:(例1,例2)select列1,列2……列Nfrom表1,……表N【where條件】【orderby列1[asc|desc][列2[asc|desc]…]】查詢數(shù)據(jù):select語句(例1)例1:使用callingCard表查詢移動公司發(fā)行的電話卡的卡號和初值。查詢顯示按卡號從小到大排列。selectcardNumber,startingValuefromcallingCardwherecompanyName='移動'orderbycardNumberasc查詢數(shù)據(jù):select語句(例2)使用employee表顯示在會計部門工作的所有雇員的姓名及職務(wù)。
2.按雇員姓名的字母順序顯示上一個查詢結(jié)果。IDNAMEDEPTTITLE100SmithSalesClerk200JohnMarketingClerk300MartinAccountingClerk400BellAccountingSr.accountant1.Selectname,titlefromemployeewheredept='Accounting‘2.Selectname,titlefromemployeewheredept='Accounting'orderbyname更新數(shù)據(jù):update語句例1:將卡號為1237096435的電話卡的公司名改為聯(lián)通。
updatecallingCardsetcompanyName='聯(lián)通'wherecardNumber='1237096435'格式:Update表名
set列1=新值1,……列N=新值Nwhere條件刪除數(shù)據(jù):delete語句(例1)格式:
Deletefrom表名where條件;……刪除指定行
Delete表名;…………刪除表中所有數(shù)據(jù)例1:刪除callingCard表中聯(lián)通的所有電話卡記錄。
DeletefromcallingCardwherecompanyName='聯(lián)通'練習(xí):創(chuàng)建emp表,屬性如下:列名描述/數(shù)據(jù)類型Id每個雇員惟一的標(biāo)識號,最長為3個字符Name雇員的姓名,最長為20個字符Userid雇員登陸系統(tǒng)的ID,最長為8個字符StartDate雇員開始在公司工作的日期ManagerId雇員經(jīng)理的ID,最長為3個字符Title雇員在公司里的職務(wù),最長為25個字符DeptId雇員的部門ID,最長為3個字符Salary雇員的工資,共11位數(shù),包括2位小數(shù)Commision雇員贏得的傭金百分率,共4位數(shù),包括2位小數(shù)練習(xí):創(chuàng)建emp表,屬性如下:
1.根據(jù)emp表,列出所有雇員的姓名、ID及職務(wù),要求不同職務(wù)按字母順序排列,對相同職務(wù)的雇員,按其姓名的降序排列。2.給在部門41工作的所有雇員提高工資200元。對結(jié)果加以驗證。萬一出錯,確保所有的變化均能取消。如果操作有誤,用戶如何取消這些變化。Selectname,id,titleFromempOrderbytitle,name
descupdateempsetsalary=salary+200wheredepid=41select*fromempwheredepid=41關(guān)系運算符使用distinct取消重復(fù)的行select[all|distinct]列1,列2……列Nfrom表1,……表N【where條件】【orderby列1[asc|desc][列2[asc|desc]…]】;例:在emp表中,有多少不同的職務(wù)?selectdistincttitlefromemp連接運算符連接(join)運算允許我們將來自兩個或多個表的數(shù)據(jù)形成一個單一表。主要的連接類型:
等值連接:兩表通過共同的等值列而連接
自連接:一個表與其本身的連接
外連接:兩個表之間的連接,決定一個表的所有行在另一表中沒有匹配的元組。等值連接select表1.列1,表1.列2…,表2.列1,…表2.列Nfrom表1,表2where表1.列名=表2.列名;如果在兩個表中沒有相同的列,則沒有必要在列名前加表名。例1等值連接:例1列名描述/數(shù)據(jù)類型Id每個部門惟一的標(biāo)識號,最長為3個字符Name部門名稱,最長為20個字符RegionId部門所在的區(qū)域id,最長為3個字符例1:查詢所有雇員的姓名及所在部門名稱。
S,Fromemp,depWhereemp.depid=dep.id;使用表別名:
SelectA.name,B.nameFromemp
A,depBWhereA.depid=B.id自連接自連接是一個表與其自身的連接例1:顯示每一個雇員的名字及他或她的管理者的名字。
selectE.nameasemployee,
M.nameasmanagerfromemp
E,empMwhereM.id=E.managerId外連接假設(shè)有兩個表的連接,有時我們想知道不滿足其中一個表指定條件的另一個表的行。例如,我們想知道還沒有管理者的雇員。
select表1.列1,表1.列2…,表2.列1,…表2.列Nfrom表1,表2where表1.列名(+)=表2.列名;用于計算在表1中所有與表2不匹配的行的外連接
select表1.列1,表1.列2…,表2.列1,…表2.列Nfrom表1,表2where表1
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年精裝修房軟裝配套服務(wù)合同
- 2024年標(biāo)準(zhǔn)汽車洗護場地租賃合同范本版B版
- 2024年度圖書采購合同:圖書館期刊訂閱與數(shù)字化服務(wù)3篇
- 愚公移山微課程設(shè)計
- 戶外教育插畫課程設(shè)計
- 數(shù)學(xué)科學(xué)算法課程設(shè)計
- 有關(guān)強電的課程設(shè)計
- 鄉(xiāng)村行實踐課程設(shè)計
- 少女膠片攝影課程設(shè)計
- 2024年度國際藝術(shù)品拍賣銷售合同范本3篇
- 河北省石家莊市2023-2024學(xué)年六年級上學(xué)期期末科學(xué)試卷(含答案)
- 中國兒童呼吸道合胞病毒感染診療及預(yù)防指南(2024醫(yī)生版)解讀課件
- 火車站高鐵站消防培訓(xùn)
- 機場跑道瀝青路面施工方案
- 企業(yè)戰(zhàn)略規(guī)劃顧問協(xié)議
- 《現(xiàn)代控制理論》全套課件(東北大學(xué))
- 人教版八年級上冊數(shù)學(xué)期末考試試卷附答案
- 中華民族共同體概論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年部編版語文六年級上冊期末測試題及答案(一)
- 2024年航空職業(yè)技能鑒定考試-航空票務(wù)知識考試近5年真題集錦(頻考類試題)帶答案
- 2025年廣東省春季高考英語語法填空專項復(fù)習(xí)試題二(含答案解析)
評論
0/150
提交評論