




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)軟件技術(shù)數(shù)據(jù)結(jié)構(gòu)1.1數(shù)據(jù)庫(kù)技術(shù)概念關(guān)系數(shù)據(jù)庫(kù)表示:(數(shù)據(jù)、聯(lián)系都用關(guān)系(即二維表)表示)3.數(shù)據(jù)庫(kù)技術(shù) 用構(gòu)造DB的方法管理數(shù)據(jù)的技術(shù)。4.數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS) 構(gòu)造DB應(yīng)用系統(tǒng)的軟件。S#SNSEXAGES1丁一男19S2馬二女20S3張三女18S4李四男20…………S#C#GS1C189S1C290S1C395S4C190………S#CNHCC1DS603C2OS402C3DB402…….………………(學(xué)生表) (選課表) (課程表)第2頁(yè),共52頁(yè),2024年2月25日,星期天 1968年:誕生了第一個(gè)商品化的DBMS----IMS(InformationManagementSystem),屬層次模型。
1969年:提出了網(wǎng)狀模型-----DBTG(DBTaskGroup)報(bào)告。
1970s后:關(guān)系模型占主導(dǎo)地位------dbase、Foxpro、Oracle、SQL/DS、SQLserver等。 目前,數(shù)據(jù)庫(kù)技術(shù)日趨完善,應(yīng)用廣泛。如部門的MIS、AO、CAD/CAM、GIS等,都要用到數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)規(guī)模是衡量國(guó)家信息化程度的標(biāo)志。5.數(shù)據(jù)庫(kù)系統(tǒng)(DBS)數(shù)據(jù)庫(kù)技術(shù)概念第3頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)技術(shù)概念
一個(gè)具體DBS,其核心是數(shù)據(jù)庫(kù),數(shù)據(jù)以文件形式存放在外存。支持?jǐn)?shù)據(jù)庫(kù)運(yùn)行的軟件有OS、DBMS。為了能夠高效使用和更新數(shù)據(jù),還需要有一批應(yīng)用程序。 一個(gè)DBS特有的部分就是DBMS支持下的數(shù)據(jù)庫(kù)和應(yīng)用程序。DBMS的作用是:為定義數(shù)據(jù)庫(kù)中數(shù)據(jù)的組織結(jié)構(gòu)提供語(yǔ)言,也為應(yīng)用程序提供存取數(shù)據(jù)的方法;通過(guò)操作系統(tǒng)完成數(shù)據(jù)的存取,并對(duì)數(shù)據(jù)庫(kù)進(jìn)行常規(guī)管理和維護(hù)。DBMS支持了數(shù)據(jù)庫(kù)的整個(gè)生命期。
參與DBS工作的人員,一類是應(yīng)用程序員,利用DBMS提供的語(yǔ)言,結(jié)合高級(jí)語(yǔ)言編寫應(yīng)用程序,為終端用戶服務(wù)。終端用戶可以用命令語(yǔ)句、也可以使用應(yīng)用程序員編制的程序來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。另一類參與DBS工作的人員是數(shù)據(jù)庫(kù)管理員DBA,全面負(fù)責(zé)數(shù)據(jù)庫(kù)的設(shè)計(jì)、管理和維護(hù)。第4頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)技術(shù)概念
數(shù)據(jù)庫(kù)管理員DBA主要職責(zé)有:1)與用戶和應(yīng)用程序員緊密結(jié)合,規(guī)定數(shù)據(jù)庫(kù)的任務(wù)范圍,設(shè)計(jì)庫(kù)結(jié)構(gòu),組織應(yīng)用程序的設(shè)計(jì);決定數(shù)據(jù)庫(kù)的物理存儲(chǔ)方法和存取策略,定義數(shù)據(jù)庫(kù)的安全性檢查和完整性約束條件,裝入數(shù)據(jù)。2)監(jiān)督控制數(shù)據(jù)庫(kù)的使用和運(yùn)行,收集系統(tǒng)數(shù)據(jù)庫(kù)的使用信息以備改進(jìn)。3)需要時(shí)改進(jìn)和重新組織數(shù)據(jù)庫(kù)。4)在數(shù)據(jù)庫(kù)遭破壞時(shí)采取措施決定策略恢復(fù)數(shù)據(jù)。第5頁(yè),共52頁(yè),2024年2月25日,星期天1.1.1數(shù)據(jù)庫(kù)技術(shù)的發(fā)展1.手工管理階段 從計(jì)算機(jī)面世到20世紀(jì)50年代中期的階段。當(dāng)時(shí)計(jì)算機(jī)主要為科學(xué)和工程計(jì)算工作,硬件、軟件都很簡(jiǎn)單。這時(shí)計(jì)算機(jī)面對(duì)的主要是科學(xué)數(shù)據(jù),數(shù)據(jù)與它的應(yīng)用程序關(guān)系如下:a.數(shù)據(jù)從屬于使用它的應(yīng)用程序,程序不運(yùn)行,數(shù)據(jù)不能使用,程序運(yùn)行結(jié)束,數(shù)據(jù)隨之從計(jì)算機(jī)中退出。b.計(jì)算機(jī)不單獨(dú)保存數(shù)據(jù)。c.數(shù)據(jù)由程序員直接管理,直接對(duì)其存儲(chǔ)結(jié)構(gòu)、輸入輸出方式等作出安排。 這個(gè)階段的數(shù)據(jù)與應(yīng)用程序捆綁上機(jī),完全不能獨(dú)立,如圖(a)。若應(yīng)用程序需要,數(shù)據(jù)的存放就要調(diào)整;若數(shù)據(jù)存放方式改變,應(yīng)用程序也必須修改。應(yīng)用程序數(shù)據(jù)(a)第6頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)技術(shù)的發(fā)展2.文件系統(tǒng)階段
50年代后期至60年代中期。從技術(shù)環(huán)境看,這時(shí)有了磁盤等直接存儲(chǔ)設(shè)備,磁盤操作系統(tǒng)隨之產(chǎn)生,其中包括專門管理數(shù)據(jù)文件的文件系統(tǒng);從需求來(lái)看,社會(huì)生活要求計(jì)算機(jī)走出科研、設(shè)計(jì)、軍事領(lǐng)域,介入數(shù)據(jù)管理;數(shù)據(jù)需要經(jīng)常處理、利用,所以從技術(shù)上要求數(shù)據(jù)保存在計(jì)算機(jī)內(nèi),盡量做到共享,這時(shí)的數(shù)據(jù)管理方式是:a.數(shù)據(jù)按規(guī)則組織成文件,以文件的形式長(zhǎng)期保存在計(jì)算機(jī)存儲(chǔ)設(shè)備中。b.數(shù)據(jù)文件的存放由文件系統(tǒng)管理,程序員不必關(guān)心其存儲(chǔ)細(xì)節(jié),只通過(guò)文件名對(duì)數(shù)據(jù)進(jìn)行存取。c.應(yīng)用程序和數(shù)據(jù)相互獨(dú)立存放,理論上實(shí)現(xiàn)了以文件為單位的數(shù)據(jù)共享。d.數(shù)據(jù)文件的組織方法依賴于應(yīng)用程序,對(duì)它的安排使用面向具體應(yīng)用,故而獨(dú)立性差、共用性也差。e.文件以表格形式組織數(shù)據(jù),不能表示復(fù)雜的數(shù)據(jù)關(guān)系,各文件的數(shù)據(jù)是孤立的,不能作相互關(guān)聯(lián)的整體結(jié)構(gòu)使用,一個(gè)文件的數(shù)據(jù)格式固定,少?gòu)椥?,限制了它承?dān)數(shù)據(jù)的能力。這個(gè)階段中數(shù)據(jù)與應(yīng)用的關(guān)系示意如圖(b)。第7頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)技術(shù)的發(fā)展
3.數(shù)據(jù)庫(kù)管理階段
60年代末,數(shù)據(jù)管理技術(shù)進(jìn)入數(shù)據(jù)庫(kù)階段。此時(shí)直接存取設(shè)備向大容量、高速度的方向飛速發(fā)展,為大規(guī)模高效率的數(shù)據(jù)管理作了物質(zhì)上的準(zhǔn)備。社會(huì)對(duì)計(jì)算機(jī)管理數(shù)據(jù)的期望值更高,需要管理的規(guī)模更大,領(lǐng)域更寬,數(shù)據(jù)更多,類型更復(fù)雜,更需要集中管理、數(shù)據(jù)共享。而對(duì)這樣的社會(huì)需求,計(jì)算機(jī)對(duì)數(shù)據(jù)必須采取全新的組織方式,由專門的軟件(DBMS)對(duì)數(shù)據(jù)進(jìn)行管理,才能適應(yīng)這種整體存儲(chǔ)的要求。在這個(gè)階段,數(shù)據(jù)與應(yīng)用程序的關(guān)系如圖(c)。應(yīng)用程序2應(yīng)用程序1應(yīng)用程序n數(shù)據(jù)文件n數(shù)據(jù)文件1數(shù)據(jù)文件2………………
文件管理系統(tǒng)(b)第8頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)系統(tǒng)特點(diǎn)1.1.2數(shù)據(jù)庫(kù)系統(tǒng)特點(diǎn)1.數(shù)據(jù)結(jié)構(gòu)化 數(shù)據(jù)庫(kù)包含的全部?jī)?nèi)容構(gòu)成一個(gè)整體的結(jié)構(gòu)而不是孤立的文件,解決了文件系統(tǒng)不能勝任的復(fù)雜聯(lián)系問(wèn)題。這種“結(jié)構(gòu)化”大大的擴(kuò)展了復(fù)雜數(shù)據(jù)的表達(dá)能力,它既可以記錄各類數(shù)據(jù)本身,也可以描述不同對(duì)象間的復(fù)雜聯(lián)系,而且結(jié)構(gòu)靈活、便于共享、易于擴(kuò)展。
:::應(yīng)用程序n應(yīng)用程序1應(yīng)用程序2DBMS表1表3表2表n(c)
數(shù)據(jù)庫(kù)管理各階段應(yīng)用程序與數(shù)據(jù)的關(guān)系第9頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)系統(tǒng)特點(diǎn)2.數(shù)據(jù)獨(dú)立性強(qiáng)
DBMS把數(shù)據(jù)分成不同層次的管理,保證數(shù)據(jù)組織的變化不會(huì)影響應(yīng)用程序的使用。數(shù)據(jù)與應(yīng)用程序互不干擾,即DBS具有較高的數(shù)據(jù)獨(dú)立性。3.少冗余 冗余----數(shù)據(jù)重復(fù)存放。DBS從兩個(gè)意義上減少了冗余。一方面,數(shù)據(jù)庫(kù)面向全體用戶組織數(shù)據(jù),各用戶數(shù)據(jù)免于重復(fù)存放,避免了存儲(chǔ)空間的浪費(fèi);另一方面,減少冗余可避免數(shù)據(jù)的不一致性。 數(shù)據(jù)的不一致性:E#ENSEXZCGZE1丁一男副教授3000E2馬二女副教授3200E3張三男教授5000…………(人事處) (科研處)E#ENSEXZCXME1丁一男講師MISE2馬二女副教授DSSE3張三男教授OA…………第10頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)系統(tǒng)特點(diǎn)4.數(shù)據(jù)完整性好指數(shù)據(jù)一致、正確。5.數(shù)據(jù)安全性好 指防止非法存取,防止數(shù)據(jù)被盜、丟失和破壞。數(shù)據(jù)庫(kù)面向全體用戶,但并非向全體用戶開放。用戶只能在自己權(quán)限內(nèi)進(jìn)行合法操作,為此,系統(tǒng)設(shè)有用戶授權(quán)機(jī)制和安全性檢查步驟來(lái)防范非法入侵。6.系統(tǒng)有并發(fā)控制機(jī)制和數(shù)據(jù)恢復(fù)功能 系統(tǒng)在更新數(shù)據(jù)和其它存取活動(dòng)同時(shí)發(fā)生時(shí)進(jìn)行控制,以防止數(shù)據(jù)出現(xiàn)錯(cuò)誤。系統(tǒng)故障、操作失誤、惡意破壞,均可能造成系統(tǒng)癱瘓,系統(tǒng)有能力在這種情況出現(xiàn)后恢復(fù)數(shù)據(jù),正常工作。 由此,可以概括說(shuō),數(shù)據(jù)庫(kù)是一個(gè)任務(wù)范圍內(nèi)全部數(shù)據(jù)的集合,其數(shù)據(jù)組織結(jié)構(gòu)化,冗余少,與應(yīng)用程序獨(dú)立,有專門的軟件進(jìn)行管理,在實(shí)現(xiàn)數(shù)據(jù)共享的同時(shí)也保證數(shù)據(jù)安全。
第11頁(yè),共52頁(yè),2024年2月25日,星期天1.2數(shù)據(jù)模型
現(xiàn)實(shí)世界、信息世界、計(jì)算機(jī)世界 現(xiàn)實(shí)世界是客觀存在,有各種類型各異的個(gè)體,如有物質(zhì)性的人、書、財(cái)物等等,非物質(zhì)性的定義、計(jì)劃等等,它們都可以是數(shù)據(jù)庫(kù)的存儲(chǔ)對(duì)象,每個(gè)對(duì)象都會(huì)有其客觀存在且可見(jiàn)的特征,如男生王明,81年生人,來(lái)自保定,高個(gè)子。相同類型的存儲(chǔ)對(duì)象可歸為一類。
信息世界是現(xiàn)實(shí)世界的反映,稱現(xiàn)實(shí)世界中的對(duì)象為實(shí)體,同類對(duì)象構(gòu)成實(shí)體集。對(duì)象的特征由屬性描述。描述實(shí)體各種特征的屬性序列構(gòu)成該類實(shí)體的型。一個(gè)實(shí)體在各個(gè)屬性名下的值就是這個(gè)實(shí)體的具體描述。 計(jì)算機(jī)世界是信息世界在計(jì)算機(jī)中的表示,每個(gè)實(shí)體的值為一個(gè)記錄,實(shí)體的屬性值則轉(zhuǎn)換為一系列數(shù)據(jù)項(xiàng)的值。第12頁(yè),共52頁(yè),2024年2月25日,星期天1.2數(shù)據(jù)模型
現(xiàn)實(shí)世界、信息世界和計(jì)算機(jī)世界中相應(yīng)概念的轉(zhuǎn)換如圖所示。實(shí)體間的聯(lián)系 一對(duì)一聯(lián)系(1:1),例:
對(duì)象同類對(duì)象特征表現(xiàn)特征名稱實(shí)體實(shí)體集屬性值屬性名記錄文件數(shù)據(jù)項(xiàng)數(shù)據(jù)項(xiàng)名現(xiàn)實(shí)世界 信息世界 計(jì)算機(jī)世界企業(yè)法人11國(guó)家首都11居民身份證11第13頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)模型
一對(duì)多聯(lián)系(1:n),例: 多對(duì)多聯(lián)系(m:n),例:學(xué)院系1n醫(yī)生病人1n班主任學(xué)生1n學(xué)生課程mn老師學(xué)生mn供應(yīng)商客戶mn第14頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)模型
數(shù)據(jù)庫(kù)要存儲(chǔ)的對(duì)象:實(shí)體(集),實(shí)體(集)間的聯(lián)系。數(shù)據(jù)模型以某種結(jié)構(gòu)表達(dá)實(shí)體間的聯(lián)系,是數(shù)據(jù)庫(kù)整體的結(jié)構(gòu)。不同的數(shù)據(jù)組織方式表示成不同的數(shù)據(jù)模型。各種數(shù)據(jù)模型對(duì)實(shí)體的組織方式相同,它們的差別在于對(duì)聯(lián)系的表達(dá)。1.層次模型(樹)2.網(wǎng)絡(luò)模型(圖)第15頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)模型3.關(guān)系模型(表) 關(guān)系模型是用表格表示實(shí)體間聯(lián)系的模型。在這種模型中,不管是實(shí)體還是實(shí)體間的聯(lián)系全部用表格表達(dá)。 如學(xué)生關(guān)系S的關(guān)系模式:S[S#
,SN,SEX,AGE]
屬性集U
關(guān)系名S
關(guān)系模型建立在數(shù)學(xué)基礎(chǔ)上,有堅(jiān)實(shí)的理論指導(dǎo),查詢操作以關(guān)系運(yùn)算的方式完成,省去了指針操作,簡(jiǎn)化了存儲(chǔ)管理,減少了出錯(cuò)機(jī)會(huì)。S#SNSEXAGES1丁一男19S2馬二女20S3張三女18S4李四男20…………元組t分量t(x)第16頁(yè),共52頁(yè),2024年2月25日,星期天信息模型
需在數(shù)據(jù)庫(kù)中存儲(chǔ)的內(nèi)容經(jīng)分析、整理、歸類、綜合,構(gòu)成了信息世界。信息世界中實(shí)體及實(shí)體間聯(lián)系的模型稱信息模型,它是現(xiàn)實(shí)世界復(fù)雜關(guān)系的反映。實(shí)體一聯(lián)系圖(E-R圖)是信息模型采用的一種表達(dá)方式。 如學(xué)校教學(xué)管理數(shù)據(jù)庫(kù)的信息模型:
學(xué)校教學(xué)管理部分信息模型使用S(學(xué)生)在C(課程)T(教師)管理BNBCSNAGEGC#CNHB#S#D#DNT#TNAGE時(shí)間1nmnnm1nmnB(書)擔(dān)任選修D(zhuǎn)(系)第17頁(yè),共52頁(yè),2024年2月25日,星期天1.3數(shù)據(jù)庫(kù)管理系統(tǒng)
數(shù)據(jù)庫(kù)管理系統(tǒng)DataBaseManagementSystem,簡(jiǎn)稱為DBMS,一種專門的管理數(shù)據(jù)庫(kù)的軟件。DBMS按照自己所依據(jù)的數(shù)據(jù)模型(層次、網(wǎng)絡(luò)、關(guān)系)定義數(shù)據(jù)庫(kù)結(jié)構(gòu)、接收數(shù)據(jù)、存取數(shù)據(jù)并維護(hù)數(shù)據(jù)庫(kù)的正常運(yùn)行。它象個(gè)大管家,指揮協(xié)調(diào)監(jiān)督著數(shù)據(jù)庫(kù)的全面運(yùn)行。1.3.1數(shù)據(jù)庫(kù)的管理結(jié)構(gòu)
1.數(shù)據(jù)庫(kù)的三個(gè)抽象層次
DBMS對(duì)數(shù)據(jù)庫(kù)進(jìn)行三級(jí)管理,即分為用戶層、概念層和存儲(chǔ)層。1)用戶層 用戶層也稱外層,是數(shù)據(jù)庫(kù)用來(lái)供用戶使用的層面。各用戶所看到的局部數(shù)據(jù)庫(kù)為數(shù)據(jù)庫(kù)的外視圖(用戶視圖,外模式),是用戶觀點(diǎn)的數(shù)據(jù)庫(kù)。2)全局層 全局層是整體概念上的數(shù)據(jù)庫(kù)。在這個(gè)層面上可看到數(shù)據(jù)庫(kù)全局,稱為全局視圖(模式),它是所有用戶視圖的綜合,是完整的數(shù)據(jù)庫(kù)。3)存儲(chǔ)層 數(shù)據(jù)庫(kù)的存儲(chǔ)層也稱內(nèi)層(內(nèi)模式),關(guān)系到數(shù)據(jù)的物理存儲(chǔ)。數(shù)據(jù)庫(kù)的內(nèi)層以文件為單位來(lái)組織數(shù)據(jù)。第18頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)庫(kù)的三個(gè)抽象層次
2.
二級(jí)映射 一次映射是在內(nèi)模式、全局模式之間。這次映射確定了全局模式中的一個(gè)記錄與存儲(chǔ)記錄之間的對(duì)應(yīng);另一次是在全局模式和外模式之間,它確定了外模式的數(shù)據(jù)與全局模式的數(shù)據(jù)間的對(duì)應(yīng)關(guān)系。用戶程序n………………
映射
映射終端用戶內(nèi)視圖全局視圖DB用戶程序1外視圖1外視圖n
數(shù)據(jù)庫(kù)三級(jí)管理層次程序員數(shù)據(jù)庫(kù)管理員DBMS第19頁(yè),共52頁(yè),2024年2月25日,星期天3.數(shù)據(jù)獨(dú)立性
有了內(nèi)模式和全局模式間的映射關(guān)系,如果數(shù)據(jù)庫(kù)的存儲(chǔ)模式發(fā)生變化,只須改變內(nèi)模式和全局模式間的映射關(guān)系,而全局模式本身不受任何影響,從而不影響應(yīng)用程序,這稱為數(shù)據(jù)的物理獨(dú)立性,即數(shù)據(jù)的物理存儲(chǔ)與應(yīng)用程序相互獨(dú)立。比如,數(shù)據(jù)庫(kù)在運(yùn)行一段時(shí)間以后需調(diào)整數(shù)據(jù)的存儲(chǔ)位置,而這存儲(chǔ)結(jié)構(gòu)的變動(dòng)只會(huì)改變內(nèi)模式和全局模式間的映射關(guān)系,而不會(huì)改動(dòng)全局的概念視圖,不影響用戶使用。再如增加索引、改變記錄長(zhǎng)度等都會(huì)使存儲(chǔ)模式發(fā)生變動(dòng),但都不會(huì)影響到全局模式,不會(huì)影響用戶使用。 全局模式與外模式間的映射關(guān)系,使數(shù)據(jù)在全局邏輯結(jié)構(gòu)發(fā)生變化時(shí),只改變?nèi)帜J脚c外模式的映射關(guān)系,而不會(huì)影響到外模式,從而保證建立在外模式基礎(chǔ)上的應(yīng)用程序不需任何變動(dòng),這稱為數(shù)據(jù)的邏輯獨(dú)立性,即用戶使用的局部邏輯結(jié)構(gòu)獨(dú)立于全局的邏輯結(jié)構(gòu)。比如,數(shù)據(jù)庫(kù)系統(tǒng)允許擴(kuò)充內(nèi)容,當(dāng)有些新的數(shù)據(jù)內(nèi)容要添加到數(shù)據(jù)庫(kù)中時(shí),數(shù)據(jù)庫(kù)的全局結(jié)構(gòu)必然發(fā)生變化,這個(gè)變化只會(huì)影響概念視圖與外視圖的映射關(guān)系,不會(huì)影響用戶使用的外模式。一個(gè)外模式局部邏輯結(jié)構(gòu)如果不涉及這些改變,它就不受任何影響,使用它的應(yīng)用程序也不需作任何改動(dòng)。第20頁(yè),共52頁(yè),2024年2月25日,星期天1.3.2數(shù)據(jù)存取流程
數(shù)據(jù)庫(kù)系統(tǒng)中一個(gè)用戶單元包括這樣幾個(gè)部分:用戶程序、數(shù)據(jù)區(qū)和通信區(qū)。用戶工作區(qū)中存放應(yīng)用程序和與數(shù)據(jù)庫(kù)交換的數(shù)據(jù)。以一次查詢?yōu)槔f(shuō)明數(shù)據(jù)庫(kù)使用時(shí)的工作流程。工作流見(jiàn)圖:
1.用戶程序向DBMS發(fā)出查詢請(qǐng)求,提供查詢參數(shù)。
695432187DBMSOS用戶程序系統(tǒng)緩沖區(qū)內(nèi)模式概念模式外模式數(shù)據(jù)區(qū)通信區(qū)DB系統(tǒng)的存取流程第21頁(yè),共52頁(yè),2024年2月25日,星期天數(shù)據(jù)存取流程 2.DBMS對(duì)用戶作合法性檢查,決定是否接受用戶的查詢請(qǐng)求。對(duì)合法用戶,根據(jù)應(yīng)用程序?qū)?yīng)的子模式確定訪問(wèn)對(duì)象。
3.調(diào)用模式,根據(jù)子模式——模式映射關(guān)系確定要訪問(wèn)的數(shù)據(jù)在全局模式中的位置。
4.根據(jù)模式——內(nèi)模式映射關(guān)系確定訪問(wèn)對(duì)象的存貯信息。
5.向操作系統(tǒng)發(fā)出讀取數(shù)據(jù)的命令。
6.OS按照存取方法把要訪問(wèn)的對(duì)象從存儲(chǔ)設(shè)備讀出并送入系統(tǒng)緩沖區(qū)。
7.DBMS把系統(tǒng)緩沖區(qū)的物理數(shù)據(jù)轉(zhuǎn)換成用戶所需的邏輯數(shù)據(jù)并送入用戶工作區(qū)。
8.DBMS向用戶單元的通信區(qū)發(fā)出數(shù)據(jù)查詢完成的信號(hào)。
9.應(yīng)用程序接到通信區(qū)的信號(hào)后從用戶工作區(qū)讀取數(shù)據(jù)。第22頁(yè),共52頁(yè),2024年2月25日,星期天1.3.3DBMS的功能 1)數(shù)據(jù)定義功能及語(yǔ)言
DBMS提供數(shù)據(jù)定義語(yǔ)言DDL(DataDiscriptionLanguage)。DDL用于定義數(shù)據(jù)庫(kù)結(jié)構(gòu)。數(shù)據(jù)庫(kù)系統(tǒng)有三個(gè)抽象層次,依據(jù)面對(duì)的不同層次,分為模式定義語(yǔ)言、子模式定義語(yǔ)言和存儲(chǔ)模式定義語(yǔ)言。
2)數(shù)據(jù)存取功能及執(zhí)行語(yǔ)言
DBMS為用戶提供數(shù)據(jù)操縱語(yǔ)言DML(DataManipulationLanguage)。用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、插入、刪除、修改等操作。
3)數(shù)據(jù)庫(kù)的運(yùn)行管理功能 數(shù)據(jù)庫(kù)運(yùn)行管理功能控制整個(gè)系統(tǒng),保證數(shù)據(jù)庫(kù)安全運(yùn)行。在數(shù)據(jù)庫(kù)的存取操作中進(jìn)行安全性、完整性檢查并實(shí)行并發(fā)控制。DBMS提供授權(quán)機(jī)制,掌握用戶對(duì)數(shù)據(jù)庫(kù)的使用權(quán)限,對(duì)非法用戶拒絕操作;由數(shù)據(jù)控制語(yǔ)言DBCL完成安全性控制。另外,系統(tǒng)設(shè)有總控程序,以控制協(xié)調(diào)數(shù)據(jù)庫(kù)的活動(dòng)。第23頁(yè),共52頁(yè),2024年2月25日,星期天DBMS的功能
4)數(shù)據(jù)庫(kù)建立和維護(hù)功能 此功能包括:在定義好的數(shù)據(jù)庫(kù)模式中裝入初始數(shù)據(jù),完成數(shù)據(jù)庫(kù)的建造;建立工作日志并作有關(guān)數(shù)據(jù)更新的詳細(xì)記錄;數(shù)據(jù)庫(kù)在開始運(yùn)行后定期進(jìn)行轉(zhuǎn)儲(chǔ)作為備份,以備數(shù)據(jù)庫(kù)遭意外時(shí)恢復(fù)數(shù)據(jù);數(shù)據(jù)庫(kù)破壞后根據(jù)備份和工作日志進(jìn)行恢復(fù);進(jìn)行性能監(jiān)側(cè)、分析,根據(jù)系統(tǒng)運(yùn)行的時(shí)間空間使用情況以決定是否需要重新組織數(shù)據(jù)庫(kù);對(duì)數(shù)據(jù)庫(kù)進(jìn)行重組改進(jìn)。系統(tǒng)備有一整套相應(yīng)的服務(wù)性程序完成各項(xiàng)功能。
5)數(shù)據(jù)通信功能
DBMS要接受應(yīng)用程序通過(guò)DML發(fā)出的操作請(qǐng)求,要通過(guò)操作系統(tǒng)訪問(wèn)數(shù)據(jù)庫(kù),即在數(shù)據(jù)與應(yīng)用程序間傳送數(shù)據(jù),所以須具備向內(nèi)對(duì)操作系統(tǒng)向外對(duì)應(yīng)用程序的通信功能。第24頁(yè),共52頁(yè),2024年2月25日,星期天第二章關(guān)系模型系統(tǒng)
在數(shù)據(jù)庫(kù)技術(shù)中實(shí)際采用的三種數(shù)據(jù)模型中,關(guān)系模型普及最快、應(yīng)用最廣,僅憑通俗易懂易操作這一點(diǎn),關(guān)系模型就從各類數(shù)據(jù)模型中勝出,成為數(shù)據(jù)庫(kù)技術(shù)的主流產(chǎn)品。本章介紹關(guān)系模型的概念和關(guān)系模型的數(shù)據(jù)定義、數(shù)據(jù)操縱語(yǔ)言。2.1關(guān)系型數(shù)據(jù)庫(kù)的特點(diǎn)
1)數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單。關(guān)系即日常事務(wù)管理中使用的表格,通俗易懂。
2)結(jié)構(gòu)劃一。關(guān)系模型對(duì)實(shí)體和實(shí)體間聯(lián)系都用關(guān)系表達(dá)。
3)數(shù)據(jù)操縱語(yǔ)言為非過(guò)程型。關(guān)系模型的查詢是數(shù)學(xué)演算過(guò)程,通過(guò)查詢語(yǔ)句提出條件,系統(tǒng)自己完成任務(wù),用戶只需了解少數(shù)幾條規(guī)則即可使用,不必去了解物理存貯細(xì)節(jié),這是關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)在非專業(yè)用戶中非常容易接受的主要原因。
4)數(shù)據(jù)獨(dú)立性好。關(guān)系模型的查詢通過(guò)查詢條件完成,與數(shù)據(jù)結(jié)構(gòu)無(wú)關(guān),用戶程序穩(wěn)定,有利于數(shù)據(jù)共享。
5)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)有堅(jiān)實(shí)的理論基礎(chǔ)。關(guān)系模型的誕生和發(fā)展都在關(guān)系數(shù)據(jù)理論的指導(dǎo)下進(jìn)行,其數(shù)學(xué)基礎(chǔ)就是集合論,它的設(shè)計(jì)、操作都有理論依據(jù),設(shè)計(jì)過(guò)程嚴(yán)謹(jǐn)、規(guī)范。
第25頁(yè),共52頁(yè),2024年2月25日,星期天2.2關(guān)系及關(guān)系模型的概念2.2.1關(guān)系 設(shè)有n個(gè)集合(域)D1,D2……Dn。順序從各個(gè)集合Di中任意取出一個(gè)元素di構(gòu)成一個(gè)有序n元組〈d1,d2,……dn〉,其中di∈Di,這樣的元組構(gòu)成的集合即為一個(gè)D1
,……Dn上的n元關(guān)系,簡(jiǎn)稱關(guān)系。例:集合A={a1,a2,a3},B={b1,b2},C={c1,c2,c3,c4}。則{〈a1,b2,c3〉,〈a3,b1,c4〉,〈a1,b1,c2〉}為A、B、C上的一個(gè)3元關(guān)系。 日常事務(wù)中,經(jīng)常用表格的形式進(jìn)行記錄。如新生登記表是一個(gè)關(guān)系:關(guān)系有如下性質(zhì):1.關(guān)系中沒(méi)有完全相同的元組;2.元組的順序無(wú)關(guān);3.同列元素出于同一個(gè)域,是同類型數(shù)據(jù),不同列元素有不同的屬性名,不同屬性可以有相同的屬性域;4.屬性值是原子的,不能是元素組。通知號(hào)姓名性別年齡錄取系報(bào)考地0001丁一男18計(jì)算機(jī)廣州0002馬二女17管理
上海0003張三女19計(jì)算機(jī)北京0004李四男18管理北京………………第26頁(yè),共52頁(yè),2024年2月25日,星期天2.2.2關(guān)系模型1.關(guān)系模型 關(guān)系模型對(duì)實(shí)體及實(shí)體間的聯(lián)系均用表格即關(guān)系表達(dá),即一個(gè)關(guān)系模型就是一個(gè)關(guān)系模式的集合,這些關(guān)系模式構(gòu)成一個(gè)整體,用整齊劃一的結(jié)構(gòu)表達(dá)了一個(gè)信息世界。如“學(xué)生選課”信息模型:有如下關(guān)系模式:
S[S#,SN,SEX,DN]屬性集:學(xué)號(hào)、學(xué)生姓名、性別、系名;
C[C#,CN,H,C] 屬性集:課號(hào)、課名、學(xué)時(shí)、學(xué)分;
SC[S#,C#
,G] 屬性集:學(xué)號(hào)、課號(hào)、分?jǐn)?shù)。關(guān)系名分別為S、C、SC,他們構(gòu)成學(xué)生選課的一個(gè)關(guān)系模型。S#SNSEX學(xué)生DNGC#CNHC選課課程第27頁(yè),共52頁(yè),2024年2月25日,星期天關(guān)系模型2.碼(關(guān)鍵字key)
在一個(gè)關(guān)系中,若有一個(gè)或一組屬性,其值可標(biāo)識(shí)唯一元組,且不含多余屬性,則稱為關(guān)系的候選碼,簡(jiǎn)稱碼,也稱關(guān)鍵字。一個(gè)關(guān)系若有多個(gè)碼,則在其中指定一個(gè)作為數(shù)據(jù)庫(kù)的操作依據(jù),稱為主碼。在上述關(guān)系S、C、SC中,主碼分別為S#、C#
和(S#,C#)。 表達(dá)多個(gè)實(shí)體間復(fù)雜聯(lián)系的關(guān)系,如關(guān)系SC,其碼必然是多屬性。極端情況下,碼由全體屬性組成,稱為全碼。如案件審理關(guān)系:
R[法官原告被告]
每個(gè)屬性都不能代表唯一的元組,每?jī)蓚€(gè)屬性也不行,必須3個(gè)屬性一起,稱為全碼關(guān)系。3.外碼 若某屬性A在關(guān)系R1中不是碼,但在關(guān)系R2中是主碼,則稱A為R1的外碼。如在關(guān)系SC中,S#和C#
單獨(dú)都不是SC的碼,但它們分別是關(guān)系S和關(guān)系C的主碼,所以它們?cè)赟C中是外碼。第28頁(yè),共52頁(yè),2024年2月25日,星期天關(guān)系模型
例:有學(xué)生S和系D關(guān)系:
D#是D的碼,S的外碼,在S中D#或是D中的一個(gè)值,或?yàn)榭眨▌傓D(zhuǎn)入的學(xué)生(如立四)可暫時(shí)不確認(rèn)系)。4.關(guān)系型數(shù)據(jù)庫(kù)必須遵循的完整性原則 實(shí)體完整性:關(guān)系的主碼值不可為空。 相關(guān)完整性:關(guān)系R1的外碼A的值,或在A作主碼的關(guān)系R2中存在,或?yàn)榭罩怠#SNSEXD#S1丁一男D1S2馬二女D1S3張三女D2S4李四男^…………D#DNDMLOCD1計(jì)算機(jī)王B1D2信息女B1…………SD第29頁(yè),共52頁(yè),2024年2月25日,星期天2.3關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)操縱語(yǔ)言DML
數(shù)據(jù)操縱語(yǔ)言DML包括數(shù)據(jù)查詢和數(shù)據(jù)插入、刪除、修改等操作。2.3.1關(guān)系代數(shù) 關(guān)系代數(shù)通過(guò)運(yùn)算實(shí)現(xiàn)查詢。關(guān)系運(yùn)算可分為兩類,一類是集合運(yùn)算,一類是關(guān)系特有的運(yùn)算。1.集合運(yùn)算設(shè)R、S兩關(guān)系,則R∪S,R∩S、R-S和R×S(直積,笛卡爾積):
ABCa1b1c1a1b2c3a3b1c2a2b1c3
RABCa1b2c3a3b2c1a1b1c2a2b1c3
SABCa1b1c1a1b2c3a3b1c2a2b1c3a3b2c1a1b1c2
R∪SABC
a1b2c3a2b1c3R∩SABCa1b1c1a3b1c2R-SABCABCa1b1c1a1b2c3a1b1c1a3b2c1a1b1c1a1b1c2a1b1c1a2b1c3a1b2c3a1b2c3………………..………………..………………..
R×S第30頁(yè),共52頁(yè),2024年2月25日,星期天2.關(guān)系特有的運(yùn)算1)
投影運(yùn)算Π
定義:設(shè)屬性集U上的關(guān)系R,X是U的子集。則R在X上的投影:
Πx(R)={t(X)|t∈R} t(X)表示元組t在X上的分量。
2)選擇運(yùn)算σ
定義:設(shè)屬性集U上的關(guān)系R,選擇運(yùn)算從R中選出滿足條件g元組,即:
σg(R)={t|t∈R∧g(t)為真}ABCa1b2c3a3b2c1a2b1c2a2b2c1RCAc3a1c1a3c2a2c1a2Π3,1(R)BCb2c3b2c1b1c2ΠBC(R)第31頁(yè),共52頁(yè),2024年2月25日,星期天關(guān)系特有的運(yùn)算例:設(shè)關(guān)系:
σD#=‘D1’∧SEX=‘女’(S)3)聯(lián)接運(yùn)算(條件聯(lián)接)定義:屬性集U和V上分別有關(guān)系R、S,屬性組X
U,Y
V,X與Y同名或同域可比,則R和S關(guān)于X和Y的條件聯(lián)接,為元組r和s的串接:
R
S={rs|r∈Rs∈S∧r(X)θs(Y)}
其中θ為算術(shù)比較符。S#SNSEXD#S1丁一男D1S2馬二女D1S3張三女D2S4李四男^…………SS#SNSEXD#S2馬二女D1第32頁(yè),共52頁(yè),2024年2月25日,星期天關(guān)系特有的運(yùn)算例:建材關(guān)系J[J#ML],工程號(hào):J#,材料:M,要求材料等級(jí)為L(zhǎng);供應(yīng)商可供材料關(guān)系S[S#ML],表示供應(yīng)商S#可供材料M,等級(jí)為L(zhǎng)。4)自然聯(lián)接 定義:R、S分別為屬性集U、V上的關(guān)系,U、V的公共屬性為X,則R和S的自然聯(lián)接:
R∞S={|r∈R∧s∈S∧r(X)=s(X)},其中=V-X。上例,設(shè)X=ML,則R∞SJ#MLS#ML1
水泥
31水泥
21水泥32水泥32
鋼筋
42鋼筋
3JSS#ML1
水泥
22
水泥
3
3
水泥
42
鋼筋
3J#
ML1
水泥
32
鋼筋
4JSJ#
MLS#1水泥32第33頁(yè),共52頁(yè),2024年2月25日,星期天關(guān)系特有的運(yùn)算5)除法÷
定義:R、S分別為屬性組XY、YZ上的關(guān)系,其中X與Y、Y與Z不相交,則R÷S為R上這樣的X屬性值:R上X值在Y屬性值上的像集包含了S上所有的Y屬性值。例: 因?yàn)镾1的像集={C1,C3},不包含{C1,C2,C3},所以S1不為結(jié)果;而S2的像集={C1,C2,C3},故S2為結(jié)果(他選修了全部課程);同理,S3不為結(jié)果。ΠS#C#(SC)÷C
S#S2
S#C#GS1C190S1C376S2C183S2C269S2C372S3C266S3C389
SC
C#CNHC1
MATH96C2
DB72C3DS54
CXYY第34頁(yè),共52頁(yè),2024年2月25日,星期天2.3.2關(guān)系代數(shù)完成數(shù)據(jù)查詢
在學(xué)生管理數(shù)據(jù)庫(kù)中完成以下查詢。數(shù)據(jù)庫(kù)有三個(gè)關(guān)系S[S#
SN
SEX
AGE
D]、C[C#
CN
H
T]和SC[S#
C#
G]。
1)給出計(jì)算機(jī)系所有女生的姓名: ∏SN(σD=‘計(jì)算機(jī)系’∧
SEX=‘女’(S))。
2)給出數(shù)學(xué)成績(jī)優(yōu)秀的學(xué)生及所在系: ∏SN,D((σCN=‘MATHG’∧G≥90(SC∞C∞S)))。
3)給出學(xué)過(guò)王老師課的學(xué)生名: ∏SN(SC∞σT=‘王’(C)∞S)。
4)查沒(méi)學(xué)過(guò)王老師課的學(xué)生: ∏SN((∏S#(S)-∏S#(SC∞σT=‘王’(C)))∞S)。
5)查出學(xué)過(guò)王老師教的所有課的學(xué)生: ∏S#C#(SC)÷σT=‘王’(C)。第35頁(yè),共52頁(yè),2024年2月25日,星期天2.4關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言SQL
SQL(StructuredQueryLanguage)----結(jié)構(gòu)化查詢語(yǔ)言,于1974年由IBM公司研制成功,在RDBMSSystemR上實(shí)現(xiàn)。它的功能強(qiáng)大、靈活、簡(jiǎn)單易學(xué),很受用戶歡迎,于86年美國(guó)標(biāo)準(zhǔn)局把它定為關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,很快國(guó)際標(biāo)準(zhǔn)化組織也采納了美國(guó)的標(biāo)準(zhǔn)。此后經(jīng)過(guò)不斷的增補(bǔ),修訂和擴(kuò)充,形成了1992年公布的標(biāo)準(zhǔn),使SQL的功能有了很大的提高,適用范圍大大擴(kuò)展?,F(xiàn)在SQL已成為一種功能全面的數(shù)據(jù)庫(kù)語(yǔ)言,是各種機(jī)型各種數(shù)據(jù)庫(kù)系統(tǒng)都采用的數(shù)據(jù)存取標(biāo)準(zhǔn)語(yǔ)言。
SQL的起源是查詢語(yǔ)言,隨著不斷的修訂和擴(kuò)充,SQL已成為包括數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)控制的全功能的數(shù)據(jù)語(yǔ)言。SQL可以支持一個(gè)關(guān)系數(shù)據(jù)庫(kù)從建立到使用、運(yùn)行、維護(hù)的全過(guò)程。
SQL的使用非常靈活,既可以在屏幕上做即席查詢,也可嵌入主語(yǔ)言完成應(yīng)用程序。兩種使用方式的語(yǔ)法結(jié)構(gòu)基本一致,語(yǔ)句使用英語(yǔ)短語(yǔ),即使是非專業(yè)用戶也非常容易理解。數(shù)據(jù)庫(kù)技術(shù)的推廣、普及、發(fā)展,很大程度上得益于SQL語(yǔ)言。第36頁(yè),共52頁(yè),2024年2月25日,星期天2.4.1SQL的層次結(jié)構(gòu) SQL支持?jǐn)?shù)據(jù)庫(kù)系統(tǒng)三層結(jié)構(gòu)的概念。SQL的概念層由一系列基本表構(gòu)成。每個(gè)基本表有一個(gè)存儲(chǔ)文件與之對(duì)應(yīng),對(duì)每一個(gè)表還可建立若干索引。存儲(chǔ)文件、索引以及對(duì)它們的描述構(gòu)成了數(shù)據(jù)庫(kù)的內(nèi)層。數(shù)據(jù)庫(kù)的外層是用戶訪問(wèn)數(shù)據(jù)庫(kù)的窗口,稱為視圖,即用戶的數(shù)據(jù)觀點(diǎn)。視圖也稱為“虛表”。當(dāng)視圖被訪問(wèn)時(shí),系統(tǒng)根據(jù)其定義把基本表中的數(shù)據(jù)映射到視圖中提供給用戶。SQL的層次結(jié)構(gòu)見(jiàn)圖:用戶層概念層內(nèi)層…………視圖1基本表1存儲(chǔ)文件1存儲(chǔ)文件n基本表n視圖2視圖mDBMS…第37頁(yè),共52頁(yè),2024年2月25日,星期天2.4.2SQL數(shù)據(jù)操縱語(yǔ)言DML
以學(xué)生管理數(shù)據(jù)庫(kù)為例說(shuō)明SQL的數(shù)據(jù)庫(kù)操縱語(yǔ)言,即數(shù)據(jù)查詢和數(shù)據(jù)更新。設(shè)數(shù)據(jù)庫(kù)中有S[S#SNSEXAGED]、C[C#CNHT]和SC[S#C#G]三個(gè)關(guān)系模式,S和C分別表示學(xué)號(hào)、姓名、性別、年齡、系和課號(hào)、課名、學(xué)時(shí)、任課教師。1.數(shù)據(jù)查詢SQL查詢語(yǔ)句的基本格式為:
selectA1,A2,…AmfromR1,…Rn [where(條件)] [groupbyAi[hving(條件)]] [orderbyAj[ASC|DESC]];
意思是在關(guān)系R1…Rn中查找符合條件的元組,取這些元組中屬性A1,…Am的值;結(jié)果元組可以按Ai,根據(jù)所給條件分組,可以Aj按排序。第38頁(yè),共52頁(yè),2024年2月25日,星期天SQL的查詢1)簡(jiǎn)單查詢 例1:找出計(jì)算機(jī)系女同學(xué)的姓名和年齡,并按年齡降序排序:
selectSN,AGEfromS whereD=‘計(jì)算機(jī)系’ANDSEX=‘女’
orderbyAGEDESC;2)聯(lián)接查詢 例2:給出成績(jī)優(yōu)秀的學(xué)生名。 方法1:
select(DISTINCT)SNfromS,SC whereS.S#=SC.S#ANDG>=90; 方法2:
selectSNfromS whereS#
IN(selectS#fromSCwhereG>=90);第39頁(yè),共52頁(yè),2024年2月25日,星期天SQL的查詢
例3:查出數(shù)學(xué)成績(jī)優(yōu)秀的學(xué)生名。
selectSNfromS whereS#IN(selectS#fromSCwhereG>=90AND C#IN(selectC#fromCwhereCN=‘math’));
例4:查數(shù)學(xué)和英語(yǔ)均優(yōu)的學(xué)生號(hào)(略)。 例5:查學(xué)過(guò)王老師課的學(xué)號(hào)。
selectS#fromSC whereC#IN(selectC#fromCwhereT=‘王’);第40頁(yè),共52頁(yè),2024年2月25日,星期天SQL的查詢
3)使用元組變量的查詢(略)
4)分組查詢
SQL設(shè)了分組語(yǔ)句group,采用分組語(yǔ)句的查找格式為:
selectA,B,……fromRgroupby屬性Ahaving(條件). group分語(yǔ)的含義是:滿足條件的、屬性A的值相同的元組為一組。R的元組分組后,得到R的若干子集,在每個(gè)子集中,屬性A的值是共同的,其它屬性值則構(gòu)成集合。 例7:查學(xué)了王老師所有課的學(xué)號(hào)。
selectS#
fromSC groupbyS# havingSET(C#)CONTAINS(selectC#fromCwhereT=‘王’). SET(C#):某個(gè)S#
對(duì)應(yīng)的一組中課號(hào)C#的集合,即相應(yīng)S#學(xué)過(guò)的課。若這個(gè)集合包含了王老師教的全部課,則此S#被選出。第41頁(yè),共52頁(yè),2024年2月25日,星期天SQL的查詢5)
統(tǒng)計(jì)查詢
SQL設(shè)有庫(kù)函數(shù)可在查詢中直接引用,除集合函數(shù)SET已經(jīng)用過(guò),還有COUNT(計(jì)數(shù))、SUM(求和)、AVG(求平均值)、MAX(取最大值)、MIN(取最小值)。 例10:求所有學(xué)生的平均年齡。
selectAVG(AGE)fromS;
例11:求各門課的最高分,最低分,平均分:
selectC#,MAX(G),MIN(G),AVG(G)fromSC groupbyC#;
6)模糊查詢
SQL還提供了模糊查詢即條件不完全查詢的查詢方式,比如查學(xué)生“王力”,where語(yǔ)句中寫入SN=‘王力’即可。但如果要查的是一個(gè)王姓同學(xué),則可在where語(yǔ)句中寫SNLIKE‘字符串’。字符串中下劃線表示單個(gè)字符,百分號(hào)%代表任意長(zhǎng)字符。如只知姓王則可用‘王%’代之。 例:selectSNfromS whereSNLIKE‘王%’;第42頁(yè),共52頁(yè),2024年2月25日,星期天SQL的數(shù)據(jù)更新
數(shù)據(jù)更新操作包括插入、刪除和修改。1)插入插入命令的語(yǔ)句格式:
insertintoR(A1,A2,…An)values(t1,t2,…tn); 或:insertintoR(A1,A2,…An)(select語(yǔ)句); 前一命令是向關(guān)系R插入一個(gè)新元組值,元組中各屬性值的順序要與屬性名表中屬性的順序?qū)?yīng)。后一命令是把一個(gè)現(xiàn)有關(guān)系中的數(shù)據(jù)成批地插到關(guān)系R中,查詢語(yǔ)句中的屬性名表須與命令中的屬性名表一致。 例1:把王力的情況記錄插入學(xué)生關(guān)系S中:
insertintoSvalues(S30,王力,男,18,機(jī)械系); 例2:新生報(bào)到后,新生記錄在關(guān)系SS中,現(xiàn)要按系存到各系的學(xué)生關(guān)系中,如計(jì)算機(jī)系關(guān)系為S-C,則:
insertintoS-C(select*fromSSwhereD=‘計(jì)算機(jī)系’);
例3:現(xiàn)有課選課表SC2[S#,C#],要插到關(guān)系SC中:
insertintoSC(S#,C#)(selectS#,C#fromSC2);
插入命令中只有SC的兩個(gè)屬性,則系統(tǒng)自動(dòng)把插入元組的G值置為空。第43頁(yè),共52頁(yè),2024年2月25日,星期天SQL的數(shù)據(jù)更新2)刪除 數(shù)據(jù)刪除可以一次刪除指定的一個(gè)元組或是滿足條件的全部元組,刪除命令是delete。
例:deletefromSCwhereS#=‘S1’;deletefromSwhereS#=‘S1’;
前一命令刪除SC中有關(guān)S1的一批元組,后一命令在S中刪除S1一個(gè)元組。(如果只有后一個(gè)命令,會(huì)造成什么局面?)3)修改 修改命令的格式為: updateRsetA=(新值)where(條件);
即更新關(guān)系R中滿足條件的元組中屬性A的值,新值在set語(yǔ)句中給出。例1:學(xué)生李力調(diào)到計(jì)算機(jī)系。
updateSsetD=‘計(jì)算機(jī)’
whereS#
IN(selectS#fromSwhereSN=‘李力’)。
例2:計(jì)算機(jī)系學(xué)生年齡增加1歲。
updateSsetAGE=AGE+1 whereS#
IN(selectS#fromSwhereD=‘計(jì)算機(jī)系’);第44頁(yè),共52頁(yè),2024年2月25日,星期天2.4.3嵌入式SQL
前面介紹了SQL的基本語(yǔ)句。當(dāng)以交互式訪問(wèn)數(shù)據(jù)庫(kù)時(shí),鍵入SQL語(yǔ)句就可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的查詢或更新。但這些語(yǔ)句不能構(gòu)成應(yīng)用程序,因而使用效率較低。大規(guī)模數(shù)據(jù)管理需要自動(dòng)、快速、大批量的處理數(shù)據(jù),這就需要大型應(yīng)用程序來(lái)承擔(dān)這樣的任務(wù)。應(yīng)用程序由高級(jí)語(yǔ)言編寫,SQL嵌入高級(jí)語(yǔ)言即主語(yǔ)言的程序中,成為高級(jí)語(yǔ)言和數(shù)據(jù)庫(kù)之間的數(shù)據(jù)接口:SQL負(fù)責(zé)與數(shù)據(jù)庫(kù)操作和交換數(shù)據(jù),程序的控制、數(shù)據(jù)的處理由高級(jí)語(yǔ)言完成。SQL可嵌入的高級(jí)語(yǔ)言有COBOL、FORTRAN、C等。 嵌入式SQL與交互式SQL語(yǔ)法結(jié)構(gòu)相同,但使用方式不同,所以必須作些相應(yīng)的準(zhǔn)備。
1)設(shè)立SQL與主語(yǔ)言的通信區(qū)SQLCA,通信區(qū)中主要是描述系統(tǒng)當(dāng)前狀態(tài)和運(yùn)行環(huán)境的數(shù)據(jù)。
2)為區(qū)別于主語(yǔ)言,SQL語(yǔ)句要加標(biāo)志。語(yǔ)句前的標(biāo)志為前綴“EXECSQL”。
3)交互式select語(yǔ)句直接把查詢結(jié)果在屏幕上顯示或打印輸出。嵌入式SQL中,稱主程序的變量為主變量,查詢出的數(shù)據(jù)要送入主變量交由主語(yǔ)言處理,輸入數(shù)據(jù)也由主變量給出,即嵌入式SQL要通過(guò)主變量與主語(yǔ)言交換數(shù)據(jù)。SQL語(yǔ)句中的主變量前加“:”。第45頁(yè),共52頁(yè),2024年2月25日,星期天嵌入式SQL
如要把學(xué)號(hào)主變量X=‘S3’的學(xué)生情況從數(shù)據(jù)庫(kù)查出送給主變量Y、Z、W(姓名、年齡、系),則SQL語(yǔ)句寫為:
selectSN,AGE,Dinto:Y,:Z,:WfromSwhereS#=:X;
主變量在說(shuō)明節(jié)中說(shuō)明,其格式為:
EXECSQLBEGINDECLARESECTION
主變量名類型長(zhǎng)度(如:Xchar6) …… EXECSQLENDDECLARESECTION
通過(guò)主變量從SQL語(yǔ)句取得數(shù)據(jù)后即可對(duì)其進(jìn)行處理。
SQL的查詢結(jié)果經(jīng)常是一批數(shù)據(jù),但一個(gè)主變量名一次只能接收一個(gè)值。為了協(xié)調(diào)SQL和主語(yǔ)言的處理節(jié)奏,SQL設(shè)立了游標(biāo)(指針),指向一組查詢結(jié)果,稱為游標(biāo)的活動(dòng)集。第46頁(yè),共52頁(yè),2024年2月25日,星期天嵌入式SQL游標(biāo)操作(1)游標(biāo)定義:
DECLARE游標(biāo)名CURSORFOR(select子查詢)。如:EXECSQLDECLARESSCURSORFOR (selectS#,SN,AGEfromSwhereD=‘計(jì)算機(jī)系’); 即說(shuō)明游標(biāo)SS是查詢計(jì)算機(jī)系學(xué)生結(jié)果元組的指針。(2)用游標(biāo)作查詢 打開游標(biāo):OPENSS。啟動(dòng)游標(biāo)SS,執(zhí)行相應(yīng)的select語(yǔ)句,且游標(biāo)指向查詢結(jié)果的第一個(gè)元組。 拔動(dòng)游標(biāo):FETCHSSINTO(主變量表)。把游標(biāo)所指的當(dāng)前值送給主變量,撥動(dòng)游標(biāo),使之指向查詢的下一個(gè)元組。 關(guān)閉游標(biāo):CLOSESS。游標(biāo)不再有效,F(xiàn)ETCH語(yǔ)句不再起作用。
第47頁(yè),共52頁(yè),2024年2月25日,星期天嵌入式SQL
例:用游標(biāo)SS讀出計(jì)算機(jī)系學(xué)生。
EXECSQLOPENSS; EXECSQLFET
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同范例在下
- 廈門學(xué)校食堂承包合同范例
- 臨時(shí)土地合同范本
- 吉他老師合同范本
- 2025年麻風(fēng)二聯(lián)苗合作協(xié)議書
- 債權(quán)協(xié)議合同范本
- 綠化設(shè)計(jì)苗木合同范本
- 代辦貸款定金合同范例
- 勞動(dòng)合同范本講解
- 發(fā)票業(yè)務(wù)合同范本
- 物體打擊傷亡事故應(yīng)急處置卡
- 2024-2030年中國(guó)飛機(jī)AFP和ATL復(fù)合材料行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 七年級(jí)英語(yǔ)上冊(cè)(人教版2024)新教材解讀課件
- 中醫(yī)食療藥膳學(xué)智慧樹知到答案2024年四川護(hù)理職業(yè)學(xué)院
- NB/T 11431-2023土地整治煤矸石回填技術(shù)規(guī)范
- 中醫(yī)師承跟師筆記50篇
- 聚乳酸-標(biāo)準(zhǔn)規(guī)程
- 任務(wù)型閱讀-小升初英語(yǔ)專項(xiàng)練習(xí)(譯林版三起)
- 部編版語(yǔ)文二年級(jí)下冊(cè)第三單元教材解讀大單元集體備課
- 七年級(jí)地理上冊(cè)期末試卷(可打印)
- ISO28000:2022供應(yīng)鏈安全管理體系
評(píng)論
0/150
提交評(píng)論