数据库概论课件_第1页
数据库概论课件_第2页
数据库概论课件_第3页
数据库概论课件_第4页
数据库概论课件_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

数据库概论

E-R模型、关系代数与SQL语言1数据库的应用2学员信息管理系统

档案卷宗数据库3中大型超市结算系统

数据库1,200工商银行4大型行业数据管理系统工商、税务业务管理系统公安户籍人口管理系统民航、火车订票系统水文、气象数据管理系统……56数据模型与数据模式之关系数据模型(DataModel)即是对数据进行抽象化表示的工具,主要使用逻辑概念(如对象、对象属性、对象联系等)来表示数据。数据模式(DataSchema)根据数据模型来描述数据,亦即是描述数据的模板。

通俗来讲,数据模型就是对现实世界的模拟、描述或表示。数据模型应满足的三个要求:

(1)比较真实地描述现实世界;

(2)易为用户所理解;

(3)易于在计算机上实现。7传统数据模型回顾

(1)层次数据模型(HierarchicalDataModel)

HDM是数据库系统中最早出现的数据模型。20世纪60年代后期,IBM开发出IMS(InformationManagementSystem)DBMS,是层次数据模型的基础。

用树形结构表示各类实体以及实体之间的联系。现实世界中许多实体之间的联系就呈现出一种很自然的层次关系,如:行政机构、家庭关系等。层次模型是以记录型为结点的有向树。8

按树的定义,层次模型有以下两个限制:☆只有一个结点没有双亲结点,即根结点;☆根以外的其他结点有且只有一个双亲结点。因此,层次数据库系统只能处理一对多的实体关系。

层次模型中,每个结点表示一个记录类型,结点之间的连线表示记录类型间的联系。这种联系只能是父子联系。

层次模型的另一个最基本的特点是:任何一个给定的的记录值只有按其路径查看时,才能显出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。9

(2)网状数据模型(NetDataModel)

用层次模型表示非树型结构很不直接,网状模型则可克服这一弊病。

网状数据模型的典型代表是DBTG系统,亦称CODASYL系统。是由美国数据库系统语言协会CODASYL(ConferenceOnDataSystemLanguage)下属的DBTG(DataBaseTaskGroup)于60年代末70年代初提出的一个系统方案,形成DBTG报告。网状模型比层次模型更具普遍性。

它去掉了层次模型的两个限制,允许结点有多个双亲结点。可比层次模型更直接地描述现实世界。

10数据库系统的历史20世纪50年代和60年代早期:磁带被用于数据存储。磁带(和卡片)都只能顺序读取,因此,数据处理程序被迫用一种特定的顺序对数据进行处理。20世纪60年代末和20世纪70年代:硬盘广泛使用。因为硬盘允许直接对数据进行访问,磁盘上数据的位置变得无关紧要,数据由此摆脱了顺序访问的限制。有了磁盘,就可以创建网络和层次的数据库,保存在磁盘上的如表和树这样的数据结构。11数据库系统的历史1970年,IBM研究院的Codd写的一篇具有里程碑意义的论文,定义了关系模型和在关系模型中查询数据的非过程方法,由此关系型数据库诞生了。Codd因此获得ACM图灵奖。20世纪80年代,IBM的DB2、甲骨文Oracle先后商品化20世纪90年代初:主要是为决策支持和查询设计的SQL语言出现。20世纪80年代主要的数据库是处理事务的应用,它们是更新密集的。决策支持和查询成为数据库的主要应用领域。12实体关系模型(Entity-RelationshipModel)实体-关系数据模型基于对现实世界的这样一种认识:现实世界由一组称作实体的基本对象以及这些对象间的联系构成。实体是现实世界中可区别于其他对象的一件"事情"或一个"物体实体通过-些属性来描述联系是实体之间的关联数据库的总体逻辑结构(模式}可以用E-R图进行图形化表示:用一个属性来唯一标识实体,有必要的话可额外设置一个属性。13关系举例属性(列)元组(行)14关系模式和实例A1,A2,…,An

是属性R=(A1,A2,…,An)是关系模式

例子:

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

,关系

r

D1xD2x…xDn的一个子集

即关系是一组n元组(a1,a2,…,an),其中ai

Di15大学数据库模式图16元组的选择关系r选取A=B和D>5的元组σA=BandD>5(r)17列(属性)的选择关系r:

选择

A和C投影Π

A,C(r)18关系的连接–笛卡尔积关系

r,s:rx

s:19关系的并关系

r,s:rs:20关系的集合差关系

r,s:r–s:21关系的集合交关系

r,s:r

