数据库系统概率论总结.docx
- 文档编号:15940343
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:44
- 大小:31.41KB
数据库系统概率论总结.docx
《数据库系统概率论总结.docx》由会员分享,可在线阅读,更多相关《数据库系统概率论总结.docx(44页珍藏版)》请在冰点文库上搜索。
数据库系统概率论总结
第1章绪论
1.1数据库系统概述
1、数据:
数据是数据库的存储对象。
对数据做如下定义:
描述事物的符号记录称为数据。
描述事物的符号可以是数字,也可以是文字、图形、图像、声音、语言等,数据有多种表现形式,它们都可以经过数字化后存储入计算机。
数据的解释是对数据含义的说明,数据的含义称为数据的语义,数据与其语义是不可分的。
存储就是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问,总的来讲可以包含两方面的含义:
一方面它是数据临时或长期驻留的物理媒介;另一方面,它是保证数据完整完全存放的方式或行为。
存储就是把这两个方面结合起来,向客户提供一套数据存放解决方案。
三种常见的存储方式DAS、NAS、SAN:
常见存储介质类型:
硬盘、磁带、光盘、移动存储设备。
2、数据库(Database简称DB):
数据库,顾名思义,是存放数据的仓库。
数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
概括的讲:
数据库数据具有永久存储、有组织和可共享三个基本特点。
3、数据库管理系统(DatabaseManagementSystem.DBMS):
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。
4、数据库系统(DatabaseSystem,DBS):
数据库系统化是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
5、数据库系统的特点:
(1)数据结构化
(2)数据的共享高、冗余度低,易扩充
(3)数据独立性高
1.2数据模型
一、两类数据模型:
概念模型、逻辑模型和物理模型。
概念模型:
也称为信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。
逻辑模型:
主要包括层次模型、网状模型、关系模型、面向对象模型和对象关系模型等。
它是按计算机系统的观点对数据建模,主要用于DBMS的实现。
物理模型:
是对数据库最低层的抽象,它描述在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式或存取方法,是面向计算机系统的。
物理模型的具体实现是DBMS的任务。
数据模型的组成要素:
数据结构、数据操作、完整性约束条件。
二、基本概念:
(1)实体:
客观存在并可相互区别的事物称为实体。
实体可以是具体的人、事、物,也可以是抽象的概念或联系。
(2)属性:
实体具有的某一特性成为属性。
一个实体可以由若干个属性来刻画。
(3)码:
唯一标识实体的属性称为码。
(4)域:
域是一组具有相同数据类型的值得集合。
属性的取值范围来自某个域。
(5)实体型:
具有相同属性的实体必然具有共同的特征和性质。
用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
(6)实体集:
同一类型实体的集合称为实体集。
(7)联系:
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
3、两个实体之间的联系:
一对一联系、一对多联系、多对多联系。
4、关系模型:
从用户观点看,关系模型由一组关系组成,每个关系的数据结构是一张规范化的二维表。
关系:
一个关系对应通常说的一张表。
元组:
表中的一行即为一个元组。
属性:
表中的一列即为一个属性,给每一个属性起一个名称即为属性名。
码:
也称为码键。
表中的某个属性组,它可以唯一确定一个元组。
域:
属性的取值范围。
分量:
元组中德一个属性值。
关系模型:
对关系的描述。
关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是,关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中还有表。
5、关系数据模型的操纵与完整性约束
关系数据模型的操作主要包括查询、插入、删除和更新数据。
这些操作必须满足关系的完整性约束条件。
关系的完整性约束条件包括三大类:
实体完整性、参照完整性和用户定义完整性。
1.3数据库系统结构
数据库系统通常采用三级模式结构:
这是数据库管理系统内部的系统结构。
从数据库最终用户角度看,数据库系统的结构为单用户结构、主从式结构、分布式结构、客户/服务器、浏览器/应用服务器/数据库服务器多层次结构等。
这是数据库系统外部的体系结构。
在数据模型中有“型(Type)”和“值(Value)”的概念。
型是指对某一数据类型的结构和属性的说明,值是型的一个具体赋值。
模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。
模式的一个具体值称为模式的一个实例。
模式是相对稳定的,而实例是相对变动的,因为数据库中德数据是在不断更新的。
模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
数据库系统的三级模式结构:
外模式、模式、内模式三级构成。
1、模式:
模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
它是数据库系统模式结构的中间层。
2、外模式:
外模式也称为子模式或用户模式,它是数据库用户(包括应用程序员或最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述。
是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
外模式通常是模式的子集。
一个数据库可以有多个外模式。
外模式是保证数据库安全性的一个有力措施。
每个用户只能看见和访问所对应的外模式中德数据,数据库中德其余数据是不可见的。
3、内模式:
内模式也称为存储模式,一个数据库只有一个模式。
他是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。
四、数据库管理系统在这三级模式之间提供了两层映像:
外模式/模式映像
模式/内模式映像
第2章关系数据库
2.1关系数据结构及形式化定义
1、域:
域是一组具有相同数据类型的值得集合。
2、笛卡儿积:
笛卡儿积是域上的一种集合运算。
3、若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
若一个关系有多个候选码,则选定其中一个为主码。
候选码的诸属性称为主属性。
不包含在任何候选码中的属性称为非主属性或非码属性。
在最简单的情况下,候选码只包含一个属性。
在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码。
4、关系的描述称为关系模式,它可以形式化地表示为R(U,D,DOM,F)其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。
5、关系数据库:
关系数据库的型也称为关系数据库模式,是对关系数据库的描述。
关系数据库模式包括:
若干域的定义;
在这些域上定义若干关系模式;
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
2.2关系操作
关系模型中常用的关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。
关系的查询表达能力很强,是关系操作中最主要的部分。
查询操作又可以分为:
选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡儿积等。
j其中选择、投影、并、差、笛卡儿积是5种基本操作。
2.3关系的完整性
关系的三类完整性约束:
实体完整性、参照完整性、用户定义完整性。
2.4关系代数
第3章关系数据库标准语言SQL
3.3数据定义
1、模式的定义与删除
[例1]定义一个学生-课程模式S-T。
CREATESCHEMA“S-T”AUTHORIZATIONWANG;
删除模式
DROPSCHEMA<模式名>
2、基本表的定义、删除与修改
1)定义基本表:
[例5]建立一个“学生”表Student。
CREATETABLEStudent(
SnoCHAR(9)PRIMARYKEY,/*列级完成性约束条件,Sno是主码*/
SnameCHAR(20)UNIQUE,
SsexCHAR
(2),
SageSMALLINT,
SdeptCHAR(20)
);
[例6]建立一个“课程”表Course。
CREATETABLECourse(
CnoCHAR(4)PRIMARYKRY,/*列级完整性约束条件,Cno是主码*/
CnameCHAR(40),
CpnoCHAR(4),
CcreditSMALLINT,
FOREIGNCpnoREFERENCESCourse(Cno)
);
[例7]建立学生选课表SC。
CREATETABLESC(
SnoCHAR(9),
CnoCHAR(4),
GradeSMALLINT,
PRIMARYKEY(Sno,Cno),/*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGNKEY(Sno)REFERENCESStudent(Sno),
FOREIGNKEY(Cno)REFERENCESStudent(Cno)
);
2)修改基本表
[例8]向Student表增加“入学时间”列,其数据类型为日期型。
ALTERTABLEStudentADDS_entranceDATE;
[例9]将年龄的数据类型由字符型改为整数型。
ALTERTABLEStudentALTERCOLUMNSageINT;
[例10]增加课程名称必须取唯一值得约束条件。
ALTERTABLECourseADDUNIQUE(Cname);
3)删除基本表
DROPTABLE<表名>[RESTRICT|CASCADE];
4)索引的建立与删除
1、建立索引:
CREATE[UNIQUE][CLUSTER]INDEX<索引名>
ON<表名>(<列名>[<次序>][,<列名>[<次序>]]...);
UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。
CLUSTER表示要建立的索引时聚簇索引。
所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。
[例13]CREATECLUSTERINDEXStusnameONStudent(Sname);
[例14]为学生-课程数据库中的Student,Course,SC3个表建立索引。
其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。
CREATEUNIQUEINDEXStusnoONStudent(Sno);
CREATEUNIQUEINDEXCoucnoONCourse(Cno);
CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);
5)删除索引
DROPINDEX<索引名>;
[例15]删除Student表的Stusname索引。
DROPINDEXStusname;
3.4数据查询
1、单表查询
[例1]查询全体学生的学号与姓名。
SELECTSno,SnameFROMStudent;
[例2]查询全体学生的姓名、学号、所在系。
SELECTSname,Sno,SdeptFROMStudent;
[例3]查询全体学生的详细记录。
SELECT*FROMStudent;
[例4]查询全体学生的姓名及其出生年份。
SELECTSname,2014-SageFROMStudent;
[例5]查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名。
SELECTSname,’YearofBirth:
’2014-Sage,LOWER(Sdept)FROMStudent;
2、选择表中的若干元组
1)取消取值重复的行
[例6]查询选修了课程的学生学号。
SELECTDISTINCTSnoFROMSC;
2)查询满足条件的元组
1 比较大小
[例7]查询计算机科学系全体学生的名单。
SELECTSnameFROMStudentWHERESdept=’CS’;
[例8]查询所有年龄在20岁以下的学生姓名及其年龄。
SELECTSname,SageFROMStudentWHERESage<20;
[例9]查询考试成绩有不及格的学生的学号。
SELECTDISTINCTSnoFROMSCWHEREGrade<60;
2 确定范围
[例10]查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;
[例11]查询年龄不再20~23岁之间的学生的姓名、系别和年龄。
SELECTSname,Sdept,Sage
FROMStudent
WHERESageNOTBETWEEN20AND23;
3 确定集合
[例12]查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别。
SELECTSname,Ssex
FROMStudent
WHERESdeptIN(‘CS’,’MA’,’IS’);
[例13]查询既不是计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别。
SELECTSname,Ssex
FROMStudent
WHERESdeptNOTIN(‘CS’,’MA’,’IS’);
4 字符匹配
[例14]查询学号为200215121的学生的详细情况。
SELECT*
FROMStudent
WHERESnoLIKE‘200215121’;/*等价于WHERESno=200215121;*/
[例15]查询所有姓刘的学生的姓名、学号和性别。
SELECTSname,Sno,Ssex
FROMStudent
WHERESnameLIKE‘刘%’;
[例16]查询姓“欧阳”且全名为3个汉字的学生的姓名。
SELECTSname
FROMStudent
WHERESnameLIKE‘欧阳__’;
[例17]查询名字中第2个字为“阳”字的学生的姓名和学号。
SELECTSname,Sno
FROMStudent
WHERESnameLIKE‘__阳%’;
[例18]查询所有不姓刘的学生姓名。
SELECTSname
FROMStudent
WHERESnameNOTLIKE‘刘%’;
[例19]查询DB_Design课程的课程号和学分。
SELECTCno,Ccredit
FROMCourse
WHERECnameLIKE‘DB\_Design‘ESCAPE’\’;
[例20]查询“DB_”开头,且倒数第三个字符为i的课程的详细情况。
SELECT*
FROMCourse
WHERECnameLIKE‘DB\_%i__’ESCAPE’\’;
5 涉及空值的查询
[例21]某些学生选修课程后没有参加考试,所以有选修科记录,但没有考试成绩。
查缺少成绩的学生的学号和相应的课程号。
SELECTSno,Cno
FROMSC
WHEREGradeISNULL;
[例22]查所有有成绩的学生学号和课程号。
SELECTSno,Cno
FROMSC
WHEREGradeISNOTNULL;
6 多重条件查询
[例23]查询计算机科学系年龄在20岁以下的学生姓名。
SELECTSname
FROMStudent
WHERESdept=’CS’ANDSage<20;
3)ORDERBY子句
用户可以用ORDERBY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为升序。
[例24]查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
SELECTSno,Grade
FROMSC
WHERECno=3
ORDERBYGradeDESC;
[例25]查询全体学生情况,查询结果按所在系的系号升序排列,同一系的学生按年龄降序排列。
SELECT*
FROMStudent
ORDERBYSdeptASC,SageDESC;
4)聚集函数
[例26]查询学生总人数
SELECTCOUNT(*)
FROMStudent;
[例27]查询选修了课程的学生人数。
SELECTCOUNT(DISTINCTSno)
FROMSC;
[例28]计算1号课程的学生平均成绩。
SELECTAVG(Grade)
FROMSC
WHERECno=’1’;
[例29]查询选修1号课程的学生最高分数。
SELECTMAX(Grade)
FROMSC
WHERECno=’1’;
[例30]查询学生200215012选修课程的总学分数。
SELECTSUM(Ccredit)
FROMSC,Course
WHERESno=’200215012’ANDSC.Cno=Course.Cno;
5)GROUPBY子句
GROUPBY子句将查询结果按某一列或多列的值分组,值相等的为一组。
[例31]求各个课程号及相应的选课人数。
SELECTCno,COUNT(Sno)
FROMSC,Course
GROUPBYCno;
[例32]查询选修了3门以上课程的学生学号。
SELECTSno
FROMSC
GROUPBYSno
HAVINGCOUNT(*)>3;
3、连接查询
1)等值与非等值连接查询
[例33]查询每个学生及其选修课程的情况。
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudent,SC
WHEREStudent.Sno=SC.Sno;
2)自身连接
[例35]查询每一门课的间接先修课(即先修课的先修课)。
SELECTFIRST.Cno,SECOND.Cpno
FROMCourseFIRST,CourseSECOND
WHEREFIRST.Cpno=SECOND.Cno;
3)外连接
[例36]查询每个学生及其选修课程的情况。
SELECTStudent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROMStudentLEFTOUTJOINSCON(Student.Sno=SC.Sno);
4)复合条件连接
[例37]查询选修2号课程且成绩在90分以上的所有学生。
SELECTStudent.Sno,Sname
FROMStudent,SC
WHEREStudent.Sno=SC.Sno
ANDSC.Cno=’2’
ANDSC.Grade>90;
[例38]查询每个学生的学号、姓名、选修的课程名及成绩。
SELECTStudent.Sno,Sname,Cname,Grade
FROMStudent,SC,Course
WHEREStudent.Sno=SC.Sno
ANDSC.Cno=Course.Cno;
4、嵌套查询
例如:
SELECTSname
FROMStudent
WHERESnoIN(SELECTSno
FROMSC
WHERECno=’2’);
1)带IN谓词的子查询
[例39]查询与“刘晨”在同一个系学习的学生。
SELECTSno,Sname,Sdept
FROMStudent
WHERESdeptIN(SELECTSdept
FROMStudent
WHERESname=”刘晨”);
[例40]查询选修了课程名为“信息系统”的学生学号和姓名。
SELECTSno,Sname
FROMStudent
WHERESnoIN(SELECTSno
FROMSC
WHERECnoIN(SELECTCno
FROMCourse
WHERECname=’信息系统’
)
);
另解:
SELECTStudent.Sno,Sname
FROMStudent,SC,Course
WHEREStudent.Sno=SC.Sno
ANDSC.Cno=Course.Cno
ANDCourse.Cname=’信息系统’;
2)带有比较运算符的子查询
[例39]查询与“刘晨”在同一个系学习的学生。
(用“=”代替IN)
SELECTSno,Sname,Sdept
FROMStudent
WHERESdept=(
SELECTSdept
FROMStudent
WHERESname=’刘晨’);
[例41]找出每个学生超过他选修课程平均成绩的课程号。
SELECTSno,Cno
FROMSCx
WHEREGrade>=(SELECTAVG(Grade)
FROMSCy
WHEREy.Sno=x.Sno);
3)带有ANY(SOME)或ALL谓词的子查询
[例42]查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄。
SELECTSname,Sage
FROMStudent
WHERESage FROMStudent WHERESdept=‘CS’) ANDSdept<>‘CS’; 用聚集函数实现: SELECTSname,Sage FROMStudent WHERESage<(SELECTMAX(Sage) FROMStudent WHERESdept=‘CS’) ANDSdept<>‘CS’; [例43]查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄。 SELECTSname,Sage FROMStudent WHERESage FROMStudent WHERESdept=‘CS’) ANDSdept<>‘CS’; 用聚集函数实现: SELECTSname,Sage FROMStudent WHERESage<(SELECTMIN(Sage) FROMStudent WHERESdept=‘CS’) ANDSdept<>‘CS’; 4)带有EXISTS谓词的子查询 [例44]查询所有选修1号课程的学生姓名。 SELECTSname FROMStudent
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概率论 总结