关系数据库与SQL语言模拟试题(C)参考答案.doc
关系数据库与SQL语言模拟试题(C)答案一单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题末的括号内。每小题1.5分,共23分)1.三个模式之间存在下列映射关系,将正确的填入括号中( B )。 A.外模式/内模式 B.外模式/模式 C.模式/模式 D.内模式/外模式2. 1级封锁协议加上对T要读取的数据R加S锁,直到事务结束才释放,这是( D )。 A.4级封锁协议 B.1级封锁协议 C.2级封锁协议 D.3级封锁协议3.数据的逻辑独立性是指( C )。 A.存储结构与物理结构的逻辑独立性 B.数据与存储结构的逻辑独立性 C.数据与程序的逻辑独立性 D.数据元素之间的逻辑独立性4.事务有多个性质,其中不包括( B )A.一致性 B.唯一性 C.原子性 D.隔离性5.SQL语言通常称为( A )A.结构化查询语言 B.结构化控制语言C.结构化定义语言 D.结构化操纵语言6.关系数据模型的三个组成部分中,不包括(C ) A.完整性规则 B.数据结构 C.恢复 D.数据操作7.下列四项中,不属于数据库特点的是( D ) A.数据共享 B.数据完整性 C.数据冗余较小 D.数据独立性低8.数据库中存储的是( D ) A.数据 B.数据模型 C.数据之间的联系 D.数据以及数据之间的联系9.数据库的并发操作可能带来的问题包括( A ) A.丢失更新 B.数据独立性会提高 C.非法用户的使用 D.增加数据冗余度10.在SELECT语句中用来显示price的值小于5.00的记录的子句是( A )A. WHERE price<5.00B. HAVING price<5.00C. ORDER BY price<5.00D. GROUP BY price<5.0011.评估下面的SQL语句 SELECT i.id_number, m.manufacturer_name FROM inventory i, manufacturer m WHERE i.manufacturer_id(*) = m.id_number; 这个语句执行的结果是什么?( B )A. 仅仅适合连接条件的值被显式B. 在包含id_number列的manufacturer表中不满足连接条件的记录将被显示C. 在包含manufacturer_id列的inventory表中不满足连接条件的记录将被显示D. 有一个语法错误12.下面哪一个子句能够用条件限定记录的分组?( D )A. FROMB. WHEREC. SELECTD. HAVINGE. GROUP BYF. ORDER BY13.下面的查询中哪一个有错误?(D)SELECT inventory.id_number,manufacturer.id_numberFROM inventory i, manufacturer mWHERE i.manufacturere_id=m.id_numberORDER BY 1;A. ORDER BY 1;B. FROM inventory i,manufacturer mC. WHERE i.manufacturer_id=m.id_numberD. SELECT inventory.id_number,manufacturer.id_number二、填空(每空1分,共12分)1.数据库系统中的常见故障有(系统故障)、(事务内部的故障)、(介质故障)。2.在关系模型中,实体以及实体间的联系都是用(关系)来表示的。3.关系数据库数据操作的处理单位是(集合),层次和网状数据库数据操作的处理单位是记录。4.数据库管理系统(DBMS)通常提供(数据定义)、数据操纵、数据控制和数据库维护。5.关系中主码的取值必须唯一且非空,这条规则是(实体)完整性规则。6.数据字典通常包括(数据项)、数据结构、(数据流)、数据存储和处理过程五个部分。7.关系模式由3NF转化为BCNF是消除了主属性对码的(部分依赖)和 (传递依赖)。四、SQL程序设计题(每小题3分,共24分)现有关系数据库如下:学生(学号,姓名,性别,专业,奖学金)课程(课程号,名称,学分)学习(学号,课程号,分数)1.检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学号、姓名和专业;SELECT 学号,姓名,专业 FROM 学生 WHERE 奖学金<=0 AND 学号 IN (select 学号 from 学习 where 分数>95);或SELECT 学生.学号,姓名,专业 FROM 学生,学习WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号 AND 奖学金<=0 AND 分数>952.对成绩得过满分(100分)的学生,如果没有获得奖学金的,将其奖学金设为1000元;UPDATE 学生 SET 奖学金=1000 WHERE 奖学金<=0 AND 学号 IN (SELECT 学号 FROM 学习 WHERE 分数=100)现有如下关系:职工(职工号、姓名、性别、职务、家庭地址、部门编号)部门(部门编号、部门名称、地址、电话)保健(保健卡编号、职工号、检查身体日期、健康状况)3.查找所有女科长的元组 select * from 职工 where 性别女 and 职务科长;4.删除职工关系表中职工号为“3016"的记录 delete from 职工 where 职工号3016; 5.建立健康状况为“差”的职工视图 create view zg as select * from 职工 where 职工号 in (select 职工号 from 保健 where 健康状况差 );设有一个学生课程数据库,包括学生关系Student、课程关系Course、选修关系SC,如图1所示: Student学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept95001李勇男20CS95002刘晨女19IS95003王敏女18MA95004张立男19IS Course课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64 SC学号Sno课程号Cno成绩Grade9500119295001285950013889500229095002380图1 学生-课程数据库写出完成下列要求的SQL语句:6.查询每个学生及其选修课程的情况。 Select student.*,ame,sc.grade from student,course,sc Where student.sno=sc.sno and o=o; 有数据表如下:orders(orderid,customerid,productid,employeeid,orderdate)customers(customerid,companyname,contactname,state,address)employees(employeeid,lastname,fistname,title)order details(orderid,productid,unitprice,quantity,discount)要求用SQL语句实现以下功能:7.查询employees表中姓(lastname)的第二个字母为l的人员 select * from employees where lastname like _l%; 8.查询employees表的情况,结果按姓(lastname)降序排列 select * from employees order by lastname desc9.查询共有几张订单 select count(*) from orders;10.将order details表中所有单价(unitprice)小于10的记录删除 delete from “order details” where unitprice<10;11.创建表student,表中有字段 sno整型,3 主码 sname字符型,8位字符 sage整型,2 sdept字符型,10位字符ssex字符型,2位字符,只能为男或女) create table student(sno number(3) primary key,sname varchar2(8),sage number(2),sdept varchar2(10),ssex char(2) check ssex in(男,女); 12.假如employees2表的结构与employees表相同,希望用该表中employeeid为10248的职务(title)去更新employees表中的employeeid为868的title字段 update employee set title=(select title from employees2 where employeeid=10248) where employeeid=868;13.删除order details表中orderid为10248的记录 delete from “order details” where ordered=10248 现有图书借阅关系数据库如下:图书(图书号、书名、作者、单价、库存量)读者(读者号、姓名、工作单位、地址)借阅(图书号、读者号、借期、还期、备注)其中,还期为NULL表示图书未还待添加的隐藏文字内容114.检索借阅图书号为B5的读者姓名 select 姓名 from 读者,借阅 where 读者.读者号借阅.读者号 and 图书号B5; 已知学生关系为S(S#,SN,SD,SA),选课关系为SC(S#,C#,G),利用SQL语言完成以下操作: 15.求信息系CI中年龄大于19的学生的姓名。 Select * from s where sa>19 and sd=CI;16.选修C1课程的学生姓名。 Select sn from s,sc where s.s#=sc.s# and c#=CI; 或 select sn from s where s# in (select s# from sc where c#=CI);六、综合题(21分)1.把下面用关系表示的实体、实体与实体之间的联系,用E-R图表示出来,要求在图中表示联系的类型(11、 1n、 mn)。(5分)实体1:学生(学号,姓名,性别,年龄)关键字为:学号实体2:课程(课程号,课程名,学分数)关键字为:课程号实体1与实体2的联系:学习(学号,课程号,成绩)关键字为:学号+课程号注:一个学生可以选多门课程,一门课程也可以被多个学生选,学生选课后有成绩。X 2.现有关系数据库如下: 学生(学号,姓名,性别,专业、奖学金) 课程(课程号,名称,学分)学习(学号,课程号,分数)用关系代数表达式实现下列查询(6分)(1).检索学生成绩得过满分(100分)的课程的课程号、名称和学分;答:课程号,名称,学分(分数=100(学习课程)(2).检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业;答:学号,姓名,专业(学生)学号,姓名,专业(分数<80(学生学习)3.现有某个应用,涉及到两个实体集,相关的属性为: 实体集R(A#,A1,A2,A3),其中A#为码 实体集S(B#,B1,B2),其中B#为码从实体集R到S存在多对一的联系,联系属性是D1。(6分)(1).设计相应的关系数据模型; 答:R1 (A#, A1,A2,A3,B#,D1) R2 (B#, B1, B2) (2).如果将上述应用的数据库设计为一个关系模式,如下: RS(A#,A1,A2,A3,B#,B1,B2,D1)指出该关系模式的码。答:码是A#B#(3).假设上述关系模式RS上的全部函数依赖为:A1A3指出上述模式RS最高满足第几范式?(在1NFBCNF之内)为什么?答:RS满足2NF,不满足3NF 因为存在非主属性A3对码A#B#的传递依赖,没有部分函数依赖。(4).如果将上述应用的数据库设计为三个关系模式,如下: R1 (A#,A1,A2,A3) R2 (B#,B1,B2) R3 (A#,B#,D1)关系模式R2是否一定满足第3范式?为什么?答:不一定。 因为R3中有两个非主属性B1和B2,有可能存在函数依赖B1B2,则出现传递依赖B#B1、B1B2。 4.在ER模型中,如果实体间是1 :1的联系,如何设计相应部分的关系模型?(3分) 答:如果实体间是1 :1的联系,可以在两个实体类型转换成的两个关系模式中的任意一个关系模式的属性中加上另一个关系模式的键和联系类型的属性。