數(shù)據(jù)庫概論課件_第1頁
數(shù)據(jù)庫概論課件_第2頁
數(shù)據(jù)庫概論課件_第3頁
數(shù)據(jù)庫概論課件_第4頁
數(shù)據(jù)庫概論課件_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫概論

E-R模型、關(guān)系代數(shù)與SQL語言1數(shù)據(jù)庫的應(yīng)用2學(xué)員信息管理系統(tǒng)

檔案卷宗數(shù)據(jù)庫3中大型超市結(jié)算系統(tǒng)

數(shù)據(jù)庫1,200工商銀行4大型行業(yè)數(shù)據(jù)管理系統(tǒng)工商、稅務(wù)業(yè)務(wù)管理系統(tǒng)公安戶籍人口管理系統(tǒng)民航、火車訂票系統(tǒng)水文、氣象數(shù)據(jù)管理系統(tǒng)……56數(shù)據(jù)模型與數(shù)據(jù)模式之關(guān)系數(shù)據(jù)模型(DataModel)即是對數(shù)據(jù)進(jìn)行抽象化表示的工具,主要使用邏輯概念(如對象、對象屬性、對象聯(lián)系等)來表示數(shù)據(jù)。數(shù)據(jù)模式(DataSchema)根據(jù)數(shù)據(jù)模型來描述數(shù)據(jù),亦即是描述數(shù)據(jù)的模板。

通俗來講,數(shù)據(jù)模型就是對現(xiàn)實(shí)世界的模擬、描述或表示。數(shù)據(jù)模型應(yīng)滿足的三個(gè)要求:

(1)比較真實(shí)地描述現(xiàn)實(shí)世界;

(2)易為用戶所理解;

(3)易于在計(jì)算機(jī)上實(shí)現(xiàn)。7傳統(tǒng)數(shù)據(jù)模型回顧

(1)層次數(shù)據(jù)模型(HierarchicalDataModel)

HDM是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。20世紀(jì)60年代后期,IBM開發(fā)出IMS(InformationManagementSystem)DBMS,是層次數(shù)據(jù)模型的基礎(chǔ)。

用樹形結(jié)構(gòu)表示各類實(shí)體以及實(shí)體之間的聯(lián)系?,F(xiàn)實(shí)世界中許多實(shí)體之間的聯(lián)系就呈現(xiàn)出一種很自然的層次關(guān)系,如:行政機(jī)構(gòu)、家庭關(guān)系等。層次模型是以記錄型為結(jié)點(diǎn)的有向樹。8

按樹的定義,層次模型有以下兩個(gè)限制:☆只有一個(gè)結(jié)點(diǎn)沒有雙親結(jié)點(diǎn),即根結(jié)點(diǎn);☆根以外的其他結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn)。因此,層次數(shù)據(jù)庫系統(tǒng)只能處理一對多的實(shí)體關(guān)系。

層次模型中,每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型,結(jié)點(diǎn)之間的連線表示記錄類型間的聯(lián)系。這種聯(lián)系只能是父子聯(lián)系。

層次模型的另一個(gè)最基本的特點(diǎn)是:任何一個(gè)給定的的記錄值只有按其路徑查看時(shí),才能顯出它的全部意義,沒有一個(gè)子女記錄值能夠脫離雙親記錄值而獨(dú)立存在。9

(2)網(wǎng)狀數(shù)據(jù)模型(NetDataModel)

用層次模型表示非樹型結(jié)構(gòu)很不直接,網(wǎng)狀模型則可克服這一弊病。

網(wǎng)狀數(shù)據(jù)模型的典型代表是DBTG系統(tǒng),亦稱CODASYL系統(tǒng)。是由美國數(shù)據(jù)庫系統(tǒng)語言協(xié)會CODASYL(ConferenceOnDataSystemLanguage)下屬的DBTG(DataBaseTaskGroup)于60年代末70年代初提出的一個(gè)系統(tǒng)方案,形成DBTG報(bào)告。網(wǎng)狀模型比層次模型更具普遍性。

