大學計算機計算思維與信息素養(yǎng)第12章_第1頁
大學計算機計算思維與信息素養(yǎng)第12章_第2頁
大學計算機計算思維與信息素養(yǎng)第12章_第3頁
大學計算機計算思維與信息素養(yǎng)第12章_第4頁
大學計算機計算思維與信息素養(yǎng)第12章_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第12章數(shù)據(jù)庫與大數(shù)據(jù)哈爾濱工業(yè)大學計算學部教授張麗杰zlj@第12章數(shù)據(jù)庫與大數(shù)據(jù)一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)二、結構化數(shù)據(jù)庫的基礎---關系模型三、結構化數(shù)據(jù)庫語言---SQL四、大數(shù)據(jù)本章導圖傳統(tǒng)社會:業(yè)務工作信息社會:業(yè)務工作+計算機支持網(wǎng)絡/Internet

數(shù)據(jù)庫EverythingOverDB數(shù)據(jù)為什么要管理--數(shù)據(jù)自有黃金屋(1)信息社會的工作方式?一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)形成“庫”,實現(xiàn)“積累”應用“庫”,實現(xiàn)積累的效益“庫”的管理與控制紙面數(shù)據(jù)vs.電子數(shù)據(jù)單一數(shù)據(jù)文件vs.數(shù)據(jù)庫數(shù)據(jù)產(chǎn)生的分散化vs.數(shù)據(jù)應用的共享化小規(guī)模數(shù)據(jù)vs.大規(guī)模數(shù)據(jù)數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)各種“資源”庫圖像數(shù)據(jù)庫、音樂數(shù)據(jù)庫與多媒體數(shù)據(jù)庫工程數(shù)據(jù)庫地理信息數(shù)據(jù)庫文獻數(shù)據(jù)庫Web數(shù)據(jù)庫。又稱為Internet數(shù)據(jù)庫數(shù)據(jù)倉庫車輛數(shù)據(jù)庫產(chǎn)品數(shù)據(jù)庫機床數(shù)據(jù)庫信用數(shù)據(jù)庫煙酒數(shù)據(jù)庫…

…一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)大數(shù)據(jù)價值發(fā)現(xiàn)2008年全球產(chǎn)生的數(shù)據(jù)量為0.49ZB(250MB)2009年的數(shù)據(jù)量為0.8ZB2010年增長為1.2ZB2011年的數(shù)量更是高達1.82ZB2012年為止,人類所有印刷材料的數(shù)據(jù)量是200PB預計到2020年,全世界的數(shù)據(jù)規(guī)模將達今天的44倍。

Farecast:飛機票價格預測購票時機與機票價格的關系?怎樣預測機票價格?只求關系,不求因果不要相信經(jīng)驗,一切以數(shù)據(jù)說話一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)為什么要管理--數(shù)據(jù)自有黃金屋(6)小結?數(shù)據(jù)管理與運用數(shù)據(jù)庫數(shù)據(jù)大數(shù)據(jù)數(shù)據(jù)聚集數(shù)據(jù)獲取發(fā)現(xiàn)數(shù)據(jù)價值一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)相互有關聯(lián)關系的數(shù)據(jù)的集合數(shù)據(jù)庫//Database學生成績單一個表聚集了具有相同結構類型的若干個對象一行數(shù)據(jù)反映了某一對象的相關內(nèi)容一列數(shù)據(jù)具有相同的數(shù)據(jù)類型表與表間也存在著相互關聯(lián)數(shù)據(jù)庫:相互有關聯(lián)關系的數(shù)據(jù)的集合學生登記表一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)DBMS管理數(shù)據(jù)庫的一種系統(tǒng)軟件DBA完成某一功能的應用程序1應用程序2應用程序nDBAP1DBAP2DBAPn數(shù)據(jù)庫系統(tǒng)(工作環(huán)境)數(shù)據(jù)庫(DB):Database數(shù)據(jù)庫管理系統(tǒng)(DBMS):DatabaseManagementSystem數(shù)據(jù)庫應用(DBAP):DataBaseApplication數(shù)據(jù)庫管理員(DBA):DataBaseAdministrator計算機基本系統(tǒng)相互有關聯(lián)關系的數(shù)據(jù)的集合數(shù)據(jù)庫//Database一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)DBMSOracle或Sybase或SQLServer或DB2或MSAccessDBA圖書采買管理程序圖書借閱管理程序讀者管理程序DBAP1DBAP3DBAPnTable1:出版社T2:出版社圖書目錄T3:采買記錄T4:圖書;T5:讀者T6:借閱登記T7:工作人員數(shù)據(jù)庫//Database采買員借還管理員借書證管理員圖書編目管理程序DBAP2編目員數(shù)據(jù)庫系統(tǒng)(工作環(huán)境)示例:圖書管理數(shù)據(jù)庫系統(tǒng)一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)表名表標題(格式)數(shù)據(jù)庫定義:定義數(shù)據(jù)庫中數(shù)據(jù)表的名稱、標題(內(nèi)含的屬性名稱及對該屬性的值的要求)等

DBMS提供一套數(shù)據(jù)定義語言(DDL:DataDefinitionLanguage)給用戶用戶使用DDL描述其所要建立表的格式

DBMS依照用戶的定義,創(chuàng)建數(shù)據(jù)庫及其中的Table用戶DBAPDBMS1.執(zhí)行定義操作,創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)庫一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的基本功能--從用戶角度看數(shù)據(jù)庫操縱:向數(shù)據(jù)庫的Table中增加/刪除/更新數(shù)據(jù)及對數(shù)據(jù)進行查詢、檢索、統(tǒng)計等

