大学计算机计算思维与信息素养第12章_第1页
大学计算机计算思维与信息素养第12章_第2页
大学计算机计算思维与信息素养第12章_第3页
大学计算机计算思维与信息素养第12章_第4页
大学计算机计算思维与信息素养第12章_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章数据库与大数据哈尔滨工业大学计算学部教授张丽杰zlj@第12章数据库与大数据一、数据库与数据库管理系统二、结构化数据库的基础---关系模型三、结构化数据库语言---SQL四、大数据本章导图传统社会:业务工作信息社会:业务工作+计算机支持网络/Internet

数据库EverythingOverDB数据为什么要管理--数据自有黄金屋(1)信息社会的工作方式?一、数据库与数据库管理系统形成“库”,实现“积累”应用“库”,实现积累的效益“库”的管理与控制纸面数据vs.电子数据单一数据文件vs.数据库数据产生的分散化vs.数据应用的共享化小规模数据vs.大规模数据数据与数据库数据一、数据库与数据库管理系统各种“资源”库图像数据库、音乐数据库与多媒体数据库工程数据库地理信息数据库文献数据库Web数据库。又称为Internet数据库数据仓库车辆数据库产品数据库机床数据库信用数据库烟酒数据库…

…一、数据库与数据库管理系统大数据价值发现2008年全球产生的数据量为0.49ZB(250MB)2009年的数据量为0.8ZB2010年增长为1.2ZB2011年的数量更是高达1.82ZB2012年为止,人类所有印刷材料的数据量是200PB预计到2020年,全世界的数据规模将达今天的44倍。

Farecast:飞机票价格预测购票时机与机票价格的关系?怎样预测机票价格?只求关系,不求因果不要相信经验,一切以数据说话一、数据库与数据库管理系统数据为什么要管理--数据自有黄金屋(6)小结?数据管理与运用数据库数据大数据数据聚集数据获取发现数据价值一、数据库与数据库管理系统相互有关联关系的数据的集合数据库//Database学生成绩单一个表聚集了具有相同结构类型的若干个对象一行数据反映了某一对象的相关内容一列数据具有相同的数据类型表与表间也存在着相互关联数据库:相互有关联关系的数据的集合学生登记表一、数据库与数据库管理系统DBMS管理数据库的一种系统软件DBA完成某一功能的应用程序1应用程序2应用程序nDBAP1DBAP2DBAPn数据库系统(工作环境)数据库(DB):Database数据库管理系统(DBMS):DatabaseManagementSystem数据库应用(DBAP):DataBaseApplication数据库管理员(DBA):DataBaseAdministrator计算机基本系统相互有关联关系的数据的集合数据库//Database一、数据库与数据库管理系统DBMSOracle或Sybase或SQLServer或DB2或MSAccessDBA图书采买管理程序图书借阅管理程序读者管理程序DBAP1DBAP3DBAPnTable1:出版社T2:出版社图书目录T3:采买记录T4:图书;T5:读者T6:借阅登记T7:工作人员数据库//Database采买员借还管理员借书证管理员图书编目管理程序DBAP2编目员数据库系统(工作环境)示例:图书管理数据库系统一、数据库与数据库管理系统表名表标题(格式)数据库定义:定义数据库中数据表的名称、标题(内含的属性名称及对该属性的值的要求)等

DBMS提供一套数据定义语言(DDL:DataDefinitionLanguage)给用户用户使用DDL描述其所要建立表的格式

DBMS依照用户的定义,创建数据库及其中的Table用户DBAPDBMS1.执行定义操作,创建数据库数据库一、数据库与数据库管理系统数据库管理系统的基本功能--从用户角度看数据库操纵:向数据库的Table中增加/删除/更新数据及对数据进行查询、检索、统计等

DBMS提供一套数据操纵语言(DML:DataManipulationLanguage)给用户用户使用DML描述其所要进行的增、删、改、查等操作