它去掉了層次模型的兩個(gè)限制,允許結(jié)點(diǎn)有多個(gè)雙親結(jié)點(diǎn)。可比層次模型更直接地描述現(xiàn)實(shí)世界。

10數(shù)據(jù)庫系統(tǒng)的歷史20世紀(jì)50年代和60年代早期:磁帶被用于數(shù)據(jù)存儲。磁帶(和卡片)都只能順序讀取,因此,數(shù)據(jù)處理程序被迫用一種特定的順序?qū)?shù)據(jù)進(jìn)行處理。20世紀(jì)60年代末和20世紀(jì)70年代:硬盤廣泛使用。因?yàn)橛脖P允許直接對數(shù)據(jù)進(jìn)行訪問,磁盤上數(shù)據(jù)的位置變得無關(guān)緊要,數(shù)據(jù)由此擺脫了順序訪問的限制。有了磁盤,就可以創(chuàng)建網(wǎng)絡(luò)和層次的數(shù)據(jù)庫,保存在磁盤上的如表和樹這樣的數(shù)據(jù)結(jié)構(gòu)。11數(shù)據(jù)庫系統(tǒng)的歷史1970年,IBM研究院的Codd寫的一篇具有里程碑意義的論文,定義了關(guān)系模型和在關(guān)系模型中查詢數(shù)據(jù)的非過程方法,由此關(guān)系型數(shù)據(jù)庫誕生了。Codd因此獲得ACM圖靈獎(jiǎng)。20世紀(jì)80年代,IBM的DB2、甲骨文Oracle先后商品化20世紀(jì)90年代初:主要是為決策支持和查詢設(shè)計(jì)的SQL語言出現(xiàn)。20世紀(jì)80年代主要的數(shù)據(jù)庫是處理事務(wù)的應(yīng)用,它們是更新密集的。決策支持和查詢成為數(shù)據(jù)庫的主要應(yīng)用領(lǐng)域。12實(shí)體關(guān)系模型(Entity-RelationshipModel)實(shí)體-關(guān)系數(shù)據(jù)模型基于對現(xiàn)實(shí)世界的這樣一種認(rèn)識:現(xiàn)實(shí)世界由一組稱作實(shí)體的基本對象以及這些對象間的聯(lián)系構(gòu)成。實(shí)體是現(xiàn)實(shí)世界中可區(qū)別于其他對象的一件"事情"或一個(gè)"物體實(shí)體通過-些屬性來描述聯(lián)系是實(shí)體之間的關(guān)聯(lián)數(shù)據(jù)庫的總體邏輯結(jié)構(gòu)(模式}可以用E-R圖進(jìn)行圖形化表示:用一個(gè)屬性來唯一標(biāo)識實(shí)體,有必要的話可額外設(shè)置一個(gè)屬性。13關(guān)系舉例屬性(列)元組(行)14關(guān)系模式和實(shí)例A1,A2,…,An

是屬性R=(A1,A2,…,An)是關(guān)系模式

例子:

instructor=(ID,name,dept_name,salary)給定集合D1,D2,….Dn

,關(guān)系

r

D1xD2x…xDn的一個(gè)子集

即關(guān)系是一組n元組(a1,a2,…,an),其中ai

Di15大學(xué)數(shù)據(jù)庫模式圖16元組的選擇關(guān)系r選取A=B和D>5的元組σA=BandD>5(r)17列(屬性)的選擇關(guān)系r:

選擇

A和C投影Π

A,C(r)18關(guān)系的連接–笛卡爾積關(guān)系

r,s:rx

s:19關(guān)系的并關(guān)系

r,s:rs:20關(guān)系的集合差關(guān)系

r,s:r–s:21關(guān)系的集合交關(guān)系

r,s:r

s22自然連接關(guān)系r,s:自然連接rs23笛卡爾積:instructorXteachesinstructorteaches24連接哪位老師教了什么課