DBMS提供一套數(shù)據(jù)操縱語言(DML:DataManipulationLanguage)給用戶用戶使用DML描述其所要進行的增、刪、改、查等操作

DBMS依照用戶的操作描述,實際執(zhí)行這些操作用戶DBAPDBMS2.對表的內(nèi)容執(zhí)行增加、刪除、更新、檢索等操作數(shù)據(jù)庫一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的基本功能--從用戶角度看數(shù)據(jù)庫控制:控制數(shù)據(jù)庫中數(shù)據(jù)的使用---哪些用戶可以使用,哪些不可以

DBMS提供一套數(shù)據(jù)控制語言(DCL:DataControlLanguage)給用戶用戶使用DCL描述其對數(shù)據(jù)庫所要實施的控制

DBMS依照用戶的描述,實際進行控制用戶DBAPDBMS3.依照定義信息,對數(shù)據(jù)庫的使用實施控制數(shù)據(jù)庫數(shù)據(jù)安全性完整性定義信息誰,能訪問哪些數(shù)據(jù),權利DBADBMS定義控制信息一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的基本功能--從用戶角度看數(shù)據(jù)庫維護:轉儲/恢復/重組/性能監(jiān)測/分析…DBMS提供一系列程序(實用程序/例行程序)

給用戶在這些程序中提供了對數(shù)據(jù)庫維護的各種功能用戶使用這些程序進行各種數(shù)據(jù)庫維護操作數(shù)據(jù)庫維護的實用程序,一般都是由數(shù)據(jù)庫管理員(DBA)來使用和掌握的用戶DBAPDBMS4.數(shù)據(jù)庫維護,如轉儲…數(shù)據(jù)庫DBA一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的基本功能--從用戶角度看DBMS為完成DB管理,在后臺運行著一系列程序…數(shù)據(jù)庫物理存儲數(shù)據(jù)庫查詢執(zhí)行及查詢優(yōu)化并發(fā)控制故障恢復安全性控制完整性控制數(shù)據(jù)字典管理應用程序接口(API)

……一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)的基本功能--從系統(tǒng)角度看數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)定義數(shù)據(jù)操縱數(shù)據(jù)控制數(shù)據(jù)存儲數(shù)據(jù)查詢數(shù)據(jù)維護數(shù)據(jù)庫語言一系列執(zhí)行存儲/查找/備份/解析語言等的程序一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)第12章數(shù)據(jù)庫與大數(shù)據(jù)一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)二、結構化數(shù)據(jù)庫的基礎---關系模型三、結構化數(shù)據(jù)庫語言---SQL四、大數(shù)據(jù)本章導圖學生成績單表名表標題(格式)表內(nèi)容(值)列名列值行/元組/記錄(row/tuple/record)列/字段/屬性/數(shù)據(jù)項(column/field/attribute/dataitem)(關系)模式表/關系Table中描述了一批相互有關聯(lián)關系的數(shù)據(jù)==關系數(shù)據(jù)庫的關系模型起源于規(guī)范化“表(Table)”的處理Table:

以按行按列形式組織及展現(xiàn)的數(shù)據(jù)基本數(shù)據(jù)模型:關系模型I-什么是關系(2)你理解關于關系的一些術語的含義嗎?二、結構化數(shù)據(jù)庫的基礎---關系模型怎樣把一張表格定義清楚呢?2.值域(Domain)說清楚每一列數(shù)據(jù)可能的取值1.指出有多少列3.指出所有可能的元組元組是值的一個組合;值域中值的所有可能的組合----笛卡爾積關系中元組是有意義的組合----笛卡爾積的子集4.指出關系中的元組用數(shù)學嚴格地定義Table二、結構化數(shù)據(jù)庫的基礎---關系模型用數(shù)學嚴格地定義Table基本數(shù)據(jù)模型:關系模型I-什么是關系(3)如何用數(shù)學來定義關系呢?首先定義“列”的取值范圍“域(Domain)”域(Domain)一組值的集合,這組值具有相同的數(shù)據(jù)類型如整數(shù)的集合、字符串的集合、全體學生的集合再如,由8位數(shù)字組成的數(shù)字串的集合,由0到100組成的整數(shù)集合集合中元素的個數(shù)稱為域的基數(shù)(Cardinality)D1=男人集合(MAN)={李基,張鵬}D2=女人集合(WOMAN)={王芳,劉玉}D3=兒童集合(CHILD)={李健,張睿,張峰}二、結構化數(shù)據(jù)庫的基礎---關系模型再定義“元組”及所有可能組合成的元組:笛卡爾積笛卡爾積(CartesianProduct)一組域D1,D2,…,Dn的笛卡爾積為:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}笛卡爾積的每個元素(d1,d2,…,dn)稱作一個n-元組(n-tuple)D1=男人D2=女人D3=兒童{李基,張鵬}{王芳,劉玉}{李健,張睿,張峰}用數(shù)學嚴格地定義Table基本數(shù)據(jù)模型:關系模型I-什么是關系(3)如何用數(shù)學來定義關系呢?二、結構化數(shù)據(jù)庫的基礎---關系模型由于笛卡爾積中的所有元組并不都是有意義的,因此…關系(Relation)一組域D1,D2,…,Dn的笛卡爾積的子集:笛卡爾積中具有某一方面意義的那些元組被稱作一個關系(Relation)由于關系的不同列可能來自同一個域,為區(qū)分,需要為每一列起一個名字,該名字即為屬性名。不同列名的列值可以來自相同域。例如:家庭(丈夫:男人,妻子:女人,子女:兒童)或家庭(丈夫,妻子,子女)列名(屬性名)列值:來自域用數(shù)學嚴格地定義Table基本數(shù)據(jù)模型:關系模型I-什么是關系(3)如何用數(shù)學來定義關系呢?二、結構化數(shù)據(jù)庫的基礎---關系模型關系的性質列是同質的(Homogeneous),即每一列中的分量是同一類型數(shù)據(jù),來自同一個域不同的列可出自同一個域,每一列稱為屬性,要給予不同的屬性名列的順序可以任意交換,行的順序也可以任意交換任意兩個元組不能完全相同每一分量必須是不可分的數(shù)據(jù)項丈夫 妻子 孩子 第一個第二個李基 王芳 李健 張鵬 劉玉 張睿 張峰981101數(shù)據(jù)庫01張三100981101數(shù)據(jù)庫02張四90981101數(shù)據(jù)庫03張五80981101計算機01張三89981101計算機02張四98981101計算機03張五72981102數(shù)據(jù)庫01王三30981102數(shù)據(jù)庫02王四90981102數(shù)據(jù)庫03王武78學生成績單班級課程學號姓名成績基本數(shù)據(jù)模型:關系模型I-什么是關系(4)關系有什么性質?二、結構化數(shù)據(jù)庫的基礎---關系模型基本數(shù)據(jù)模型:關系模型I-什么是關系(7)小結?學生成績單表名表標題(格式)表內(nèi)容(值)列名列值行/元組/記錄(row/tuple/record)列/字段/屬性/數(shù)據(jù)項(column/field/attribute/dataitem)(關系)模式表/關系Table中描述了一批相互有關聯(lián)關系的數(shù)據(jù)==關系數(shù)據(jù)庫的關系模型起源于規(guī)范化“表(Table)”的處理Table:

