大学数据库考试复习试题带答案Word格式.docx
《大学数据库考试复习试题带答案Word格式.docx》由会员分享,可在线阅读,更多相关《大学数据库考试复习试题带答案Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
〔32〕在数据库的平安性控制中,为了保证用户只能存取他有权存取的数据,在授权的定义中,数据对象的〔围越小〕,授权子系统就越灵活。
〔33〕数据库平安性遭到破坏的情况属于〔非法用户读取数据库中的数据〕。
〔34〕数据库的〔完整性〕是指数据的正确性和相容性。
〔35〕数据完整性保护中的约束条件是指〔值的约束和构造的约束〕。
〔36〕实体完整性和参照完整性属于〔静态关系约束〕。
〔37〕数据类型、取值围、空值约束属于〔静态列级约束〕。
〔38〕“断言〞是数据库系统采用的〔完整性约束〕。
〔39〕脏数据的读出是〔并发性〕遭到破坏的情况。
〔40〕SQL中ROLLBACK语句的主要作用是〔事务卷回〕。
〔41〕SQL中提供的〔GRANT〕语句用于实现数据存取的平安控制。
〔42〕SQL中MIT语句的主要作用是〔提交事务〕。
〔43〕解决并发操作带来的数据不一致性问题时普遍采用〔封锁〕。
〔44〕不允许其它事务对这个锁定目标再加任何类型的锁是〔排他锁〕。
填空题:
1.三级模式之间的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性、物理独立性。
2.关系的完整性约束条件包括三大类:
实体完整性、参照完整性、用户定义的完整性。
3.关系代数运算中,专门的关系运算有投影、选择、连接、除。
4.数据库是长期存储在计算机、有组织的、可共享的数据集合。
5.数据模型分成两个不同的层次。
概念模型从用户的观点对现实世界的信息建模,主要用于数据库设计。
数据模型从计算机系统的观点,对信息建模。
6.常用的数据模型有层次模型、网状模型和关系模型三种。
2.判断题
〔1〕在文件系统阶段,数据的独立性差。
√
〔2〕对于数据库系统,负责定义数据库存,决定存储构造和存储策略及平安授权等工作的是应用程序员。
×
〔1〕假设一个仓库可存放多种商品,同种商品只能存放在一个仓库中,那么从仓库到商品的联系是多对一的联系。
〔2〕在数据库系统的模式构造中,外模式有且仅有一个。
〔3〕数据独立性是指应用程序与数据之间相互独立,不受影响。
〔1〕一个关系模型的逻辑构造是一二维表,表中的一行即为一个属性,表中的一列即为一个元组。
〔2〕当数据库的存储构造改变了,由数据库管理员对模式/模式映象作相应改变,可以使模式保持不变,从而保证了程序与数据的物理独立性。
〔√〕
〔1〕相对于非关系模型,关系模型的缺点之一是存取路径对用户透明,需进展查询优化。
〔2〕关系模型的三个组成局部,不包括完整性约束。
1.数据库物理存储方式的描述称为模式。
2.在数据库三级模式间引入二级映象的主要作用是提高数据与程序的平安性。
3.关系模型是数据模型,而网状模型不是数据模型。
4.同一关系模型的任意两个元组值不能完全一样。
5.在关系中能唯一标识元组的属性集的是主码。
〔1〕属于BC式的关系模式中已经完全消除了插入异常和删除异常。
〔2〕在关系模式R〔A,B,C,D〕中,有函数依赖集F={B→C,C→D,D→A},那么R能到达3NF×
应用题
设有如下教学环境:
一个班级有多名学生,一个学生只属于一个班级。
一个学生可以选修假设干门课程,一门课程只有一个教师主讲。
每位教师属于一个教研室,一个教研室有假设干位教师。
请画出E-R图。
关系代数练习
给定如下关系:
S〔S#,SN,SA,SD〕,S#表示学号,SN表示,SA表示年龄,SD表示所在系。
C〔C#,,PC#〕,C#表示课程号,表示课程名,PC#表示先修课程号。
SC〔S#,C#,G〕,S#、C#含义同上,G表示成绩。
请用关系代数完成如下查询操作:
〔1〕查询选修课程号为C1、成绩为A的所有学生。
〔2〕查询年龄为23岁的学生所选修的课程名。
〔3〕查询选修“数据库原理〞课程的学生。
〔4〕查询选修所有课程的同学。
〔5〕查询选修了先修课程号PC为6的课程学生学号。
解:
(1)∏SN〔S⋈∏S#〔σC#=“C1〞∧G=〞A〞〔SC)〕〕
〔2〕∏〔C⋈∏C#〔SC⋈∏S#(σSA=23(S)))
〔3〕∏SN〔S⋈∏S#(SC⋈∏C#(σ=‘数据库原理’(C)))
〔4〕∏SN〔S⋈∏S#〔(SC)÷
〔∏C#
(C)〕〕
〔5〕∏S#〔SC⋈∏C#(σPC=‘6’(C))
===========================================================================
〔1〕查询所有小于20岁学生的学号、。
〔2〕查询计算机系的学生所选修的课程名。
〔1〕∏S#,SN〔σSA=20〔S〕〕
〔2〕∏〔C⋈∏C#〔SC⋈∏S#(σSD=‘计算机’(S)))
或者:
∏〔σSD=‘计算机’〔C⋈SC⋈S)〕
〔3〕∏SN〔S⋈∏S#(SC⋈∏C#(σ=‘数据库原理’(C)))
∏SN〔σ=‘数据库原理’〔C⋈SC⋈S)〕
〔4〕∏SN〔S⋈∏S#〔SC÷
(C)〕
∏SN〔S⋈∏S#〔SC÷
C)〕
〔5〕∏S#〔SC⋈∏C#(σPC=‘6’(C))
∏S#〔σPC=‘6’〔C⋈SC)〕
设职工社团数据库有三个根本表:
职工〔职工号,,年龄,性别,工资,住址〕;
社会团体〔编号,名称,负责人,活动地点〕;
参加〔职工号,编号,参加日期〕。
用关系代数表达式实现以下1—5小题:
1.查询年龄大于20岁的职工和性别。
2.查询参加社会团体编号为101的所有职工的和年龄。
3.查询负责人为刚,活动地点在北二区小礼堂的社会团体的名称。
4.查询在西三环居住、工资在1000元以上职工参加社团的编号。
5.查询参加健美社团、活动时间在周六的职工的和职工号。
1.П,性别(σ年龄>
20(职工))
2.П,年龄(σ编号=101(职工∞参加))
3.П名称(σ负责人=‘刚’∧活动地点=‘北二区小礼堂’(社会团体))
4.П编号(σ住址=‘西三环’∧工资>
1000(职工∞参加))
5.П,职工号(σ名称=‘健美’∧参加时间=‘周六’(职工∞参加∞社会团体))
用SQL语句实现以下6—12小题:
6.定义职工表,职工号不能为空,其值唯一。
答案.CREATTABLE职工〔职工号CHAR〔l0〕NOTNULLUNIQUE,
CHAR〔8〕NOTNULL,
年龄SMALLINT,
性别CHAR〔2〕〕;
7.建立视图:
参加人情况〔职工号,,社团编号,社团名称,参加日期〕
答案.CREATVIEW参加人情况〔职工号,,社团编号,社团名称,参加日期〕
ASSELECT参加.职工号,,社会团体编号,名称,参加日期
FROM职工,社会团体,参加
WHERE职工.职工号=参加.职工号AND参加.编号=社会团体.编号;
8.查找参加唱歌队或篮球队的职工号和。
答案.SELECT职工号,
FROM职工,社会团体,参加
WHERE职工.职工号=参加.职工号AND参加.编号=社会团体.编号
AND社会团体.名称IN〔‘唱歌队’,‘篮球队’〕;
9.求每个社会团体的参加人数。
答案:
SELECT编号,COUNT〔职工号〕
FROM参加
GROUPBY编号;
或者:
SELECT社会团体.名称,COUNT〔职工号〕
FROM参加,社会团体
WHERE社会团体.编号=参加.编号
GROUPBY名称;
10.查询名字中第二个字为“明〞字的职工的和职工号。
SELECT职工号,
FROM职工
WHERELIKE‘__阳%’;
11.将职工号=6887的年龄改为45岁。
UPDATE职工
SET年龄=45
WHERE职工号='
6887'
;
12.把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户平,并允许他再将此权力授予其他用户。
.GRANTselect,insert,deleteONTABLE社会团体,参加TO平
WITHGRANTOPTION;
现有关系数据库如下
学生(学号,,性别,专业,奖学金)
课程(课程号,名称,学分)
学习(学号,课程号,分数)
用关系代数表达式实现以下1—2小题:
1.检索“英语〞专业学生的学号、、性别。
2.检索课程号为“10031〞,课程成绩高于90分的所有学生的学号。
1.П学号,,性别(σ专业='
英语'
(学生))
2.П学号(σ分数>
90∧课程号='
10031'
(学习))
用SQL语言实现以下3—10小题:
3.检索姓王学生的、专业。
SELECT,专业FROM学生WHERELIKE“王%〞;
4.检索奖学金在200元以下的学生和专业。
SELECT,专业FROM学生WHERE奖学金<
200;
5.检索选修课程号为“C135〞课程的学生信息,包括学号,和专业
SELECT学号,,专业FROM学生,学习
WHERE课程号='
C135'
and学生.学号=学习.学号;
6.检索学习‘C1’号课程的学生最高分。
SELECTMAX〔分数〕FROM学习WHERE课程号='
C1'
;
7.向学生表中插入一个记录〔‘980810’,‘王东’,‘男’,‘计算机’,150〕
.INSERTINTO学生
VALUES〔‘980810’,‘王东’,‘男’,‘计算机’,150〕;
8.定义“英语〞专业学生所学课程的信息视图AAA,包括学号、、课程号和分数
CREATEVIEWAAA(学号,,课程号,分数)
ASSELECT学号,,课程号,分数
FROM学生,学习
WHERE学生.学号=学习.学号AND专业=’英语’;
9.检索所有有成绩的学生学号和课程号。
SELECT学号,课程号FROM学习WHERE成绩ISNULL;
10.检索选修C56课程的学生学号和成绩,检索结果按分数的降序排列。
.SELECT学号,成绩
FROM学习
WHERE课程号=‘C56’
ORDERBY成绩DESC;
有如下三个关系表
st(sno,sn,sa,ss):
学生表格,sno:
学号sn:
sa:
年龄ss:
性别
sc(sno,o,score):
学生选择课程表格,sno:
学号o:
课程号score:
成绩
c(o,,ct):
课程表格,o:
课程号:
课程名ct:
课程学时
1.用关系代数写出下面查询的表达式〔每题4分〕
〔1〕查找所有女生的学号、和年龄。
〔2〕查找选修了“数据库技术〞的学生学号和成绩。
〔3〕查找选修了“软件工程〞的男生和年龄。
2.请按以下题目的要求写出相应的SQL语句〔每题4分〕
(1)定义学生关系表,要求学号属性非空,取值唯一;
createtablest(snochar(10)notnullunique,
snchar(20),
saint,
sschar
(2));
(2)查询年龄大于26岁的男生学号和;
selectsno,snfromstwheresa>
26andss=’男’;
(3)查询全体学生的和出生年份;
selectsn,2021-safromst;
(4)查询年龄18到30岁之间的学生和年龄;
selectsn,safromstwheresabetween18and30;
(5)查询所有姓的学生学号、;
selectsno,snfromstwheresnlike‘%’;
〔6〕查询男女学生的平均年龄;
selectss,avg(sa)fromstgroupbyss;
〔7〕查询学习5号课程的最高分和最低分。
selectmax(score),min(score)
fromsc;
综合题:
某个学校有假设干个系,每个系有假设干个学生,开设假设干个课程,每门课程有假设干学生选修,某一门课可以为不同的系开设。
用E-R图画出该学校的概念模型。
描述学生的属性有:
学号、、出生日期、系号、班号;
描述系的属性有:
系名、系号、系办公室地点、人数;
描述学校的属性有:
学校名、成立年份、地点;
描述课程的属性有:
课程号、课程名、学分。
(1)设计学校的E-R图。
〔2〕将该E-R图转换为关系模式。
关系模型如下。
学生〔学号、、出生日期、系号、班号〕。
系〔系名、系号、系办公室地点、人数〕。
学校〔学校名、成立年份、地点〕
课程〔课程号、课程名、学分〕
〔3〕指出转换结果中每个关系模式的候选码。
学生关系的主码:
用户名
系的主码:
系号
学校主码:
学校名
课程主码:
有三个关系如下
〔1〕学生关系Student,包括学号Sno、Sname、年龄Sage、性别Ssex;
〔2〕课程关系Course,包括课程号o、课程名ame、任课教师Cteacher;
〔3〕学生选课关系SC,包括Sno、o和成绩Grade。
1.定义学生关系Student,学号不能为空,其值唯一,值也唯一,学号为主码;
CREATETABLEStudent
(SnoCHAR〔10〕NOTNULLUNIQUEPRIMARYKEY,
SnameCHAR(30)UNIQUE,
SageINT,
SsexCHAR
(2));
2.查询1号课程的平均成绩;
SELECTAVG〔Grade〕FROMSCWHEREo=‘1’;
3.查询学号“95001〞的学生选修全部课程号和成绩;
SELECTo,GradeFROMSCWHERESno=‘95001’;
4.查询年龄在19-20岁之间的男生和女生的数量;
SELECTSsex,COUNT〔Sno〕
FROMStudent
WHERESage≥19andSage≤20
GROUPBYSsex;
WHERESageBETWEEN19and20
有三个关系如下:
1.查询“软件工程〞课程的平均成绩;
SELECTAVG(Grade)
FROMCourse,SC
WHEREame=‘软件工程’
ANDSC.o=Course.o;
FROMSCWHEREoIN(SELECToFROMCourseWHEREame=‘软件工程’)
2.查询名字中第2个字为"
阳"
字的学生的和学号。
SELECTSname,Sno
FROMStudent
WHERESnameLIKE‘__阳%’;
3.查询阳同学所选修的课程号和课程名
SELECTCourse.o,ameFROMCourseWHEREoIN
(SELECToFROMSCWHERESnoIN
(SELECTSnoFROMStudentWHERESname=‘阳’));
SELECTCourse.o,SnameFROMStudent,Course,SC
WHERESname=‘阳’ANDSC.o=Course.oANDStudent.Sno=SC.Sno;
4查询学生数据库课的成绩,输出学生和成绩,按成绩排序〔降序〕。
SELECTSname,GradeFROMStudent,Course,SCWHEREStudent.Sno=SC.SnoANDCourse.o=SC.oANDCourse.ame=’数据库’ORDERBYGradeDESC;
5.检索没有成绩的学生和课程号。
SelectSname,oFromStudent,SCWhereGradeisNULLANDStudent.Sno=SC.Sno
使用SQL语句实现:
1.为学生表建立一个聚簇索引STUNO,按学号升序和年龄降序。
CREATCLUSTERINDEXStuonONStudent(SNOASC,SAGEDESC);
2.查询王寒同学没有选修的课程的课程号
SELECTo
FROMCourse
WHEREoNOTIN
(SELECEo
FROMSC,Student
WHERESC.Sno=Student.Sno
ANDSname=〞王寒〞);
3.创立一个成绩高于90分的学生视图S1,包括学生学号、出生年份、所选课程号、成绩。
CREATVIEWS1〔Sno,Sbirth,o,Grade〕
ASSELECTSno,2021-Sage,o,Grade
FROMStudent,SCWHEREStudent.Sno=Sc.SnoANDGrade>
90
4.向课程表中增加属性任课教师(Tname),类型是字符型
ALTERTABLECourseAddTnamechar(20)
5.将课程号为‘003’课程成绩增加10分
UPDATESCSETGrade=Grade+10
WHEREo=‘003’
下面使用关系代数表达式实现:
1.查询课程名为数据库原理,授课教师为洋的课程号。
Пo(σame=‘数据库原理’∧Cteacher=‘洋’(Course))
2.查询既选修了课程1又选修了课程3的学生学号,。
ПSno,Sname(σo=“1〞(Student∞SC))∩ПSno,Sname(σo=“2〞(Student∞SC))
3.将数据库原理课程的成绩提高10分。
UPDATESCSETGRADE=GRADE+10
where‘数据库原理’=〔selectamefromCoursewhereCourse.o=SC.o);
4.查询至少2门课在80分以上的学生学号及课程数
SELECTSno,COUNT(*)
FROMSC
WHEREGrade>
=80
GROUPBYSno
HAVINGCOUNT(*)>
=2;
5.查询“C语言_课程设计〞的课程号
WHEREameLike“C语言\_程序设计〞ESCAPE‘\’;
有四个关系如下:
〔1〕S(sno,sname,city);
〔2〕P(pno,pname,color,weight);
〔3〕J(jno,jname,city);
〔4〕SPJ(sno,pno,jno,qty);
其含义见教材P64。
1.查询供给红色零件的供给商号。
ПSno(σcolor=“红〞(S∞SPJ∞P))
2.查询的供给商供给工程j1零件的供给商号