selectname,course_id

frominstructor,teaches

where

instructor.ID=teaches.IDComp.Sci.系提供哪些課程

selectsection.course_id,semester,year,title

fromsection,course

where

section.course_id=course.course_idand

dept_name=‘Comp.Sci.'

25SQL語言26關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQLSQL語言是一個(gè)十分重要的標(biāo)準(zhǔn)數(shù)據(jù)庫語言。SQL語言包括查詢、數(shù)據(jù)操縱、定義、控制和管理等功能。SQL語言是一個(gè)綜合的、通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫語言。27

SQL語言的幾個(gè)特點(diǎn):①語言一體化:②非過程化特點(diǎn):③面向集合的操作方式:④同一張愈發(fā)結(jié)構(gòu)提供兩種使用方式:⑤語言簡潔、易學(xué)易用。28①語言一體化:

關(guān)系數(shù)據(jù)語言集DDL,DML和DCL于一體,稱為一體化語言。SQL能完成定義關(guān)系模式、錄入數(shù)據(jù)以建立數(shù)據(jù)庫、查詢、更新、維護(hù)、數(shù)據(jù)庫安全控制等一系列操作要求。具有定義、查詢、更新、控制等多種功能。非關(guān)系模型的數(shù)據(jù)語言模式數(shù)據(jù)定義語言(模式DDL)外模式數(shù)據(jù)定義語言(外模式DDL或子模式DDL)與數(shù)據(jù)存儲有關(guān)的描述語言(DSDL)數(shù)據(jù)操縱語言(DML)29②高度非過程化特點(diǎn):關(guān)系數(shù)據(jù)語言是非過程化語言。在程序設(shè)計(jì)時(shí),只要求用戶表明“干什么”就行了,不必指明“怎么做”存取路徑的選擇以及SQL語句的操作過程由系統(tǒng)自動(dòng)完成。大大減輕了用戶負(fù)擔(dān),而且有利于提高數(shù)據(jù)獨(dú)立性。所以關(guān)系數(shù)據(jù)語言操作簡單,易學(xué)易用。30③面向集合的操作方式SQL語言采用集合操作方式操作對象、查找結(jié)果可以是元組的集合一次插入、刪除、更新操作的對象可以是元組的集合非關(guān)系數(shù)據(jù)模型采用的是面向記錄的操作方式,操作對象是一條記錄。31④同一種語法結(jié)構(gòu)提供兩種使用方式自含式語言能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式嵌入式語言能夠嵌入到高級語言(例如C,COBOL,F(xiàn)ORTRAN,PL/1)程序中,供程序員設(shè)計(jì)程序時(shí)使用。兩種不同使用方法下,SQL語言的語法結(jié)構(gòu)基本一致。32⑤語言簡潔、易學(xué)易用SQL功能動(dòng)詞數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)查詢SELECT數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKESQL語言的動(dòng)詞33SQL語言基礎(chǔ)基本表:本身獨(dú)立存在的表,是關(guān)系數(shù)據(jù)庫中最基本的對象,主要用于存儲各種數(shù)據(jù)(包括系統(tǒng)數(shù)據(jù))。視圖:是用戶看到的數(shù)據(jù)內(nèi)容,是由一個(gè)或幾個(gè)基本表重構(gòu)的虛表。它本身不獨(dú)立存在于數(shù)據(jù)庫中,只有對數(shù)據(jù)的定義,沒有實(shí)際存儲的對應(yīng)的數(shù)據(jù),它的所有數(shù)據(jù)都在與其相關(guān)的數(shù)據(jù)基本表中,因此對視圖的所有操作都將被最終轉(zhuǎn)換為對相關(guān)基本表數(shù)據(jù)的操作。索引:是對基本表建立的索引(查找)文件,用于方便對基本表的存取和查找。類似于字典中的拼音或部首的檢字表,通過該表我們可以非常容易地找到所要查找的字所在的位置(頁碼),并得到對該字的解釋。34基本表與視圖35數(shù)據(jù)定義概述SQL的數(shù)據(jù)定義功能定義表(模式)創(chuàng)建表(CREATETABLE)修改(ALTERTABLE)刪除(DROPTABLE)定義試圖(外模式)創(chuàng)建視圖(CREATEVIEW)刪除視圖(DROPVIEW)間接修改試圖定義:刪除+創(chuàng)建36數(shù)據(jù)定義概述操作對象操作方式創(chuàng)建刪除修改表CREATETABLEDROPTABLEALTERTABLE視圖CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEXSQL的數(shù)據(jù)定義語句37定義基本表1)創(chuàng)建基本表作用:建立一個(gè)用以存放用戶數(shù)據(jù)的表。表名:多要定義的基本表的名字列名:組成該表的各個(gè)屬性(列)列級完整性約束條件:涉及相應(yīng)屬性羅列的完整性約束條件表級完整性約束條件:涉及一個(gè)或多個(gè)屬性列的完整性約束條件語句格式:CREATETABLE表名(列名1數(shù)據(jù)類型[列級完整性約束][,列名2數(shù)據(jù)類型[列級完整性約束]]...

[表級完整性約束]);38數(shù)據(jù)類型