以按行按列形式組織及展現(xiàn)的數(shù)據(jù)表關系屬性/列記錄/行二、結構化數(shù)據(jù)庫的基礎---關系模型有哪些運算?并:RS差:RS交:RS選擇:(R)投影:(R)積:RS連接:RS二、結構化數(shù)據(jù)庫的基礎---關系模型關系操作–––關系代數(shù)并(Union)RS

定義:設關系R和關系S是并相容的(即:屬性數(shù)目相同,其對應的域也相同),則關系R與關系S的并運算結果也是一個關系,記作:R∪S,它由或者出現(xiàn)在關系R中,或者出現(xiàn)在S中的元組構成數(shù)學描述:RS={t|tRtS},其中t是元組

R∪S與S∪R運算的結果是同一個關系RS二、結構化數(shù)據(jù)庫的基礎---關系模型R(參加體育隊的學生)S(參加文藝隊的學生)R∪S(或者參加體育隊或者文藝隊的學生)并(Union)二、結構化數(shù)據(jù)庫的基礎---關系模型

定義:假設關系R和關系S是并相容的,則關系R與關系S的差運算結果也是一個關系,記作:RS,它由出現(xiàn)在關系R中但不出現(xiàn)在關系S中的元組構成

數(shù)學描述:RS={t|tRtS}

,其中t是元組注意:RS與SR是不同的RSR

SRSS

R差(Difference)二、結構化數(shù)據(jù)庫的基礎---關系模型R(參加體育隊的學生)S(參加文藝隊的學生)R-S(參加體育隊而未參加文藝隊的學生)S-R(參加文藝隊而未參加體育隊的學生)差(Difference)二、結構化數(shù)據(jù)庫的基礎---關系模型

定義:假設關系R和關系S是并相容的,則關系R與關系S的交運算結果也是一個關系,記作:R∩S,它由同時出現(xiàn)在關系R和關系S中的元組構成

數(shù)學描述:RS={t|tRtS}

,其中t是元組

R∩S和S∩R運算的結果是同一個關系交運算可以通過差運算來實現(xiàn):

RS=R(RS)=S(SR)RSRS交(Intersection)二、結構化數(shù)據(jù)庫的基礎---關系模型交(Intersection)R(參加體育隊的學生)S(參加文藝隊的學生)R∩S(既參加體育隊又參加文藝隊的學生)二、結構化數(shù)據(jù)庫的基礎---關系模型

定義:關系R(<a1,

a2,…,an>)與關系S(<b1,b2,…,bm>)的廣義笛卡爾積(簡稱廣義積)運算結果也是一個關系,記作:RxS,它由關系R中的元組與關系S的元組進行所有可能的拼接(或串接)構成。

數(shù)學描述:Rx

S={<a1,

a2,…,an,b1,b2,…,bm>|<a1,

a2,…,an>R<b1,b2,…,bm>

S}

笛卡爾積可將兩個表串接起來作為一個表進行操作廣義笛卡爾積(CartesianProduct)二、結構化數(shù)據(jù)庫的基礎---關系模型廣義笛卡爾積(CartesianProduct)二、結構化數(shù)據(jù)庫的基礎---關系模型學生成績單表名表標題(格式)表內(nèi)容(值)列名列值行/元組/記錄(row/tuple/record)列/字段/屬性/數(shù)據(jù)項(column/field/attribute/dataitem)(關系)模式表/關系Table中描述了一批相互有關聯(lián)關系的數(shù)據(jù)==關系數(shù)據(jù)庫的關系模型起源于規(guī)范化“表(Table)”的處理Table:

以按行按列形式組織及展現(xiàn)的數(shù)據(jù)表關系并差交積二、結構化數(shù)據(jù)庫的基礎---關系模型

定義:給定一個關系R,同時給定一個選擇的條件condition(簡記con),選擇運算結果也是一個關系,記作con(R)

,它從關系R中選擇出滿足給定條件condition的元組構成數(shù)學描述:con(R)={t|tRcon(t)=‘真’}

,

設R(A1,A2,…,An),t是R的元組,t的分量記為t[Ai],或簡寫為Ai