DBMS依照用户的操作描述,实际执行这些操作用户DBAPDBMS2.对表的内容执行增加、删除、更新、检索等操作数据库一、数据库与数据库管理系统数据库管理系统的基本功能--从用户角度看数据库控制:控制数据库中数据的使用---哪些用户可以使用,哪些不可以

DBMS提供一套数据控制语言(DCL:DataControlLanguage)给用户用户使用DCL描述其对数据库所要实施的控制

DBMS依照用户的描述,实际进行控制用户DBAPDBMS3.依照定义信息,对数据库的使用实施控制数据库数据安全性完整性定义信息谁,能访问哪些数据,权利DBADBMS定义控制信息一、数据库与数据库管理系统数据库管理系统的基本功能--从用户角度看数据库维护:转储/恢复/重组/性能监测/分析…DBMS提供一系列程序(实用程序/例行程序)

给用户在这些程序中提供了对数据库维护的各种功能用户使用这些程序进行各种数据库维护操作数据库维护的实用程序,一般都是由数据库管理员(DBA)来使用和掌握的用户DBAPDBMS4.数据库维护,如转储…数据库DBA一、数据库与数据库管理系统数据库管理系统的基本功能--从用户角度看DBMS为完成DB管理,在后台运行着一系列程序…数据库物理存储数据库查询执行及查询优化并发控制故障恢复安全性控制完整性控制数据字典管理应用程序接口(API)

……一、数据库与数据库管理系统数据库管理系统的基本功能--从系统角度看数据库管理系统数据库数据定义数据操纵数据控制数据存储数据查询数据维护数据库语言一系列执行存储/查找/备份/解析语言等的程序一、数据库与数据库管理系统第12章数据库与大数据一、数据库与数据库管理系统二、结构化数据库的基础---关系模型三、结构化数据库语言---SQL四、大数据本章导图学生成绩单表名表标题(格式)表内容(值)列名列值行/元组/记录(row/tuple/record)列/字段/属性/数据项(column/field/attribute/dataitem)(关系)模式表/关系Table中描述了一批相互有关联关系的数据==关系数据库的关系模型起源于规范化“表(Table)”的处理Table:

以按行按列形式组织及展现的数据基本数据模型:关系模型I-什么是关系(2)你理解关于关系的一些术语的含义吗?二、结构化数据库的基础---关系模型怎样把一张表格定义清楚呢?2.值域(Domain)说清楚每一列数据可能的取值1.指出有多少列3.指出所有可能的元组元组是值的一个组合;值域中值的所有可能的组合----笛卡尔积关系中元组是有意义的组合----笛卡尔积的子集4.指出关系中的元组用数学严格地定义Table二、结构化数据库的基础---关系模型用数学严格地定义Table基本数据模型:关系模型I-什么是关系(3)如何用数学来定义关系呢?首先定义“列”的取值范围“域(Domain)”域(Domain)一组值的集合,这组值具有相同的数据类型如整数的集合、字符串的集合、全体学生的集合再如,由8位数字组成的数字串的集合,由0到100组成的整数集合集合中元素的个数称为域的基数(Cardinality)D1=男人集合(MAN)={李基,张鹏}D2=女人集合(WOMAN)={王芳,刘玉}D3=儿童集合(CHILD)={李健,张睿,张峰}二、结构化数据库的基础---关系模型再定义“元组”及所有可能组合成的元组:笛卡尔积笛卡尔积(CartesianProduct)一组域D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}笛卡尔积的每个元素(d1,d2,…,dn)称作一个n-元组(n-tuple)D1=男人D2=女人D3=儿童{李基,张鹏}{王芳,刘玉}{李健,张睿,张峰}用数学严格地定义Table基本数据模型:关系模型I-什么是关系(3)如何用数学来定义关系呢?二、结构化数据库的基础---关系模型由于笛卡尔积中的所有元组并不都是有意义的,因此…关系(Relation)一组域D1,D2,…,Dn的笛卡尔积的子集:笛卡尔积中具有某一方面意义的那些元组被称作一个关系(Relation)由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名。不同列名的列值可以来自相同域。例如:家庭(丈夫:男人,妻子:女人,子女:儿童)或家庭(丈夫,妻子,子女)列名(属性名)列值:来自域用数学严格地定义Table基本数据模型:关系模型I-什么是关系(3)如何用数学来定义关系呢?二、结构化数据库的基础---关系模型关系的性质列是同质的(Homogeneous),即每一列中的分量是同一类型数据,来自同一个域不同的列可出自同一个域,每一列称为属性,要给予不同的属性名列的顺序可以任意交换,行的顺序也可以任意交换任意两个元组不能完全相同每一分量必须是不可分的数据项丈夫 妻子 孩子 第一个第二个李基 王芳 李健 张鹏 刘玉 张睿 张峰981101数据库01张三100981101数据库02张四90981101数据库03张五80981101计算机01张三89981101计算机02张四98981101计算机03张五72981102数据库01王三30981102数据库02王四90981102数据库03王武78学生成绩单班级课程学号姓名成绩基本数据模型:关系模型I-什么是关系(4)关系有什么性质?二、结构化数据库的基础---关系模型基本数据模型:关系模型I-什么是关系(7)小结?学生成绩单表名表标题(格式)表内容(值)列名列值行/元组/记录(row/tuple/record)列/字段/属性/数据项(column/field/attribute/dataitem)(关系)模式表/关系Table中描述了一批相互有关联关系的数据==关系数据库的关系模型起源于规范化“表(Table)”的处理Table:

以按行按列形式组织及展现的数据表关系属性/列记录/行二、结构化数据库的基础---关系模型有哪些运算?并:RS差:RS交:RS选择:(R)投影:(R)积:RS连接:RS二、结构化数据库的基础---关系模型关系操作–––关系代数并(Union)RS

定义:设关系R和关系S是并相容的(即:属性数目相同,其对应的域也相同),则关系R与关系S的并运算结果也是一个关系,记作:R∪S,它由或者出现在关系R中,或者出现在S中的元组构成数学描述:RS={t|tRtS},其中t是元组

R∪S与S∪R运算的结果是同一个关系RS二、结构化数据库的基础---关系模型R(参加体育队的学生)S(参加文艺队的学生)R∪S(或者参加体育队或者文艺队的学生)并(Union)二、结构化数据库的基础---关系模型

定义:假设关系R和关系S是并相容的,则关系R与关系S的差运算结果也是一个关系,记作:RS,它由出现在关系R中但不出现在关系S中的元组构成

数学描述:RS={t|tRtS}

,其中t是元组注意:RS与SR是不同的RSR

SRSS

R差(Difference)二、结构化数据库的基础---关系模型R(参加体育队的学生)S(参加文艺队的学生)R-S(参加体育队而未参加文艺队的学生)S-R(参加文艺队而未参加体育队的学生)差(Difference)二、结构化数据库的基础---关系模型

定义:假设关系R和关系S是并相容的,则关系R与关系S的交运算结果也是一个关系,记作:R∩S,它由同时出现在关系R和关系S中的元组构成

数学描述:RS={t|tRtS}

,其中t是元组

R∩S和S∩R运算的结果是同一个关系交运算可以通过差运算来实现:

RS=R(RS)=S(SR)RSRS交(Intersection)二、结构化数据库的基础---关系模型交(Intersection)R(参加体育队的学生)S(参加文艺队的学生)R∩S(既参加体育队又参加文艺队的学生)二、结构化数据库的基础---关系模型

定义:关系R(<a1,

a2,…,an>)与关系S(<b1,b2,…,bm>)的广义笛卡尔积(简称广义积)运算结果也是一个关系,记作:RxS,它由关系R中的元组与关系S的元组进行所有可能的拼接(或串接)构成。

数学描述:Rx

S={<a1,

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

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

S}