s22自然连接关系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关系数据库标准语言SQLSQL语言是一个十分重要的标准数据库语言。SQL语言包括查询、数据操纵、定义、控制和管理等功能。SQL语言是一个综合的、通用的、功能极强的关系数据库语言。27

SQL语言的几个特点:①语言一体化:②非过程化特点:③面向集合的操作方式:④同一张愈发结构提供两种使用方式:⑤语言简洁、易学易用。28①语言一体化:

关系数据语言集DDL,DML和DCL于一体,称为一体化语言。SQL能完成定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库安全控制等一系列操作要求。具有定义、查询、更新、控制等多种功能。非关系模型的数据语言模式数据定义语言(模式DDL)外模式数据定义语言(外模式DDL或子模式DDL)与数据存储有关的描述语言(DSDL)数据操纵语言(DML)29②高度非过程化特点:关系数据语言是非过程化语言。在程序设计时,只要求用户表明“干什么”就行了,不必指明“怎么做”存取路径的选择以及SQL语句的操作过程由系统自动完成。大大减轻了用户负担,而且有利于提高数据独立性。所以关系数据语言操作简单,易学易用。30③面向集合的操作方式SQL语言采用集合操作方式操作对象、查找结果可以是元组的集合一次插入、删除、更新操作的对象可以是元组的集合非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录。31④同一种语法结构提供两种使用方式自含式语言能够独立地用于联机交互的使用方式嵌入式语言能够嵌入到高级语言(例如C,COBOL,FORTRAN,PL/1)程序中,供程序员设计程序时使用。两种不同使用方法下,SQL语言的语法结构基本一致。32⑤语言简洁、易学易用SQL功能动词数据定义CREATE,DROP,ALTER数据查询SELECT数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKESQL语言的动词33SQL语言基础基本表:本身独立存在的表,是关系数据库中最基本的对象,主要用于存储各种数据(包括系统数据)。视图:是用户看到的数据内容,是由一个或几个基本表重构的虚表。它本身不独立存在于数据库中,只有对数据的定义,没有实际存储的对应的数据,它的所有数据都在与其相关的数据基本表中,因此对视图的所有操作都将被最终转换为对相关基本表数据的操作。索引:是对基本表建立的索引(查找)文件,用于方便对基本表的存取和查找。类似于字典中的拼音或部首的检字表,通过该表我们可以非常容易地找到所要查找的字所在的位置(页码),并得到对该字的解释。34基本表与视图35数据定义概述SQL的数据定义功能定义表(模式)创建表(CREATETABLE)修改(ALTERTABLE)删除(DROPTABLE)定义试图(外模式)创建视图(CREATEVIEW)删除视图(DROPVIEW)间接修改试图定义:删除+创建36数据定义概述操作对象操作方式创建删除修改表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEXSQL的数据定义语句37定义基本表1)创建基本表作用:建立一个用以存放用户数据的表。表名:多要定义的基本表的名字列名:组成该表的各个属性(列)列级完整性约束条件:涉及相应属性罗列的完整性约束条件表级完整性约束条件:涉及一个或多个属性列的完整性约束条件语句格式:CREATETABLE表名(列名1数据类型[列级完整性约束][,列名2数据类型[列级完整性约束]]...

[表级完整性约束]);38数据类型

字符串型:CHAR(W):定长字符串型(长度为W<255)。VARCHAR(W):变长字符串型(最大长度为W)。

数值型:INT、SMALLINT:定点整数。NUMERIC、DECIMAL:定点小数。FLOAT、REAL等:浮点数。

日期/时间型:DATE:日期。TIME:时间。TIMESTAMP:日期时间。

二进制位串型:BIT:定长二进制位串。BITVAR:变长二进制串。39例1建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAT(5)NOTNULLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15));40定义基本表常用完整性约束主码约束:PRIMARYKEY唯一性约束:UNIQUE非空值约束:NOTNULL参照完整性约束PRIMARYKEY与UNIQIE的区别?41例2建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩组成,其中(Sno、Cno)为主码。CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint,Primarykey(Sno,Cno));422)修改和扩充基本表作用:增加一列、增加一个完整性约束条件,修改一个列以及表的重命名等。表名:要修改的基本表ADD子句:增加新列和新的完整性约束条件DROP子句:删除指定的完整性约束条件MODIFY子句:用于修改列明的和数据类型注意:对于增加或修改的新字段的值必须是“空”值(NULL),NOTNULL是不允许的。语句格式:

ALTERTABLE表名[

ADD

列名数据类型[完整性约束]][DROP完整性约束名]

