《数据库技术与应用》复习资料.docx
《《数据库技术与应用》复习资料.docx》由会员分享,可在线阅读,更多相关《《数据库技术与应用》复习资料.docx(16页珍藏版)》请在冰豆网上搜索。
《数据库技术与应用》复习资料
《数据库技术与应用》章节复习资料
一、绪论
(一)填空与名词解释
1.数据(Data)
数据是数据空中存储的基本对象,是描述事物的符号记录。
2.数据库(Database)
数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。
3.数据库管理系统(DBMS)的主要功能(databasemanagementsystem)
数据定义功能,数据组织、存储和管理,数据操纵功能,数据库的事务管理和维护功能,其他功能
4.数据库系统(DBS)
数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
5.两类数据模型
概念模型也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。
逻辑模型和物理模型
逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。
6.数据模型的组成要素
数据结构、数据操作、完整性约束
数据结构是描述数据库的组成对象以及组成对象之间的联系,是对系统静态特征的描述;
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作集合及有关操作规则,由查询,更新,是对系统动态特征的描述;
完整性约束条件是一组完整性规则的集合。
7.最常用的数据模型(五个)
层级模型、网状模型、关系模型、面向对象模型、对象关系模型
8.数据库系统的三级模式
外模式、模式、内模式
(二)简答
1.数据库的二级映像功能与数据独立性。
P.33
数据库在三级模式之间提供了两层映像,即外模式/模式映像,模式/内模式映像
正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
一、外模式/模式映象(多对一)
模式:
描述的是数据的全局逻辑结构
外模式:
描述的是数据的局部逻辑结构
同一个模式可以有任意多个外模式
每一个外模式,数据库系统都有一个外模式/模式映象,定义外模式与模式之间的对应关系
映象定义通常包含在各自外模式的描述中
保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变。
应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
二、模式/内模式映象
模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
例如,说明逻辑记录和字段在内部是如何表示的
数据库中模式/内模式映象是唯一的
该映象定义通常包含在模式描述中
保证数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。
应用程序不受影响。
保证了数据与程序的物理独立性,简称数据的物理独立性。
2.数据库系统的特点。
P.8
数据结构化;数据的共享性高,冗余度低,易扩充;数据独立性高;数据由DBMS统一管理和控制;
3.数据库系统的组成。
P.34
数据库;数据库管理系统(及其开发工具);应用系统;数据库管理员
硬件平台及数据库;软件;人员
二、关系数据库
(一)填空与名词解释
1.关系模型的3个组成部分
域、笛卡尔积、关系
2.关系、元组、属性
关系:
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
元组:
笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)
属性:
关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性
3.候选码、主码、外码
候选码:
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
主码:
若一个关系有多个候选码,则选定其中一个为主码。
外码:
设F是基本关系R的一个或一组属性,但不是关系R的码。
Ks是基本关系S的主码。
如果F与Ks相对应,则称F是R的外码。
4.关系模式、关系、关系数据库
关系:
关系是关系模式在某一时刻的状态或类容。
关系数据库:
在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
(二)简答
1.试述关系模型的完整性规则。
P.49
关系模型中有三类完整性约束:
实体完整性、参照完整性和用户定义的完整性。
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
实体完整性规则:
若属性(指一个或一组属性)A是基本关系R的主属性,则A不能去空值。
参照完整性规则:
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。
用户定义的完整性就是针对某一具体关系数据库的约束条件。
它反映某一具体应用所设计的数据必须满足的语义要求。
2.等值连接、自然连接、外连接、左外连接、右外连接及其之间关系。
P.58
自然连接是一种特殊的等值连接。
它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
外连接:
如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。
左外连接:
如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN)
右外连接:
如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。
如果把舍弃的元组也在结果关系中,而在其他属性上填空值(null),那么这种连接就叫做外连接。
如果只把左边关系R中要舍弃的元组保留就叫做左外连接,如果只把右边关系S中要舍弃的元组保留就叫做右外连接。
三、关系数据库标准语言SQL
(一)填空与名词解释
1.行列子集视图
若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,我们称这类视图为行列子集视图。
2.SQL(StructuredQueryLanguage)
即结构化查询语言,是关系数据库的标准语言,SQL是一个通用的、功能极强的关系数据库语言。
(二)简答
1.SQL的特点,简要说明。
⑴综合统一。
SQL集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。
⑵高度非过程化。
存取路径的选择以及SQL的操作过程由系统自动完成。
不但大大减轻了用户负担,而且有利于提高数据独立性。
⑶面向集合的操作方式。
不尽操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
⑷以同一种语言结构提供多种使用方式。
即使独立的语言,优势嵌入式语言。
⑸语言简介,易学易用。
SQL功能极强,但由于设计巧妙,语言十分简介,完成核心功能只用了9个动词。
2.什么是基本表?
什么是视图?
两者之间的区别与联系是什么?
基本表是本身独立存在的表,在SQL中一个关系就对应一个基本表;视图是从一个或几个基本表(或视图)导出的表。
它与基本表不同,是一个虚表。
数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。
视图一经定义,就可以和基本表一样被查询、被删除。
也可以在视图之上再定义新的视图,但对视图的更新(增删改)操作则有一定的限制。
联系:
基本表和视图一样,都是关系。
视图在概念上与基本表相同,用户可以在视图上再定义视图。
3.视图的优点有哪些?
(视图的作用)
1.视图能够简化用户的操作。
2.视图使用户能以多种角度看待同一数据。
3.视图对重构数据库提供了一定程度的逻辑独立性。
4.视图能够对机密数据提供安全保护。
5.适当的利用视图可以更清晰的表达查询。
(三)综合应用题
实验三、四全部习题,弄懂每一道题。
实验三
1.查询“实验2”中创建的各表所有记录
select*
FROMSTUDENT,SC,COURSE;
2.查询学生总人数
selectcount(*)
fromstudent
3.检索“LIU”老师所授课程的课程号和课程
selectcname,cno
fromcourse
wherecteacher='LIU';
4.检索年龄大于23岁的男学生的学好和姓名
selectsno,sname
fromstudent
wheresage>23andssex='男'
5.检索“信息管理”专业的所有女学生的学好和姓名
selectsno,sname
fromstudent
wheressex='女'andsdept='信息管理'
6.查询年龄最小的学生学好、姓名和年龄
selecttop1sname,sno,sage
fromstudent
orderbysageasc
7.检索所有学生中年龄最大的前4人,输出其学号、姓名、年龄
selecttop4sno,sname,sage
fromstudent
orderbysagedesc
8.检索至少选修了两门课程的学生学号
selectsno
fromSC
groupbysno
havingcount(*)>2
9.在course表中统计开设课程的教师人数
selectcount(distinctcteacher)
fromcourse
10.查询各个课程号相应的选课人数
selectcount(distinctsno)
fromSC
11.查询各个课程号相应的选课人数
selectcno,count(sno)
fromsc
groupbycno
12.计算C001号课程的学生平均成绩
selectavg(grade)
fromsc
wherecno='1'
13.求每个学生选秀课程(已有成绩)的门数和平均成绩
selectsno,count(cno),avg(grade)
fromsc
groupbysno
14.统计每个学生选秀课程的门数(超过5门的学生才统计)。
要求输出学生学号和选修门数,查询结果按门数降序排列,若门数相同,按学号升序排列。
selectsno,count(cno)
fromsc
groupbysno
havingcount(*)>5
orderbysnoasc
15.检索学号比WANG同学大,而年龄比他小的学生姓名。
selectsname
fromstudent
wheresno>(selectsno
fromstudent
wheresnamelike'王%')
andsage<(selectsage
fromstudent
wheresnamelike'王%')
16.在表SC表中检索成绩为空值的学生学号和课程号。
selectsno,cno
fromsc
wheregrade=null
17.检索姓名以“刘”开头的所有学生的姓名和课程号。
selectsname,sage
fromstudent
wheresnamelike'刘%'
18.求年龄大于女同学平均年龄的男学生和年龄。
selectsname,sage
fromstudent
wheresage>(selectavg(sage)
fromstudent
wheressex='女')andssex='男'
19.求年龄大于所有女同学年龄的男同学的姓名和年龄。
selectsname,sage
fromStudent
wheressex='男'andsage>all(selectsage
fromStudent
wheressex='女')
20.查询所有学生中平均成绩最差的学生的学号;(按已有成绩,没有成绩的暂不统计)
selecttop1sno
fromsc
groupbysno
orderbyavg(grade)asc
21.查询学生平均成绩最好的课程的课程号和平均成绩;(按已有成绩,没有成绩的暂不统计)
selecttop1cno,avg(grade)
fromsc
groupbycno
orderbyavg(grade)desc
22.查询与“刘晨”在同一个系学习的学生。
selects1.sno,s1.sname,s1.sdept
fromstudents1,students2
wheres1.sdept=s2.sdeptand
s2.sname='刘晨'
实验四
1.求选修C004课程的女学生的平均成绩
selectavg(grade)
fromsc
wherecno='4'andsnoin
(selectsno
fromstudent
wheressex='Ů')
2.求选修C004课程的女学生的平均年龄
selectavg(sage)
fromstudent
wheressex='Ů'andsnoin
(selectsno
fromsc
wherecno='4')
3.检索学号为S0003学生所学课程的课程名与任课教师姓名
selectcno,cteacher
fromcourse
wherecnoin
(selectcno
fromsc
wheresno='200215123')
4.检索至少选修LIU老师所授课程的女学生姓名
selectsname
fromstudent
wheresnoin
(selectsc.sno
fromsc,course
whereo=oandcourse.cteacher='liu')and
ssex='Ů'
5.检索WANG同学不学的课程的课程号
selectcno
fromsc
wheresnonotin
(selectsno
fromstudent
wheresnamelike'王_')
6.检索全部学生都选修的课程号和课程名
方法一:
selectcno,cname
fromcourse
wherenotexists
(select*
fromstudent
wherenotexists
(select*
fromsc
wheresc.sno=student.snoando=o)
)
方法二
selectcno,cname
fromcourse
wherenotexists
(select*
fromstudent
wheresnonotin
(selectsno
fromsc
whereo=o))
方法三
SELECTCno,Cname
FROMCourse
WHERECnoIN
(SELECTCno
FROMSC
GROUPBYCno
HAVINGCOUNT(*)=
(SELECTCOUNT(*)
FROMStudent)
)
7.检索选修课程包含LIU老师所授课程的学生学号
selectsno
fromsc
wherecnoin
(selectcno
fromcourse
wherecteacher='liu')
8.查询属于“信息管理”系学生且性别为女性的学生号及姓名
selectsno,sname
fromstudent
wheressex='女'andsdept='信息管理'
9.查询“信息管理”系学生或者是女学生的学生号及姓名
selectsno,sname
fromstudent
wheresdept='信息管理'orssex='女'
10.查询“电子商务”系学生平均成绩大于75分的学生学号
selectsno
fromstudent
wheresdept='电子商务'andsnoin
(selectsno
fromsc
groupbysno
havingavg(grade)>75)
11.查询选修了课程名为“管理信息系统”的学生学号及姓名
selectsno,sname
fromstudent
wheresnoin
(selectsno
fromsc
wherecnoin
(selectcno
fromcourse
wherecname='信息系统'))
12.找出选修课程中成绩最高的同学姓名及成绩
selecttop1student.sname,sc.grade
fromstudent,sc
wherestudent.sno=sc.sno
orderbysc.gradedesc
13.查询“电子商务”系选修了两门以上课程的学生学号
selectsno
fromstudent
wheresdept='电子商务'andsnoin
(selectsno
fromsc
groupbysno
havingcount(*)>2)
14.查询其他系中比“市场营销”系某一学生年龄小的学生名单
selectsname
fromstudent
wheresagefromstudent
wheresdept='市场营销')
andsdept<>'市场营销'
15.查询其他系中比“市场营销”系所有学生年龄小的学生名单
selectsname
fromstudent
wheresagefromstudent
wheresdept='市场营销')
andsdept<>'市场营销'
16.查询所有选修了C002好课程的学生姓名
selectsname
fromstudent
wheresnoin(selectsno
fromsc
wherecno='2')
更新操作
17.向关系COURSE中插入一个课程元组(’C010’,’JAVA程序设计’,’BAO’)
insert
intocourse(cno,cname,ccredit,cteacher)
values('10','java程序设计','2','BAO')
18.将SC表中删除尚无成绩单额选课元组
delete
fromsc
wheregrade=null
19.把选修LIU老师课程的女学生选课元组全部删除
delete
fromsc
wheresnoin
(selectsno
fromstudent
wheressex='Ů')
andcnoin(selectcno
fromcourse
wherecteacher='LIU')
20.把“数据库原理与应用”课程不及格的成绩全改为60分
updatesc
setgrade='60'
wheregrade<'60'
21.把低于总平均成绩的女同学成绩提高5%
UPDATESC
SETGRADE=GRADE*1.05
WHEREsnoIN(SELECTSno
FROMStudent
WHEREsSEX='Ů')
andGRADE<(SELECTAVG(GRADE)
FROMSC)
22.在表SC中,当某个选修成绩低于所有课程的平均成绩时,提高5%(要针对课程进行分组,与21题不一样)
updatesc
setgrade=grade*1.05
wheregrade<(selectavg(grade)
fromsc)
23.在表SC中修改C004课程的成绩,当成绩小于等于70分时提高5%,当成绩大于70分时提高4%
updateSC
setgrade=
case
whengrade<=70thengrade+grade*0.05
whengrade>70thengrade+grade*0.04
end
wherecno='4'
24.检索存在所授课程平均成绩大于80分的教师姓名,并把检索到的值送往另一个已存在的表faculty(tname),思考,假设这个表不实现存在,怎么办呢?
insert
intofaculty(tname)
selectcteacher
fromcourse
wherecnoin
(selectcno
fromsc
groupbycno
havingavg(grade)>80)
四、关系数据理论
1.简述1NF2NF3NFBCNF4NF的规范化过程。
P182
1NF
↓消除非主属性对码的部分函数依赖
消除决定属性2NF
集非码的非平↓消除非主属性对码的传递函数依赖
凡函数依赖3NF
↓消除主属性对码的部分和传递函数依赖
BCNF
↓消除非平凡且非函数依赖的多值依赖
4NF