笛卡尔积可将两个表串接起来作为一个表进行操作广义笛卡尔积(CartesianProduct)二、结构化数据库的基础---关系模型广义笛卡尔积(CartesianProduct)二、结构化数据库的基础---关系模型学生成绩单表名表标题(格式)表内容(值)列名列值行/元组/记录(row/tuple/record)列/字段/属性/数据项(column/field/attribute/dataitem)(关系)模式表/关系Table中描述了一批相互有关联关系的数据==关系数据库的关系模型起源于规范化“表(Table)”的处理Table:

以按行按列形式组织及展现的数据表关系并差交积二、结构化数据库的基础---关系模型

定义:给定一个关系R,同时给定一个选择的条件condition(简记con),选择运算结果也是一个关系,记作con(R)

,它从关系R中选择出满足给定条件condition的元组构成数学描述:con(R)={t|tRcon(t)=‘真’}

设R(A1,A2,…,An),t是R的元组,t的分量记为t[Ai],或简写为Ai

条件con由逻辑运算符连接算术/比较表达式组成逻辑运算符:,,或写为and,or,not

算术/比较表达式:XY,其中X,Y是t的分量、常量或简单函数,是比较运算符,{,,,,,≠}选择(Selection)二、结构化数据库的基础---关系模型选择(Selection)R(学生表)

Sage<20(R)查询所有年龄小于20同学的信息

D#=“03”νD#=“05”(R)查询所有3系或5系的同学信息二、结构化数据库的基础---关系模型

定义:给定一个关系R,投影运算结果也是一个关系,记作A(R)

,它从关系R中选出属性包含在A中的列构成数学描述: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)二、结构化数据库的基础---关系模型投影(Projection)R(学生表)Sname,Sage(R)查询所有学生的姓名和年龄

Sname,D#(R)查询所有学生的姓名及其所在的系二、结构化数据库的基础---关系模型

定义:给定关系R和关系S,R与S的连接运算结果也是一个关系,记作,它由关系R和关系S的笛卡尔积中,选取R中属性A与S中属性B之间满足条件的元组构成。数学描述:

设R(A1,A2

,…,An),A{A1,A2

,…,An

}

S(B1,B2

,…,Bm),B{B1,B2

,…,Bm

}t是关系R中的元组,s是关系S中的元组属性A和属性B具有可比性是比较运算符,{,,,,,≠}在实际应用中,-连接操作经常与投影、选择操作一起使用-连接(-Join)二、结构化数据库的基础---关系模型

定义:给定关系R和关系S,R与S的自然连接运算结果也是一个关系,记作,它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元组所构成。数学描述:

自然连接是一种特殊的连接运算要求关系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)二、结构化数据库的基础---关系模型-连接

vs.连接vs.笛卡尔积二、结构化数据库的基础---关系模型学生成绩单表名表标题(格式)表内容(值)列名列值行/元组/记录(row/tuple/record)列/字段/属性/数据项(column/field/attribute/dataitem)(关系)模式表/关系Table中描述了一批相互有关联关系的数据==关系数据库的关系模型起源于规范化“表(Table)”的处理Table:

以按行按列形式组织及展现的数据表关系并选择差交投影连接积二、结构化数据库的基础---关系模型查询表达式组合各种运算查询学习课程号为002的学生学号和成绩πS#,Score(

)查询学习课程号为001的学生学号、姓名查询学习课程名称为数据结构的学生学号、姓名和这门课程的成绩πS#,Sname,Score(σCname=“数据结构”(Student

SCCourse))SC

C#=“002”()Student

SCCourseσCname=“数据结构”(Student

SCCourse)二、结构化数据库的基础---关系模型查询表达式注意连接与积的差别查询学习课程号为001的学生学号、姓名πS#,Sname()

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

C#=“001”()StudentSC二、结构化数据库的基础---关系模型第12章数据库与大数据一、数据库与数据库管理系统二、结构化数据库的基础---关系模型三、结构化数据库语言---SQL四、大数据本章导图数据库语言SQL

Select列名[[,列名]…]