[MODIFY列名数据类型];43例3向Student表增加“入学时间”列,其数据类型为日期型。 ALTERTABLEStudentADDScomeDATE;如果基本表中原来已有数据,新增加的一列一律为空值。如果基本表中原来已有数据,新增列不可有NOTNULL约束44例4删除属性列删除属性列间接删除把表中要保留的列及其内容复制到一个新表中删除原表再将新表重命名为原表名直接删除属性列:(新)

ALTERTABLEStudentDropScome;45例5将年龄的数据类型改为半字长整数。ALTERTABLEStudentMODIFYSageSMALLINT;注意:修改原有的列定义有可能会破坏已有数据463)删除基本表作用:删除一个包括所有保存的数据在内的表。基本表删除表的定义、数据、表上的索引都删除

表上的视图往往仍然保留,但无法引用删除基本表时,系统会从数据字典中删去有关改基本表及其索引的描述(标准中没有,认为表建立后就永久存在)语句格式:DROPTABLE表名;47建立与删除索引建立索引是加快查询速度的有效手段建立索引DBA或表的属主(即建立表的人)根据需要建立有些DBMS自动建立以下列上的索引PRIMARYKEYUNIQUE维护索引DBMS自动完成使用索引DBMS自动选择是否使用索引以及使用那些索引481)建立索引表名指定要建索引的基本表的名字索引可以建立在该表的一列或多列上,各列名之间用逗号分隔用次序指定索引值的排列次序,升序:ASC,降序:DESC。确实值:ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引语句格式:CREATE[UNIQUE][CLUSTER]INDEX索引名ON表名(列名[次序][,列名[次序]]…);49例6建立索引为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表学号升序和课程号降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);50建立索引唯一值索引对于已含重复值的属性列不能建立UNIQUE索引对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束51建立索引聚簇索引建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致例如:CREATECLUSTERINDEXStudentONStudent(Sname);在Student表的Sname(姓名)列上建立一个聚索引,而且Student表中的记录将按照Sname的升序存放52建立索引在一个基本表上最多只能建立一个聚簇索引聚簇索引的用途:对于某些类型的查询,可以提高查询效率聚簇索引的使用范围很少对基表进行增删的操作很少对其中的变长列进行修改操作优缺点532)删除索引DROPINDEX索引名;删除索引是,系统会从数据字典中删去有关该索引的描述。例:删除Student表的Stusname索引。DROPINDEXStusname;54视图视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不存放视图对应的数据基表中的数据发生变化,从视图中查询出的数据也随之改变55(1)建立视图

注意:CREATEVIEW只是定义了一个视图,该语句执行后有关对视图的定义被存储在数据字典中,只有对视图进行操作时才根据数据字典中对该视图的定义描述,从基本表中形成实际的数据提供给用户使用。语句格式:CREATEVIEW视图名[(列名1[,列名2,...])]AS<SELECT语句>[WITHCHECKOPTION];56建立视图组成视图的属性列名:全部省略或全部指定子查询不允许含有ORDERBY子句和DISTINCT短语执行CREATEVIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出57[例1]建立电气院学生的视图。

CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=‘EE';58[例2]建立电气院学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept=‘EE'WITHCHECKOPTION;59(2)撤消视图

注意:可以删除一个视图,即删除了数据字典中对该视图的定义,所以在该视图上所建立(定义)的视图也一同被删除。视图是一个虚表,所以在该视图上不能创建索引。语句格式:DROPVIEW表名60数据操纵语言DML数据的检索(查询)语句SELECT查询语言是用来对已建立好的基本表和视图中的数据按照某种指定的方式(条件表达式、次序等)进行检索查询。语句格式:SELECT[ALL/DISTINCT]*/列表FROM

基本表(或视图)[WHERE

条件表达式][GROUPBY列名[HAVING条件表达式]][ORDERBY

列名[ASC/DESC]]61语句格式SELECT子句:指定要显示的属性列FROM子句:指定查询对象(基本表或视图)WHERE子句:指定查询条件GROUPBY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。HAVING短语:筛选出只有满足指定条件的组ORDERBY子句:对查询结果表按指定列值的升序或降序排序语句格式:SELECT[ALL/DISTINCT]*/列表FROM

基本表(或视图)[WHERE

条件表达式][GROUPBY列名[HAVING条件表达式]][ORDERBY

列名[ASC/DESC]]62基本查询学生基本表STUDENTS:学生成绩表STUDGRADE最基本的查询就是从指定的一个基本表中找出符合条件的记录。631)单表查询查询仅涉及一个表,是一种最简单的查询操作一、选择表中的若干列二、选择表中的若干元组三、对查询结果排序四、使用集函数五、对查询结果分组64查询指定列[例1]查询全体学生的学号与姓名。SELECTSno,SnameFROMStudent;