字符串型:CHAR(W):定長字符串型(長度為W<255)。VARCHAR(W):變長字符串型(最大長度為W)。

數(shù)值型:INT、SMALLINT:定點(diǎn)整數(shù)。NUMERIC、DECIMAL:定點(diǎn)小數(shù)。FLOAT、REAL等:浮點(diǎn)數(shù)。

日期/時(shí)間型:DATE:日期。TIME:時(shí)間。TIMESTAMP:日期時(shí)間。

二進(jìn)制位串型:BIT:定長二進(jìn)制位串。BITVAR:變長二進(jìn)制串。39例1建立一個(gè)“學(xué)生”表Student,它由學(xué)號Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個(gè)屬性組成。其中學(xué)號不能為空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAT(5)NOTNULLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15));40定義基本表常用完整性約束主碼約束:PRIMARYKEY唯一性約束:UNIQUE非空值約束:NOTNULL參照完整性約束PRIMARYKEY與UNIQIE的區(qū)別?41例2建立一個(gè)“學(xué)生選課”表SC,它由學(xué)號Sno、課程號Cno,修課成績組成,其中(Sno、Cno)為主碼。CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint,Primarykey(Sno,Cno));422)修改和擴(kuò)充基本表作用:增加一列、增加一個(gè)完整性約束條件,修改一個(gè)列以及表的重命名等。表名:要修改的基本表ADD子句:增加新列和新的完整性約束條件DROP子句:刪除指定的完整性約束條件MODIFY子句:用于修改列明的和數(shù)據(jù)類型注意:對于增加或修改的新字段的值必須是“空”值(NULL),NOTNULL是不允許的。語句格式:

ALTERTABLE表名[

ADD

列名數(shù)據(jù)類型[完整性約束]][DROP完整性約束名]

[MODIFY列名數(shù)據(jù)類型];43例3向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。 ALTERTABLEStudentADDScomeDATE;如果基本表中原來已有數(shù)據(jù),新增加的一列一律為空值。如果基本表中原來已有數(shù)據(jù),新增列不可有NOTNULL約束44例4刪除屬性列刪除屬性列間接刪除把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中刪除原表再將新表重命名為原表名直接刪除屬性列:(新)

ALTERTABLEStudentDropScome;45例5將年齡的數(shù)據(jù)類型改為半字長整數(shù)。ALTERTABLEStudentMODIFYSageSMALLINT;注意:修改原有的列定義有可能會破壞已有數(shù)據(jù)463)刪除基本表作用:刪除一個(gè)包括所有保存的數(shù)據(jù)在內(nèi)的表?;颈韯h除表的定義、數(shù)據(jù)、表上的索引都刪除