From表名1[[,表名2],…][Where检索条件];语义:将From后面的所有表串接起来,检索出满足“检索条件”的元组,并按给定的列名及顺序进行投影显示。列名,…,列名(

检索条件(表名1表名2…))关系运算式三、结构化数据库语言---SQLSQL:StructuralQueryLanguageSQL语言是数据库系统的标准语言,它可以定义数据库、操纵数据库和进行数据库控制。SQL语言主要由以下9个单词引导的操作语句来构成,但每一种语句都能表达复杂的操作请求。

DDL语句引导词:Create(建立),Alter(修改),Drop(撤消)定义Database,Table,View,IndexDML语句引导词:Insert(插入),Update(更新),Delete(删除),Select(查询)各种方式的更新与检索操作各种条件的查询操作,如连接查找,模糊查找,分组查找,嵌套查找等各种聚集操作,求平均、求和、…等,分组聚集,分组过滤等

DCL语句引导词:Grant,Revoke安全性控制---授权和撤消授权三、结构化数据库语言---SQL创建课程学习数据库: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

表名(列名数据类型[notnull][,列名数据类型,…]);三、结构化数据库语言---SQLinsertinto

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

values

(值[,值],…);追加学生表中的元组InsertIntoStudentValues(‘98030101’,‘张三’,‘男’,20,’03’,‘980301’);InsertIntoStudent(S#,Sname,Ssex,Sage,D#,Sclass)Values(‘98030102’,‘张四’,‘女’,20,’03’,‘980301’);追加课程表中的元组InsertIntoCourse/*所有列名省略,须与定义或存储的列名顺序一致Values(‘001’,‘数据库’,40,6,’001’);

/*如列名未省略,须与语句中列名的顺序一致InsertIntoCourse(Cname,C#,Credit,Chours,T#);Values(‘数据库’,‘001’,6,40,‘001’);三、结构化数据库语言---SQL已经建立好的数据库---供后面学习和训练使用三、结构化数据库语言---SQLSelect的简单语法形式为:

Select列名[[,列名]…]

From表名[Where检索条件];语义:从<表名>所给出的表中,查询出满足<检索条件>的元组,并按给定的<列名>及顺序进行投影显示列名,…,列名(

检索条件(表名))三、结构化数据库语言---SQL例如:检索学生表中所有学生的信息SelectS#,Sname,Ssex,Sage,Sclass,D#

FromStudent;Select*FromStudent;//如投影所有列,则可以用*来简写

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

FromStudent;

再如:检索学生表中所有年龄小于20岁的学生的年龄及姓名SelectSage,

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

FromStudentWhereSage<20;SELECT…FROM…WHERE…三、结构化数据库语言---SQL例如:求或者学过001号课程,或者学过002号课程的学生的学号SelectS#FromSCWhereC#=‘001’ORC#=‘002’;

再例如:求既学过001号课程,又学过002号课程的学生的学号?如下书写SQL语句会得到正确结果吗?它能得到什么结果?怎样正确书写?SelectS#FromSCWhereC#=‘001’ANDC#=‘002’;

对于每一行应用Where子句的条件SELECT…FROM…WHERE…三、结构化数据库语言---SQL例如:在选课表中,检索成绩大于80分的所有学号SelectS#

FromSCWhereScore>80;//有重复元组出现,比如一个同学两门以上课程大于80SelectDISTINCTS#

FromSCWhereScore>80;//重复元组被DISTINCT过滤掉,只保留一份检索结果去重复:DISTINCT表(Table)和关系(Relation)在大部分情况下概念通用,但有细微差别:前者可允许有重复元组,而后者不允许三、结构化数据库语言---SQLSelect语句中结果排序是通过增加orderby子句实现的

orderby

列名[asc|desc]意义为结果按指定列名进行排序,若后跟asc或省略,则为升序;若后跟desc,则为降序。例如:按学号由小到大的顺序显示出所有学生的学号及姓名SelectS#,SnameFromStudentOrderByS#ASC

;

再如:检索002号课大于80分的所有同学学号并按成绩由高到低顺序显示SelectS#FromSCWhereC#=‘002’andScore>80OrderByScoreDESC

;检索结果的排序SELECT…FROM…WHERE…ORDERBY…三、结构化数据库语言---SQL比如检索“姓张的学生”,检索“张某某”,这类查询问题,Select语句是通过在检索条件中引入运算符like来表示的含有like运算符的表达式

列名[not]like“字符串”找出匹配给定字符串的字符串。其中给定字符串中可以出现%,_等匹配符.

匹配规则:“%”匹配零个或多个字符“_”匹配任意单个字符

\”

转义字符,用于去掉一些特殊字符的特定含义,使其被作为普通字符看待,如用“\%”去匹配字符%,用\_去匹配字符_模糊查询三、结构化数据库语言---SQL例如:检索所有姓张的学生学号及姓名SelectS#,SnameFromStudentWhereSnameLike‘张%’;

再如:检索名字为张某某的所有同学姓名SelectSnameFromStudentWhereSnameLike‘张__’;

再如:检索名字不姓张的所有同学姓名SelectSnameFromStudentWhereSnameNot

Like‘张%’;三、结构化数据库语言---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…三、结构化数据库语言---SQLSelect的多表联合检索语句如下:

Select列名[[,列名]…]

From表名1,表名2,…

Where检索条件;相当于列名,…,列名(

检索条件(表名1表名2…))检索条件中要包含连接条件,通过不同的连接条件可以实现各种连接操作。SQL-SELECT之多表联合操作(1)多表联合检索的表达方法三、结构化数据库语言---SQL例如:按“001”号课成绩由高到低的顺序显示出所有学生的姓名(二表连接)SelectSnameFromStudent,SCWhere

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

当多表连接时,如果两个表的属性名相同,则需采用表名.

属性名方式来限定该属性是属于哪一个表再如:按‘数据库’课程成绩由高到低顺序显示所有同学姓名(三表连接)SelectSnameFromStudent,SC,CourseWhere

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

andCname=‘数据库’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)三、结构化数据库语言---SQL连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名(同一表的连接)等,因此需要使用别名以便区分

select中采用别名的方式:

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

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

Where检索条件;

上述定义中的as可以省略当定义了别名后,在检索条件中可以使用别名来限定属性三、结构化数据库语言---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)三、结构化数据库语言---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;三、结构化数据库语言---SQL正确理解汉语表达的查询语义,正确表达为SQL语句

例如:列出没学过李明老师讲授课程的所有同学的姓名。

如下书写SQL语句会得到正确结果吗?它能得到什么结果?怎样正确书写?SelectSnameFromStudentS,SC,CourseC,TeacherTWhere

T.Tname<>‘李明’

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

三、结构化数据库语言---SQLIN子查询。其基本语法为:表达式[not]in(子查询)

语义:判断某一表达式的值是否在子查询的结果中。再例如:列出选修了001号课程的学生的学号和姓名SelectS#,SnameFromStudentWhereS#in(SelectS#FromSCWhereC#=‘001’);再例如:求既学过001号课程,又学过002号课程的学生的学号SelectS#FromSCWhereC#=‘001’andS#in(SelectS#FromSCWhereC#=‘002’);三、结构化数据库语言---SQL再例如:列出没学过李明老师讲授课程的所有同学的姓名SelectSnameFromStudentWhereS#not

in(SelectS#FromSC,CourseC,TeacherT WhereT.Tname=‘李明’andSC.C#=C.C# andT.T#=C.T#);三、结构化数据库语言---SQL非相关子查询SelectSnameFromStudentWhereS#not

in(SelectS#

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

内层查询独立进行,没有涉及任何外层查询相关信息的子查询被称为非相关子查询。内层查询外层查询三、结构化数据库语言---SQL有时,内层查询需要依靠外层查询的某些参量作为限定条件才能进行,这样的子查询称为相关子查询。外层向内层传递的参量需要使用外层的表名或表别名来限定例如:求学过001号课程的同学的姓名

SelectSnameFromStudentStudWhereS#in(SelectS#

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

注意:相关子查询只能由外层向内层传递参数,而不能反之;这也称为变量的作用域原则。相关子查询三、结构化数据库语言---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之多表联合操作(6)小结?SELECT…FROM表名1,表名2,…

WHERE…SELECT…FROM…WHERE…IN(SELECT…FROM…WHERE…)三、结构化数据库语言---SQL结果计算与聚集函数select子句可以是一些计算表达式或聚集函数,表明在选择和投影的同时直接进行一些运算,如下所示:

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

From表名1[,表名2…][Where检索条件];

计算表达式可以是常量、列名或由常量、列名、特殊函数及算术运算符构成的算术运算式。求有差额(差额>0)的任意两位教师的薪水差额SelectT1.TnameasTR1,T2.TnameasTR2,T1.Salary–T2.Salary

FromTeacherT1,TeacherT2WhereT1.Salary>T2.Salary;

三、结构化数据库语言---SQL结果计算与聚集函数

SQL提供了五个作用在简单列值集合上的内置聚集函数agfunc,分别是:COUNT、SUM、AVG、MAX、MINSQL聚集函数的参数类型、结果类型与作用如下:三、结构化数据库语言---SQL求教师的工资总额SelectSum(Salary)FromTeacher;

求计算机系教师的工资总额SelectSum(Salary)

FromTeacherT,DeptWhereDept.Dname=‘计算机’andDept.D#=T.D#;

求数据库课程的平均成绩SelectAVG(Score)

FromCourseC,SCWhereC.Cname=‘数据库’andC.C#=SC.C#;结果计算与聚集函数三、结构化数据库语言---SQL分组计算与聚集为解决同时求解若干个集合的聚集运算问题,引出了分组的概念。SQL可以将检索到的元组按照某一条件进行分类,具有相同条件值的元组划到一个组或一个集合中,这一过程就是分组过程。分组可以在基本Select语句基础上引入分组子句来完成:

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

From表名1[,表名2…][Where检索条件][Groupby分组条件];

分组条件可以是

列名1,列名2,…SELECT…FROM…WHERE…GROUPBY…HAVING…ORDERBY…三、结构化数据库语言---SQL例如:求每一个学生的平均成绩SelectS#,AVG(Score)FromSCGroupbyS#;再如:求每一门课程的平均成绩SelectC#,AVG(Score)FromSCGroupbyC#;分组计算与聚集GroupbyC#GroupbyS#三、结构化数据库语言---SQL求不及格课程超过两门的同学的学号,下述写法正确吗?SelectS#FromSCWhereScore<60andCount(*)>2GroupbyS#;若要对分组(集合)进行条件过滤,可使用Having子句

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

From表名1[,表名2…][Where检索条件][Groupby分组条件[Having分组过滤条件]];分组过滤----过滤掉分组,而不是元组三、结构化数据库语言---SQL每一行都要检查满足与否的条件要用WHERE子句表达每一分组检查满足与否的条件要用Having子句表达。注意:不是每一行都检查,所以使用Having子句一定要有Groupby子句

HAVING子句与WHERE子句表达条件的区别分组过滤----过滤掉分组,而不是元组三、结构化数据库语言---SQL例如求不及格课程超过两门的同学的学号SelectS#FromSCWhereScore<60GroupbyS#HavingCount(*)>2;

再如求有10人以上不及格的课程号SelectC#FromSCWhereScore<60GroupbyC#HavingCount(*)>10;分组过滤----过滤掉分组,而不是元组三、结构化数据库语言---SQL例如:求有两门以上不及格课程的同学的学号及其平均成绩SelectS#,Avg(Score)FromSCWhereScore<60GroupbyS#HavingCount(*)>2;

上述写法正确吗?正确的如下书写,为什么呢?SelectS#,AVG(Score)FromSCWhereS#in

(SelectS#FromSC WhereScore<60 GroupbyS#HavingCount(*)>2)GroupbyS#;分组过滤----过滤掉分组,而不是元组三、结构化数据库语言---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]{,…}]三、结构化数据库语言---SQL第12章数据库与大数据一、数据库与数据库管理系统二、结构化数据库的基础---关系模型三、结构化数据库语言---SQL四、大数据本章导图数据的重要性由数据库到数据挖掘I-数据挖掘示例之背景与概念(1)数据也是生产力?四、大数据用数据说话、用数据决策、用数据创新大数据的来源借助于移动终端与移动网络物联网技术/InternetofThings互联网大量用户的使用面对大数据需要做什么?有了关系数据库,为什么还需要NoSQL?由数据库到数据挖掘I-数据挖掘示例之背景与概念(1)数据也是生产力?四、大数据所谓的【NoSQL】,“不仅仅是SQL数据库的管理,还包括非SQL数据库的管理”非SQL数据库的管理SQL语言是关系数据库系统语言,SQL代表着关系数据库大数据管理—NoSQLNoSQL通常是为处理互联网上的半结构化数据(如网页数据、微信数据等)服务的由数据库到数据挖掘I-数据挖掘示例之背景与概念(1)数据也是生产力?四、大数据NoSQL进行数据管理的基本思想由数据库到数据挖掘I-数据挖掘示例之背景与概念(1)数据也是生产力?四、大数据大数据挖掘—“啤酒与尿布的故事”数据对超市经营有无帮助呢?客户购买习惯商品组合方式及策略…

…营销策略价格策略货源组织由数据库到数据挖掘I-数据挖掘示例之背景与概念(2)数据运用的前提—数据的聚集与管理?从超市数据库能挖掘出什么四、大数据由数据库到数据挖掘I-数据挖掘示例之背景与概念(4)怎样挖掘数据--一个例子?数据挖掘之关联规则挖掘商品的关联规则“尿布”⇒

“啤酒”

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

“由尿布的购买,能够推断出啤酒的购买”

支持度2%意味着所分析事务的2%同时购买尿布和啤酒置信度60%意味着购买尿布的顾客60%也购买啤酒。是否相信这条规则呢?—让数据说话四、大数据由数据库到数据挖掘I-数据挖掘示例之背景与概念(3)什么是数据挖掘?数据挖掘,又称为数据库中知识发现,它是一个从大量数据中抽取挖掘出未知的、有价值的模式或规律等知识的复杂过程。简单地讲就是从大量数据中挖掘或抽取出知识。概要归纳关联分析分类与预测聚类分析异类分析演化分析四、大数据由数据库到数据挖掘I-数据挖掘示例之背景与概念(5)概念准备?1.项、项集与事务设P

={p1,p2,...,pm

}是所有项(Item)的集合。D是数据库中所有事务的集合,其中每个事务T(Transaction)是项的集合,是P的子集,即T

P;每一个事务有一个关键字属性,称作交易号或事务号以区分数据库中的每一个事务。设A

是一个项集(ItemSet),事务T包含A当且仅当A

T。2.关联规则关联规则是形如A

B

的蕴涵式,即命题A(如“项集A的购买”)蕴涵着命题B(“如项集B的购买”),或者说由命题A能够推出命题B,其中A

P,B

P,并且A∩B=。

关联规则挖掘相关的基本概念四、大数据3.支持度与置信度Support(A

B)=P(A∪B)=包含A和B的事务数

D中事务总数。

confidence(A

B)=P(B|A)=包含A和B的事务数包含A的事务数。支持度反映一条规则的实用性,置信度反映规则的“值得信赖性”的程度4.强规则同时满足最小支持度阈值(min_s)和最小置信度阈值(min_c)的规则称作强规则。

5.k-项集与k-频繁项集项的集合称为项集,包含k个项的项集称为k-项集。项集的出现频率是包含项集的事务数,简称为项集的频率、支持计数或计数。如果项集的出现频率大于或等于min_s与D中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论