[例2]查询全体学生的姓名、学号、所在系。SELECTSname,Sno,SdeptFROMStudent;65查询全部列例3:查找电气学院的男生。

这里:*代表全部的列。等价于下面的语句格式:SELECTSno,Sname,Ssex,Sage,SdeptFROMstudentsWHERESsex=‘男’ANDSdept=‘电气学院'SELECT*FROMstudentsWHERESsex=‘男‘ANDSdept=’电气学院'

66查询

经过计算的值SELECT子句的

条件表达式算术表达式字符串常量函数列别名67例4:查询学生成绩表中成绩在80至90之间的学生名单,并按分数降序排序输出结果。

该语句等价于:SELECTno,name,gradeFROMstudgradeWHEREgrade>80ANDgrade<90ORDERBYgradeDESCSELECTno,name,gradeFROMstudgradeWHEREgradeBETEEN80AND90ORDERBYgradeDESC68带通配符的查询通配符%(百分号)代表任意长度(长度可以为0)的字符串例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab等都满足该匹配串_(下横线)代表任意单个字符例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串69[例5]查询所有姓刘学生的姓名、学号和性别。SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE‘刘%’;70使用集函数5类主要集函数计数COUNT([DISTINCT|ALL]*)COUNT([DISTINCT|ALL]<列名>)计算总和SUM([DISTINCT|ALL]<列名>) 计算平均值AVG([DISTINCT|ALL]<列名>)71求最大值MAX([DISTINCT|ALL]<列名>) 求最小值MIN([DISTINCT|ALL]<列名>) DISTINCT短语:在计算时要取消指定列中的重复值ALL短语:不取消重复值ALL为缺省值72[例6]查询学生总人数。

SELECTCOUNT(*)FROMStudent;

[例7]查询选修了课程的学生人数。

SELECTCOUNT(DISTINCTSno)FROMSC;注:用DISTINCT以避免重复计算学生人数73

[例8]计算1号课程的学生平均成绩。SELECTAVG(Grade)FROMSCWHERECno=‘1’;

[例9]查询选修1号课程的学生最高分数。SELECTMAX(Grade)FROMSCWHERCno='1';74对查询结果排序使用ORDERBY子句可以按一个或多个属性列排序升序:ASC;降序:DESC;缺省值为升序当排序列含空值时ASC:排序列为空值的元组最后显示DESC:排序列为空值的元组最先显示75[例10]查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;76[例11]查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。

SELECT*FROMStudentORDERBYSdept,SageDESC;77对查询结果分组使用GROUPBY子句分组 细化集函数的作用对象未对查询结果分组,集函数将作用于整个查询结果对查询结果分组后,集函数将分别作用于每个组78对查询结果分组[例12]求各个课程号及相应的选课人数。SELECTCno,COUNT(Sno)FROMSCGROUPBYCno;79对查询结果分组GROUPBY子句的作用对象是查询的中间结果表分组方法:按指定的一列或多列值分组,值相等的为一组使用GROUPBY子句后,SELECT子句的列名列表中只能出现分组属性和集函数80使用HAVING短语筛选最终输出结果[例13]查询选修了3门以上课程的学生学号。

SELECTSnoFROMSCGROUPBYSnoHAVINGCOUNT(*)>3;81[例14]查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数

SELECTSno,COUNT(*)FROMSCWHEREGrade>=90GROUPBYSnoHAVINGCOUNT(*)>=3;82使用HAVING短语筛选最终输出结果只有满足HAVING短语指定条件的组才输出HAVING短语与WHERE子句的区别:作用对象不同WHERE子句作用于基表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。832)多表查询如果查询涉及到两个以上的基本表,就是多表查询(也称之为连接查询)。有连接查询、嵌套查询、集合查询等方式。需要将多个表连接后进行查询,标准的SQL语言中没有专门的连接语句,是直接通过SELECT语句实现的。在WHERE后面则直接给出连接的条件。84连接查询同时涉及多个表的查询称为连接查询用来连接两个表的条件称为连接条件或连接谓词一般格式:[表名1.]列名1比较运算符

[表名2.]列名2

比较运算符:=、>、<、>=、<=、!=[表名1.]列名1BETWEEN[表名2.]列名2AND[表名2.]列名385[例14]查询每个学生及其选修课程的情况。SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.Sno;86假设Student表、SC表分别有下列数据87例15:查询所有数据库成绩为80分的信息学院的学生。

SELECTstude

温馨提示

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

评论

0/150

提交评论