表上的視圖往往仍然保留,但無法引用刪除基本表時(shí),系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)改基本表及其索引的描述(標(biāo)準(zhǔn)中沒有,認(rèn)為表建立后就永久存在)語句格式:DROPTABLE表名;47建立與刪除索引建立索引是加快查詢速度的有效手段建立索引DBA或表的屬主(即建立表的人)根據(jù)需要建立有些DBMS自動(dòng)建立以下列上的索引PRIMARYKEYUNIQUE維護(hù)索引DBMS自動(dòng)完成使用索引DBMS自動(dòng)選擇是否使用索引以及使用那些索引481)建立索引表名指定要建索引的基本表的名字索引可以建立在該表的一列或多列上,各列名之間用逗號分隔用次序指定索引值的排列次序,升序:ASC,降序:DESC。確實(shí)值:ASCUNIQUE表明此索引的每一個(gè)索引值只對應(yīng)唯一的數(shù)據(jù)記錄CLUSTER表示要建立的索引是聚簇索引語句格式:CREATE[UNIQUE][CLUSTER]INDEX索引名ON表名(列名[次序][,列名[次序]]…);49例6建立索引為學(xué)生-課程數(shù)據(jù)庫中的Student,Course,SC三個(gè)表建立索引。其中Student表按學(xué)號升序建唯一索引,Course表按課程號升序建唯一索引,SC表學(xué)號升序和課程號降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);50建立索引唯一值索引對于已含重復(fù)值的屬性列不能建立UNIQUE索引對某個(gè)列建立UNIQUE索引后,插入新記錄時(shí)DBMS會自動(dòng)檢查新記錄在該列上是否取了重復(fù)值。這相當(dāng)于增加了一個(gè)UNIQUE約束51建立索引聚簇索引建立聚簇索引后,基表中數(shù)據(jù)也需要按指定的聚簇屬性值的升序或降序存放。也即聚簇索引的索引項(xiàng)順序與表中記錄的物理順序一致例如:CREATECLUSTERINDEXStudentONStudent(Sname);在Student表的Sname(姓名)列上建立一個(gè)聚索引,而且Student表中的記錄將按照Sname的升序存放52建立索引在一個(gè)基本表上最多只能建立一個(gè)聚簇索引聚簇索引的用途:對于某些類型的查詢,可以提高查詢效率聚簇索引的使用范圍很少對基表進(jìn)行增刪的操作很少對其中的變長列進(jìn)行修改操作優(yōu)缺點(diǎn)532)刪除索引DROPINDEX索引名;刪除索引是,系統(tǒng)會從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。例:刪除Student表的Stusname索引。DROPINDEXStusname;54視圖視圖的特點(diǎn)虛表,是從一個(gè)或幾個(gè)基本表(或視圖)導(dǎo)出的表只存放視圖的定義,不存放視圖對應(yīng)的數(shù)據(jù)基表中的數(shù)據(jù)發(fā)生變化,從視圖中查詢出的數(shù)據(jù)也隨之改變55(1)建立視圖

注意:CREATEVIEW只是定義了一個(gè)視圖,該語句執(zhí)行后有關(guān)對視圖的定義被存儲在數(shù)據(jù)字典中,只有對視圖進(jìn)行操作時(shí)才根據(jù)數(shù)據(jù)字典中對該視圖的定義描述,從基本表中形成實(shí)際的數(shù)據(jù)提供給用戶使用。語句格式:CREATEVIEW視圖名[(列名1[,列名2,...])]AS<SELECT語句>[WITHCHECKOPTION];56建立視圖組成視圖的屬性列名:全部省略或全部指定子查詢不允許含有ORDERBY子句和DISTINCT短語執(zhí)行CREATEVIEW語句時(shí)只是把視圖定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。在對視圖查詢時(shí),按視圖的定義從基本表中將數(shù)據(jù)查出57[例1]建立電氣院學(xué)生的視圖。

CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=‘EE';58[例2]建立電氣院學(xué)生的視圖,并要求進(jìn)行修改和插入操作時(shí)仍需保證該視圖只有信息系的學(xué)生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=‘EE'WITHCHECKOPTION;59(2)撤消視圖

注意:可以刪除一個(gè)視圖,即刪除了數(shù)據(jù)字典中對該視圖的定義,所以在該視圖上所建立(定義)的視圖也一同被刪除。視圖是一個(gè)虛表,所以在該視圖上不能創(chuàng)建索引。語句格式:DROPVIEW表名60數(shù)據(jù)操縱語言DML數(shù)據(jù)的檢索(查詢)語句SELECT查詢語言是用來對已建立好的基本表和視圖中的數(shù)據(jù)按照某種指定的方式(條件表達(dá)式、次序等)進(jìn)行檢索查詢。語句格式:SELECT[ALL/DISTINCT]*/列表FROM

基本表(或視圖)[WHERE

條件表達(dá)式][GROUPBY列名[HAVING條件表達(dá)式]][ORDERBY

列名[ASC/DESC]]61語句格式SELECT子句:指定要顯示的屬性列FROM子句:指定查詢對象(基本表或視圖)WHERE子句:指定查詢條件GROUPBY子句:對查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會在每組中作用集函數(shù)。HAVING短語:篩選出只有滿足指定條件的組ORDERBY子句:對查詢結(jié)果表按指定列值的升序或降序排序語句格式:SELECT[ALL/DISTINCT]*/列表FROM

基本表(或視圖)[WHERE

條件表達(dá)式][GROUPBY列名[HAVING條件表達(dá)式]][ORDERBY

列名[ASC/DESC]]62基本查詢學(xué)生基本表STUDENTS:學(xué)生成績表STUDGRADE最基本的查詢就是從指定的一個(gè)基本表中找出符合條件的記錄。631)單表查詢查詢僅涉及一個(gè)表,是一種最簡單的查詢操作一、選擇表中的若干列二、選擇表中的若干元組三、對查詢結(jié)果排序四、使用集函數(shù)五、對查詢結(jié)果分組64查詢指定列[例1]查詢?nèi)w學(xué)生的學(xué)號與姓名。SELECTSno,SnameFROMStudent;

[例2]查詢?nèi)w學(xué)生的姓名、學(xué)號、所在系。SELECTSname,Sno,SdeptFROMStudent;65查詢?nèi)苛欣?:查找電氣學(xué)院的男生。

這里:*代表全部的列。等價(jià)于下面的語句格式:SELECTSno,Sname,Ssex,Sage,SdeptFROMstudentsWHERESsex=‘男’ANDSdept=‘電氣學(xué)院'SELECT*FROMstudentsWHERESsex=‘男‘ANDSdept=’電氣學(xué)院'

66查詢

經(jīng)過計(jì)算的值SELECT子句的

條件表達(dá)式算術(shù)表達(dá)式字符串常量函數(shù)列別名67例4:查詢學(xué)生成績表中成績在80至90之間的學(xué)生名單,并按分?jǐn)?shù)降序排序輸出結(jié)果。

該語句等價(jià)于:SELECTno,name,gradeFROMstudgradeWHEREgrade>80ANDgrade<90ORDERBYgradeDESCSELECTno,name,gradeFROMstudgradeWHEREgradeBETEEN80AND90ORDERBYgradeDESC68帶通配符的查詢通配符%(百分號)代表任意長度(長度可以為0)的字符串例:a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addgb,ab等都滿足該匹配串_(下橫線)代表任意單個(gè)字符例:a_b表示以a開頭,以b結(jié)尾的長度為3的任意字符串。如acb,afb等都滿足該匹配串69[例5]查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE‘劉%’;70使用集函數(shù)5類主要集函數(shù)計(jì)數(shù)COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<列名>)計(jì)算總和SUM([DISTINCT|ALL]<列名>) 計(jì)算平均值A(chǔ)VG([DISTINCT|ALL]<列名>)71求最大值MAX([DISTINCT|ALL]<列名>) 求最小值MIN([DISTINCT|ALL]<列名>) DISTINCT短語:在計(jì)算時(shí)要取消指定列中的重復(fù)值A(chǔ)LL短語:不取消重復(fù)值A(chǔ)LL為缺省值72[例6]查詢學(xué)生總?cè)藬?shù)。