條件con由邏輯運算符連接算術/比較表達式組成邏輯運算符:,,或寫為and,or,not

算術/比較表達式:XY,其中X,Y是t的分量、常量或簡單函數(shù),是比較運算符,{,,,,,≠}選擇(Selection)二、結構化數(shù)據(jù)庫的基礎---關系模型選擇(Selection)R(學生表)

Sage<20(R)查詢所有年齡小于20同學的信息

D#=“03”νD#=“05”(R)查詢所有3系或5系的同學信息二、結構化數(shù)據(jù)庫的基礎---關系模型

定義:給定一個關系R,投影運算結果也是一個關系,記作A(R)

,它從關系R中選出屬性包含在A中的列構成數(shù)學描述:Ai1,Ai2,…,Aik(R)={<t[Ai1],t[Ai2],…,t[Aik]>|tR}

設R(A1,A2

,…,An){Ai1,Ai2,…,Aik

}

{A1,A2

,…,An

}t[Ai]表示元組t中相應于屬性Ai的分量投影運算可以對原關系的列在投影后重新排列投影(Projection)二、結構化數(shù)據(jù)庫的基礎---關系模型投影(Projection)R(學生表)Sname,Sage(R)查詢所有學生的姓名和年齡

Sname,D#(R)查詢所有學生的姓名及其所在的系二、結構化數(shù)據(jù)庫的基礎---關系模型

定義:給定關系R和關系S,R與S的連接運算結果也是一個關系,記作,它由關系R和關系S的笛卡爾積中,選取R中屬性A與S中屬性B之間滿足條件的元組構成。數(shù)學描述:

設R(A1,A2

,…,An),A{A1,A2

,…,An

}

S(B1,B2

,…,Bm),B{B1,B2

,…,Bm

}t是關系R中的元組,s是關系S中的元組屬性A和屬性B具有可比性是比較運算符,{,,,,,≠}在實際應用中,-連接操作經(jīng)常與投影、選擇操作一起使用-連接(-Join)二、結構化數(shù)據(jù)庫的基礎---關系模型

定義:給定關系R和關系S,R與S的自然連接運算結果也是一個關系,記作,它由關系R和關系S的笛卡爾積中選取相同屬性組B上值相等的元組所構成。數(shù)學描述:

自然連接是一種特殊的連接運算要求關系R和關系S必須有相同的屬性組B(如R,S共有一個屬性B1,則B是B1,如R,S共有一組屬性B1,B2,…,Bn,則B是這些共有的所有屬性)R,S屬性相同,值必須相等才能連接,即

R.B1=S.B1andR.B2=S.B2…andR.Bn=S.Bn才能連接要在結果中去掉重復的屬性列(因結果中R.Bi始終是等于S.Bi所以可只保留一列即可)自然連接(Natural-Join)二、結構化數(shù)據(jù)庫的基礎---關系模型-連接

vs.連接vs.笛卡爾積二、結構化數(shù)據(jù)庫的基礎---關系模型學生成績單表名表標題(格式)表內(nèi)容(值)列名列值行/元組/記錄(row/tuple/record)列/字段/屬性/數(shù)據(jù)項(column/field/attribute/dataitem)(關系)模式表/關系Table中描述了一批相互有關聯(lián)關系的數(shù)據(jù)==關系數(shù)據(jù)庫的關系模型起源于規(guī)范化“表(Table)”的處理Table:

以按行按列形式組織及展現(xiàn)的數(shù)據(jù)表關系并選擇差交投影連接積二、結構化數(shù)據(jù)庫的基礎---關系模型查詢表達式組合各種運算查詢學習課程號為002的學生學號和成績πS#,Score(

)查詢學習課程號為001的學生學號、姓名查詢學習課程名稱為數(shù)據(jù)結構的學生學號、姓名和這門課程的成績πS#,Sname,Score(σCname=“數(shù)據(jù)結構”(Student

SCCourse))SC

C#=“002”()Student

SCCourseσCname=“數(shù)據(jù)結構”(Student

SCCourse)二、結構化數(shù)據(jù)庫的基礎---關系模型查詢表達式注意連接與積的差別查詢學習課程號為001的學生學號、姓名πS#,Sname()

C#=“001”Student.S#=SC.S#()StudentSC連接條件πS#,Sname()

C#=“001”()StudentSC二、結構化數(shù)據(jù)庫的基礎---關系模型第12章數(shù)據(jù)庫與大數(shù)據(jù)一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)二、結構化數(shù)據(jù)庫的基礎---關系模型三、結構化數(shù)據(jù)庫語言---SQL四、大數(shù)據(jù)本章導圖數(shù)據(jù)庫語言SQL

Select列名[[,列名]…]

From表名1[[,表名2],…][Where檢索條件];語義:將From后面的所有表串接起來,檢索出滿足“檢索條件”的元組,并按給定的列名及順序進行投影顯示。列名,…,列名(

檢索條件(表名1表名2…))關系運算式三、結構化數(shù)據(jù)庫語言---SQLSQL:StructuralQueryLanguageSQL語言是數(shù)據(jù)庫系統(tǒng)的標準語言,它可以定義數(shù)據(jù)庫、操縱數(shù)據(jù)庫和進行數(shù)據(jù)庫控制。SQL語言主要由以下9個單詞引導的操作語句來構成,但每一種語句都能表達復雜的操作請求。

DDL語句引導詞:Create(建立),Alter(修改),Drop(撤消)定義Database,Table,View,IndexDML語句引導詞:Insert(插入),Update(更新),Delete(刪除),Select(查詢)各種方式的更新與檢索操作各種條件的查詢操作,如連接查找,模糊查找,分組查找,嵌套查找等各種聚集操作,求平均、求和、…等,分組聚集,分組過濾等