SELECTCOUNT(*)FROMStudent;

[例7]查詢選修了課程的學(xué)生人數(shù)。

SELECTCOUNT(DISTINCTSno)FROMSC;注:用DISTINCT以避免重復(fù)計(jì)算學(xué)生人數(shù)73

[例8]計(jì)算1號課程的學(xué)生平均成績。SELECTAVG(Grade)FROMSCWHERECno=‘1’;

[例9]查詢選修1號課程的學(xué)生最高分?jǐn)?shù)。SELECTMAX(Grade)FROMSCWHERCno='1';74對查詢結(jié)果排序使用ORDERBY子句可以按一個(gè)或多個(gè)屬性列排序升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示75[例10]查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;76[例11]查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。

SELECT*FROMStudentORDERBYSdept,SageDESC;77對查詢結(jié)果分組使用GROUPBY子句分組 細(xì)化集函數(shù)的作用對象未對查詢結(jié)果分組,集函數(shù)將作用于整個(gè)查詢結(jié)果對查詢結(jié)果分組后,集函數(shù)將分別作用于每個(gè)組78對查詢結(jié)果分組[例12]求各個(gè)課程號及相應(yīng)的選課人數(shù)。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;79對查詢結(jié)果分組GROUPBY子句的作用對象是查詢的中間結(jié)果表分組方法:按指定的一列或多列值分組,值相等的為一組使用GROUPBY子句后,SELECT子句的列名列表中只能出現(xiàn)分組屬性和集函數(shù)80使用HAVING短語篩選最終輸出結(jié)果[例13]查詢選修了3門以上課程的學(xué)生學(xué)號。

SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)>3;81[例14]查詢有3門以上課程是90分以上的學(xué)生的學(xué)號及(90分以上的)課程數(shù)

SELECTSno,COUNT(*)FROMSCWHEREGrade>=90GROUPBYSnoHAVINGCOUNT(*)>=3;82使用HAVING短語篩選最終輸出結(jié)果只有滿足HAVING短語指定條件的組才輸出HAVING短語與WHERE子句的區(qū)別:作用對象不同WHERE子句作用于基表或視圖,從中選擇滿足條件的元組。HAVING短語作用于組,從中選擇滿足條件的組。832)多表查詢?nèi)绻樵兩婕暗絻蓚€(gè)以上的基本表,就是多表查詢(也稱之為連接查詢)。有連接查詢、嵌套查詢、集合查詢等方式。需要將多個(gè)表連接后進(jìn)行查詢,標(biāo)準(zhǔn)的SQL語言中沒有專門的連接語句,是直接通過SELECT語句實(shí)現(xiàn)的。在WHERE后面則直接給出連接的條件。84連接查詢同時(shí)涉及多個(gè)表的查詢稱為連接查詢用來連接兩個(gè)表的條件稱為連接條件或連接謂詞一般格式:[表名1.]列名1比較運(yùn)算符

[表名2.]列名2

比較運(yùn)算符:=、>、<、>=、<=、!=[表名1.]列名1BETWEEN[表名2.]列名2AND[表名2.]列名385[例14]查詢每個(gè)學(xué)生及其選修課程的情況。SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;86假設(shè)Student表、SC表分別有下列數(shù)據(jù)87例15:查詢所有數(shù)據(jù)庫成績?yōu)?0分的信息學(xué)院的學(xué)生。

SELECTstude

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論