DCL語句引導詞:Grant,Revoke安全性控制---授權和撤消授權三、結構化數(shù)據(jù)庫語言---SQL創(chuàng)建課程學習數(shù)據(jù)庫:SCT

CreateDatabase

SCT;SCT定義學生表:StudentCreateTable

Student(S#

char(8)notnull,Sname

char(10),

Ssex

char(2),Sage

integer,D#

char(2),Sclass

char(6));定義課程表:Course

CreateTableCourse(C#char(3),Cnamechar(12),

Choursinteger,Creditfloat(1),T#char(3)

);同學可自己定義其他的表:Dept,Teacher,SCStudentCoursecreatetable

表名(列名數(shù)據(jù)類型[notnull][,列名數(shù)據(jù)類型,…]);三、結構化數(shù)據(jù)庫語言---SQLinsertinto

表名[(列名[,列名]…]

values

(值[,值],…);追加學生表中的元組InsertIntoStudentValues(‘98030101’,‘張三’,‘男’,20,’03’,‘980301’);InsertIntoStudent(S#,Sname,Ssex,Sage,D#,Sclass)Values(‘98030102’,‘張四’,‘女’,20,’03’,‘980301’);追加課程表中的元組InsertIntoCourse/*所有列名省略,須與定義或存儲的列名順序一致Values(‘001’,‘數(shù)據(jù)庫’,40,6,’001’);

/*如列名未省略,須與語句中列名的順序一致InsertIntoCourse(Cname,C#,Credit,Chours,T#);Values(‘數(shù)據(jù)庫’,‘001’,6,40,‘001’);三、結構化數(shù)據(jù)庫語言---SQL已經(jīng)建立好的數(shù)據(jù)庫---供后面學習和訓練使用三、結構化數(shù)據(jù)庫語言---SQLSelect的簡單語法形式為:

Select列名[[,列名]…]

From表名[Where檢索條件];語義:從<表名>所給出的表中,查詢出滿足<檢索條件>的元組,并按給定的<列名>及順序進行投影顯示列名,…,列名(

檢索條件(表名))三、結構化數(shù)據(jù)庫語言---SQL例如:檢索學生表中所有學生的信息SelectS#,Sname,Ssex,Sage,Sclass,D#

FromStudent;Select*FromStudent;//如投影所有列,則可以用*來簡寫

再如:檢索學生表中所有學生的姓名及年齡SelectSname,Sage//投影出某些列

FromStudent;

再如:檢索學生表中所有年齡小于20歲的學生的年齡及姓名SelectSage,

Sname //投影的列可以重新排定順序

FromStudentWhereSage<20;SELECT…FROM…WHERE…三、結構化數(shù)據(jù)庫語言---SQL例如:求或者學過001號課程,或者學過002號課程的學生的學號SelectS#FromSCWhereC#=‘001’ORC#=‘002’;

再例如:求既學過001號課程,又學過002號課程的學生的學號?如下書寫SQL語句會得到正確結果嗎?它能得到什么結果?怎樣正確書寫?SelectS#FromSCWhereC#=‘001’ANDC#=‘002’;

對于每一行應用Where子句的條件SELECT…FROM…WHERE…三、結構化數(shù)據(jù)庫語言---SQL例如:在選課表中,檢索成績大于80分的所有學號SelectS#

FromSCWhereScore>80;//有重復元組出現(xiàn),比如一個同學兩門以上課程大于80SelectDISTINCTS#

FromSCWhereScore>80;//重復元組被DISTINCT過濾掉,只保留一份檢索結果去重復:DISTINCT表(Table)和關系(Relation)在大部分情況下概念通用,但有細微差別:前者可允許有重復元組,而后者不允許三、結構化數(shù)據(jù)庫語言---SQLSelect語句中結果排序是通過增加orderby子句實現(xiàn)的

orderby

列名[asc|desc]意義為結果按指定列名進行排序,若后跟asc或省略,則為升序;若后跟desc,則為降序。例如:按學號由小到大的順序顯示出所有學生的學號及姓名SelectS#,SnameFromStudentOrderByS#ASC

;

再如:檢索002號課大于80分的所有同學學號并按成績由高到低順序顯示SelectS#FromSCWhereC#=‘002’andScore>80OrderByScoreDESC

;檢索結果的排序SELECT…FROM…WHERE…ORDERBY…三、結構化數(shù)據(jù)庫語言---SQL比如檢索“姓張的學生”,檢索“張某某”,這類查詢問題,Select語句是通過在檢索條件中引入運算符like來表示的含有l(wèi)ike運算符的表達式

列名[not]like“字符串”找出匹配給定字符串的字符串。其中給定字符串中可以出現(xiàn)%,_等匹配符.

匹配規(guī)則:“%”匹配零個或多個字符“_”匹配任意單個字符

\”

轉義字符,用于去掉一些特殊字符的特定含義,使其被作為普通字符看待,如用“\%”去匹配字符%,用\_去匹配字符_模糊查詢?nèi)?、結構化數(shù)據(jù)庫語言---SQL例如:檢索所有姓張的學生學號及姓名SelectS#,SnameFromStudentWhereSnameLike‘張%’;

再如:檢索名字為張某某的所有同學姓名SelectSnameFromStudentWhereSnameLike‘張__’;

再如:檢索名字不姓張的所有同學姓名SelectSnameFromStudentWhereSnameNot

Like‘張%’;三、結構化數(shù)據(jù)庫語言---SQL例如:檢索學生表中所有學生的信息SelectS#,Sname,Ssex,Sage,Sclass,D#

FromStudent;Select*FromStudent;//如投影所有列,則可以用*來簡寫

再如:檢索學生表中所有學生的姓名及年齡SelectSname,Sage//投影出某些列

FromStudent;

再如:檢索學生表中所有年齡小于19歲的學生的年齡及姓名SelectSage,

Sname //投影的列可以重新排定順序

FromStudentWhereSage<=19;SELECT…FROM…WHERE…SELECT…FROM…WHERE…SELECTDISTINCT…FROM…WHERE…SELECT…FROM…WHERE…ORDERBY…SELECT…FROM…WHERE…LIKE…三、結構化數(shù)據(jù)庫語言---SQLSelect的多表聯(lián)合檢索語句如下:

Select列名[[,列名]…]

From表名1,表名2,…

Where檢索條件;相當于列名,…,列名(

檢索條件(表名1表名2…))檢索條件中要包含連接條件,通過不同的連接條件可以實現(xiàn)各種連接操作。SQL-SELECT之多表聯(lián)合操作(1)多表聯(lián)合檢索的表達方法三、結構化數(shù)據(jù)庫語言---SQL例如:按“001”號課成績由高到低的順序顯示出所有學生的姓名(二表連接)SelectSnameFromStudent,SCWhere

Student.S#=SC.S#andSC.C#=‘001’OrderByScoreDESC;

當多表連接時,如果兩個表的屬性名相同,則需采用表名.

屬性名方式來限定該屬性是屬于哪一個表再如:按‘數(shù)據(jù)庫’課程成績由高到低順序顯示所有同學姓名(三表連接)SelectSnameFromStudent,SC,CourseWhere

Student.S#=SC.S#andSC.C#=Course.C#

andCname=‘數(shù)據(jù)庫’OrderByScoreDESC;Student(S#,Sname,Ssex,Sage,D#,Sclass)Course(C#,Cname,Chours,Credit,T#)SC(S#,C#,Score)Dept(D#,Dname,Dean)Teacher(T#,Tname,D#,Salary)三、結構化數(shù)據(jù)庫語言---SQL連接運算涉及到重名的問題,如兩個表中的屬性重名,連接的兩個表重名(同一表的連接)等,因此需要使用別名以便區(qū)分

select中采用別名的方式:

Select列名as列別名[[,列名as列別名]…]

From表名1as表別名1,表名2as表別名2,…

Where檢索條件;

上述定義中的as可以省略當定義了別名后,在檢索條件中可以使用別名來限定屬性三、結構化數(shù)據(jù)庫語言---SQL例如:求有薪水差額的任意兩位教師SelectT1.TnameasTeacher1,T2.TnameasTeacher2FromTeacherT1,TeacherT2Where

T1.Salary>T2.Salary;求年齡有差異的任意兩位同學的姓名SelectS1.SnameasStud1,S2.SnameasStud2FromStudentS1,StudentS2Where

S1.Sage>S2.Sage;有時表名很長時,為書寫條件簡便,也定義表別名,以簡化書寫。Student(S#,Sname,Ssex,Sage,D#,Sclass)Course(C#,Cname,Chours,Credit,T#)SC(S#,C#,Score)Dept(D#,Dname,Dean)Teacher(T#,Tname,D#,Salary)三、結構化數(shù)據(jù)庫語言---SQL再如:求既學過“C01”號課又學過“C02”號課的所有學生的學號(二表連接)SelectSC1.S#FromSCSC1,SCSC2Where

SC1.S#=SC2.S#andSC1.C#=‘C01’andSC2.C#=‘C02’

;

再如:求“C01”號課成績比“C02”號課成績高的所有學生的學號(二表連接)SelectSC1.S#FromSCSC1,SCSC2Where

SC1.S#=SC2.S#andSC1.C#=‘C01’andSC2.C#=‘C02’andSC1.Score>SC2.Score;三、結構化數(shù)據(jù)庫語言---SQL正確理解漢語表達的查詢語義,正確表達為SQL語句

例如:列出沒學過李明老師講授課程的所有同學的姓名。

如下書寫SQL語句會得到正確結果嗎?它能得到什么結果?怎樣正確書寫?SelectSnameFromStudentS,SC,CourseC,TeacherTWhere

T.Tname<>‘李明’

andC.C#=SC.C# andSC.S#=S.S#andT.T#=C.T#;

三、結構化數(shù)據(jù)庫語言---SQLIN子查詢。其基本語法為:表達式[not]in(子查詢)

語義:判斷某一表達式的值是否在子查詢的結果中。再例如:列出選修了001號課程的學生的學號和姓名SelectS#,SnameFromStudentWhereS#in(SelectS#FromSCWhereC#=‘001’);再例如:求既學過001號課程,又學過002號課程的學生的學號SelectS#FromSCWhereC#=‘001’andS#in(SelectS#FromSCWhereC#=‘002’);三、結構化數(shù)據(jù)庫語言---SQL再例如:列出沒學過李明老師講授課程的所有同學的姓名SelectSnameFromStudentWhereS#not

in(SelectS#FromSC,CourseC,TeacherT WhereT.Tname=‘李明’andSC.C#=C.C# andT.T#=C.T#);三、結構化數(shù)據(jù)庫語言---SQL非相關子查詢SelectSnameFromStudentWhereS#not

in(SelectS#

FromSC,CourseC,TeacherT WhereT.Tname=‘李明’andSC.C#=C.C# andT.T#=C.T#);

內(nèi)層查詢獨立進行,沒有涉及任何外層查詢相關信息的子查詢被稱為非相關子查詢。內(nèi)層查詢外層查詢?nèi)⒔Y構化數(shù)據(jù)庫語言---SQL有時,內(nèi)層查詢需要依靠外層查詢的某些參量作為限定條件才能進行,這樣的子查詢稱為相關子查詢。外層向內(nèi)層傳遞的參量需要使用外層的表名或表別名來限定例如:求學過001號課程的同學的姓名

SelectSnameFromStudentStudWhereS#in(SelectS#

FromSC WhereS#=Stud.S#andC#=‘001’);

注意:相關子查詢只能由外層向內(nèi)層傳遞參數(shù),而不能反之;這也稱為變量的作用域原則。相關子查詢?nèi)?、結構化數(shù)據(jù)庫語言---SQL再如:求既學過“001”號課又學過“002”號課的所有學生的學號(二表連接)SelectSC1.S#FromSCSC1,SCSC2Where

SC1.S#=SC2.S#andSC1.C#=‘C01’andSC2.C#=‘C02;

再如:求“C01”號課成績比“C02”號課成績高的所有學生的學號(二表連接)SelectSC1.S#FromSCSC1,SCSC2Where

SC1.S#=SC2.S#andSC1.C#=‘C01’andSC2.C#=‘C02’andSC1.Score>SC2.Score;SQL-SELECT之多表聯(lián)合操作(6)小結?SELECT…FROM表名1,表名2,…

WHERE…SELECT…FROM…WHERE…IN(SELECT…FROM…WHERE…)三、結構化數(shù)據(jù)庫語言---SQL結果計算與聚集函數(shù)select子句可以是一些計算表達式或聚集函數(shù),表明在選擇和投影的同時直接進行一些運算,如下所示:

Select列名|expr|agfunc(列名)[[,列名|expr|agfunc(列名)]…]

From表名1[,表名2…][Where檢索條件];

計算表達式可以是常量、列名或由常量、列名、特殊函數(shù)及算術運算符構成的算術運算式。求有差額(差額>0)的任意兩位教師的薪水差額SelectT1.TnameasTR1,T2.TnameasTR2,T1.Salary–T2.Salary

FromTeacherT1,TeacherT2WhereT1.Salary>T2.Salary;

三、結構化數(shù)據(jù)庫語言---SQL結果計算與聚集函數(shù)

SQL提供了五個作用在簡單列值集合上的內(nèi)置聚集函數(shù)agfunc,分別是:COUNT、SUM、AVG、MAX、MINSQL聚集函數(shù)的參數(shù)類型、結果類型與作用如下:三、結構化數(shù)據(jù)庫語言---SQL求教師的工資總額SelectSum(Salary)FromTeacher;

求計算機系教師的工資總額SelectSum(Salary)

FromTeacherT,DeptWhereDept.Dname=‘計算機’andDept.D#=T.D#;

求數(shù)據(jù)庫課程的平均成績SelectAVG(Score)

FromCourseC,SCWhereC.Cname=‘數(shù)據(jù)庫’andC.C#=SC.C#;結果計算與聚集函數(shù)三、結構化數(shù)據(jù)庫語言---SQL分組計算與聚集為解決同時求解若干個集合的聚集運算問題,引出了分組的概念。SQL可以將檢索到的元組按照某一條件進行分類,具有相同條件值的元組劃到一個組或一個集合中,這一過程就是分組過程。分組可以在基本Select語句基礎上引入分組子句來完成:

Select列名|expr|agfunc(列名)[[,列名|expr|agfunc(列名)]…]

From表名1[,表名2…][Where檢索條件][Groupby分組條件];

分組條件可以是

列名1,列名2,…SELECT…FROM…WHERE…GROUPBY…HAVING…ORDERBY…三、結構化數(shù)據(jù)庫語言---SQL例如:求每一個學生的平均成績SelectS#,AVG(Score)FromSCGroupbyS#;再如:求每一門課程的平均成績SelectC#,AVG(Score)FromSCGroupbyC#;分組計算與聚集GroupbyC#GroupbyS#三、結構化數(shù)據(jù)庫語言---SQL求不及格課程超過兩門的同學的學號,下述寫法正確嗎?SelectS#FromSCWhereScore<60andCount(*)>2GroupbyS#;若要對分組(集合)進行條件過濾,可使用Having子句

Select列名|expr|agfunc(列名)[[,列名|expr|agfunc(列名)]…]

From表名1[,表名2…][Where檢索條件][Groupby分組條件[Having分組過濾條件]];分組過濾----過濾掉分組,而不是元組三、結構化數(shù)據(jù)庫語言---SQL每一行都要檢查滿足與否的條件要用WHERE子句表達每一分組檢查滿足與否的條件要用Having子句表達。注意:不是每一行都檢查,所以使用Having子句一定要有Groupby子句

HAVING子句與WHERE子句表達條件的區(qū)別分組過濾----過濾掉分組,而不是元組三、結構化數(shù)據(jù)庫語言---SQL例如求不及格課程超過兩門的同學的學號SelectS#FromSCWhereScore<60GroupbyS#HavingCount(*)>2;

再如求有10人以上不及格的課程號SelectC#FromSCWhereScore<60GroupbyC#HavingCount(*)>10;分組過濾----過濾掉分組,而不是元組三、結構化數(shù)據(jù)庫語言---SQL例如:求有兩門以上不及格課程的同學的學號及其平均成績SelectS#,Avg(Score)FromSCWhereScore<60GroupbyS#HavingCount(*)>2;

上述寫法正確嗎?正確的如下書寫,為什么呢?SelectS#,AVG(Score)FromSCWhereS#in

(SelectS#FromSC WhereScore<60 GroupbyS#HavingCount(*)>2)GroupbyS#;分組過濾----過濾掉分組,而不是元組三、結構化數(shù)據(jù)庫語言---SQLSQL-SELECT的完整語法Subquery::==

SELECT[ALL|DISTINCT]{*|expr[[AS]c_alias]{,…}}

FROM

tableref{,…}[WHERE

search_condition][GROUPBY

column{,…}][HAVING

search_condition]|subquery[UNION

[ALL]|INTERSECT

[ALL]|EXCEPT

[ALL]][CORRESPONDING[BY](colname{,…})]subquery;Tableref::==tablename[corr_name]Selectstatement::==Subquery[ORDERBYresult_column[ASC|DESC]{,…}]三、結構化數(shù)據(jù)庫語言---SQL第12章數(shù)據(jù)庫與大數(shù)據(jù)一、數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng)二、結構化數(shù)據(jù)庫的基礎---關系模型三、結構化數(shù)據(jù)庫語言---SQL四、大數(shù)據(jù)本章導圖數(shù)據(jù)的重要性由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(1)數(shù)據(jù)也是生產(chǎn)力?四、大數(shù)據(jù)用數(shù)據(jù)說話、用數(shù)據(jù)決策、用數(shù)據(jù)創(chuàng)新大數(shù)據(jù)的來源借助于移動終端與移動網(wǎng)絡物聯(lián)網(wǎng)技術/InternetofThings互聯(lián)網(wǎng)大量用戶的使用面對大數(shù)據(jù)需要做什么?有了關系數(shù)據(jù)庫,為什么還需要NoSQL?由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(1)數(shù)據(jù)也是生產(chǎn)力?四、大數(shù)據(jù)所謂的【NoSQL】,“不僅僅是SQL數(shù)據(jù)庫的管理,還包括非SQL數(shù)據(jù)庫的管理”非SQL數(shù)據(jù)庫的管理SQL語言是關系數(shù)據(jù)庫系統(tǒng)語言,SQL代表著關系數(shù)據(jù)庫大數(shù)據(jù)管理—NoSQLNoSQL通常是為處理互聯(lián)網(wǎng)上的半結構化數(shù)據(jù)(如網(wǎng)頁數(shù)據(jù)、微信數(shù)據(jù)等)服務的由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(1)數(shù)據(jù)也是生產(chǎn)力?四、大數(shù)據(jù)NoSQL進行數(shù)據(jù)管理的基本思想由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(1)數(shù)據(jù)也是生產(chǎn)力?四、大數(shù)據(jù)大數(shù)據(jù)挖掘—“啤酒與尿布的故事”數(shù)據(jù)對超市經(jīng)營有無幫助呢?客戶購買習慣商品組合方式及策略…

…營銷策略價格策略貨源組織由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(2)數(shù)據(jù)運用的前提—數(shù)據(jù)的聚集與管理?從超市數(shù)據(jù)庫能挖掘出什么四、大數(shù)據(jù)由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(4)怎樣挖掘數(shù)據(jù)--一個例子?數(shù)據(jù)挖掘之關聯(lián)規(guī)則挖掘商品的關聯(lián)規(guī)則“尿布”?

“啤酒”

[支持度=2%,置信度=60%]

“由尿布的購買,能夠推斷出啤酒的購買”

支持度2%意味著所分析事務的2%同時購買尿布和啤酒置信度60%意味著購買尿布的顧客60%也購買啤酒。是否相信這條規(guī)則呢?—讓數(shù)據(jù)說話四、大數(shù)據(jù)由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(3)什么是數(shù)據(jù)挖掘?數(shù)據(jù)挖掘,又稱為數(shù)據(jù)庫中知識發(fā)現(xiàn),它是一個從大量數(shù)據(jù)中抽取挖掘出未知的、有價值的模式或規(guī)律等知識的復雜過程。簡單地講就是從大量數(shù)據(jù)中挖掘或抽取出知識。概要歸納關聯(lián)分析分類與預測聚類分析異類分析演化分析四、大數(shù)據(jù)由數(shù)據(jù)庫到數(shù)據(jù)挖掘I-數(shù)據(jù)挖掘示例之背景與概念(5)概念準備?1.項、項集與事務設P

={p1,p2,...,pm

}是所有項(Item)的集合。D是數(shù)據(jù)庫中所有事務的集合,其中每個事務T(Transaction)是項的集合,是P的子集,即T

P;每一個事務有一個關鍵字屬性,稱作交易號或事務號以區(qū)分數(shù)據(jù)庫中的每一個事務。設A

是一個項集(ItemSet),事務T包含A當且僅當A

T。2.關聯(lián)規(guī)則關聯(lián)規(guī)則是形如A

B

的蘊涵式,即命題A(如“項集A的購買”)蘊涵著命題B(“如項集B的購買”),或者說由命題A能夠推出命題B,其中A

P,B

P,并且A∩B=。

關聯(lián)規(guī)則挖掘相關的基本概念四、大數(shù)據(jù)3.支持度與置信度Support(A

B)=P(A∪B)=包含A和B的事務數(shù)

D中事務總數(shù)。

confidence(A

B)=P(B|A)=包含A和B的事務數(shù)包含A的事務數(shù)。支持度反映一條規(guī)則的實用性,置信度反映規(guī)則的“值得信賴性”的程度4.強規(guī)則同時滿足最小支持度閾值(min_s)和最小置信度閾值(min_c)的規(guī)則稱作強規(guī)則。

5.k-項集與k-頻繁項集項的集合稱為項集,包含k個項的項集稱為k-項集。項集的出現(xiàn)頻率是包含項集的事務數(shù),簡稱為項集的頻率、支持計數(shù)或計數(shù)。如果項集的出現(xiàn)頻率大于或等于min_s與D中

溫馨提示

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

評論

0/150

提交評論