四、 应用题
1、读者要到图书馆借阅书刊,请你画出书刊、读者及借阅三者之间的E-R模式。(10分) 读者属性有:姓名、编号、年龄、性别。 书刊属性有:作者、书名、出版日期、编号。 借阅属性有:借阅日期、归还日期。
.
2、已知:某研究所有若干个研究室,每一研究室有一名负责人和多个科研工人员,每一个科研人员只属于一个研究室。研究所承接了多个科研项目,每个科研项目有多个科研人员参加,第个科研人员可以参加多个科研项目。其中研究室包括研究室名、办公地点、负责人;科研人员包括人员编号、姓名、性别、年龄;科研项目包括项目号、项目名、负责人开工时间等信息。(13分) 试:(1)根据上述语义画出E-R ;
负责人 研究室 研究室名 办公地点 1 包含 性别 年龄 P 科研人员 M 参加 人员编号 姓名 项目号 N 科研项目 项目名 负责人开工时间
(2)将E-R模型转换成关系模型,要求标注关系的主键和外键。 科研项目(项目号,项目名,负责人开工时间) 研究室(研究室号,办公地点,负责人)
科研人员(人员编号,姓名,性别,年龄,研究室名) 参加(项目号,人员编号)
3、有班级(班级代号,班级名称,专业名称)和学生(学号,姓名,性别,班级代号)表,两表分别设置了主键,且创建了参照完整性规则,表中数据如下图所示: 班级 班级代号 C01 C02 学生 学号 101 102 104 姓名 张明 王兰 李斌 性别 男 女 男 班级代号 C01 C02 C01 班级名称 CS-06 MS-06 专业名称 计算机 信息管理 如果要在学生表中插入下列5个新纪录,判断每个记录能否被正确插入,要求在()中填√或X (1){101,”李玲”,”女”,”C01”} ( X ) (2){103,”田京”,”男”,”C03”} ( X ) (3){104,”康瑜”,”男”,”C03”} ( X ) (4){105,”何光”,”男”,”C02”} ( √ ) (5){107,”康瑜”,”男”,”C01”} ( √ )
R?S4、有两个关系R和S求∏c,A(R), R
(
∞S
3?2
3=2
R
A 1 4 7
B 2 5 8 C 3 6 9
S
D 2 9 5 B 2 5 9 C 3 6 8 ∏c,A(R)= C 3 6 9 A 1 4 7 R
∞S =
B 2 5 C 3 6 A 1 4 D 2 9
R?S3?2=
R.B 2 5 R.C 3 6 A 1 4 S.B 2 5 S.C 3 6 D 2 9
5、有三个表,如下所示,请按要求用义SQL语句完成。 student表(学生表)
学号 1 2 3 姓名 李明 张然 许晴 性别 男 女 女
course表(课程表)
课程号 1 2 3
sc表(选课表)
学号 1 2 2 3
(l)把course表中课程号为2的课程的学分修改为4。 Update course Set 学分=4 Where 课程号=2
(2)在student表中查询年龄大于18的学生的所有信息,并按学号降序排列. Select * from student Whee 年龄>18 Order by 学号 DESC
(3)在以上三个表中查询选的课程的学号、姓名和性别。并且成绩大于80的学生的。学号、姓名和性别。 Select 学号,姓名,性别 From student,course sc Where 学分=4 and 成绩>80 and sc.学号=student.学号 and course.课程号=sc.课程号
6、有班级(班级代号,班级名称,专业名称)和学生(学号,姓名,性别,班级代号)表,两表分别设置了主键,且创建了参照完整性规则,表中数据如下图 班级表
班级代号 C01 C02 班级名称 CS-06 MS-06 专业名称 计算机 信息管理 课程号 1 1 2 3 成绩 90 85 76 70 课程名 SQL Server VB 专业英语 学分 4 3 2 年龄 20 19 18 系别 计算机系 经管系 电子系 学生表
学号 101 102 104
如果要在学生表中插入下列5个新记录,判断每个记录能否被正确插入,要求在()中填√或X。
(l) {101, “李玲”,“女”,“C01”} (2) {103, “田京”,“男”,“C03”} (3) {104, “康瑞”,“男”,“C03”} (4) {105, “何光”,“男”,“C02”} (5) {107, “康瑜”,“男”,“C01”}
7、数据模型如下:
厂家S(SNO,SNAME,STATUS,CITY) 产品P(PNO,PNAME,WEIGHT,COLOR) 工程J(JNO,JNAME,CITY) 供货SPJ(SNO.PNO.JNO,QTY) 用SQL完成如下处理(20分)
(1).给出为工程 J1 供货的厂商号,并按厂商号升序. Select sno from spj where jno='J1' order by sno (2).给出供货量在 300 - 500 之间的所有供货情况. Select * from spj where qty between 300 and 500 (3).给出由 Lodon 的厂商供给 Lodon 的工程的产品号. Select pno from s、 spj、j
Where s.city=’London’and s.sno=spj.sno And j.city=’London’ and j.jno=spj.jno
(4).给出满足如下条件的所有产品号:提供该零件的厂商和使用该零件的工程在同一城市. Select pno from spj,s,j
Where spj.sno=s.sno and spj.jno=j.jno and s.city=j.city (5).给出由 S1 提供产品的工程名.
Select jname from j .spj where sno=’s1’and j.jno=spj.jno (6).给出使用了由供应红色产品的厂商供应的产品的工程名. Select jname from j.p.spj Where p.pno=spj.pno
And j.jno=spj.jno and color=’红色’ (select sno from spj where pno in (select pno from p where color='Red'))) (7).求使用了全部零件的工程名. Select jname from j where not exists (select * from p where not exists
(select * from spj where spj.pno=p.pno and spj.jno=j.jno)) (8).给出未采用由 Lodon 供应者提供红色零件的工程名. Slect jname from j where not exists
( X ) ( X ) ( X ) ( √ ) ( √ )
姓名 张明 王兰 李斌 性别 男 女 男 班级代号 C01 C02 C01 (select * from spj where sno in
(select sno from s where city='London') and pno in (select pno from p where color='红色'))
8、有下面几个表,按要求做答。 student表(学生表)
学号 1 2 3 course表(课程表)
课程号 1 2 3 sc表(选课表)
学号 1 2 2 3
(l)把course找出表中课程号为3的课程的学分修改为3。 Update course Set 学分=3 Where 课程号=3
(2)在student表中查询年龄大于18的学生的所有信息.并按学号降序排列。 Select * from student Where 年龄>18 Order by 学号 DESC
(3)在以上三个表中查询选的课程的..学分”为3,并且成幼大于90的学生的学号、姓名和性别。 Select 学号.姓名.性别 From student,course,sc Where 学分=3 and 成绩>80 And sc.学号=studen.学号 And course.课程号=sc.课程号
(4)为student表创建一个名称为my_trig的触发器.当用户成功剧除该表中的一条或多条记录时,触发器自动删除SC表中与之有关的记录。
Create trigger my_trig on student
谋程号 1 1 2 3 成绩 88 90 70 79 课程名 SQL Server 数据结构 专业英语 学分 4 3 2 姓名 吴平 崔品 钱筱 性别 男 女 女 年龄 18 21 19 系别 计算机系 经管系 电子系 For delete As
Delete from sc
Where 学号 in(select 学号 from Deleted)
9、有一个“学生一课程”数据库.数据库中包括三个表:
(1)“学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(SdePt)五个属性组成,可记为:Student(Sno,Sname,Ssex,Sage,Sdept)Sno为关键字。
(2)“课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成.可记为:Course(Cno,Cname,Cpno,ccredit)Cno为关键字。
(3)“学生选课”表SC由学号(S的)、课程号(Cno)、成绩(Grade)三个 属性组成,可记为:SC(Sno,Cno,Grade)(SNO、CNO)为关键字。 完成下列操作:
(l)请把其中建立“学生”表Student的语句写下来,表Student是由学号Sno、姓名sname、性别ssex、年龄sage、所在系sdept.五个属性组成,其中学号属性不能为空.并且其厦是唯一的。(5分) Create table student( Sno char (5), Snamechar (8), Ssex char(2), Sage int, Sdept char(20))
(2)在student表中查询SdePt是‘计算机’的学生的所有信息, 并按Sno降序排列。(3)在以上三个表中查询Ccredit为5并且Grade大于60的学生的学号、姓名 和性别。(5分) Select * from student Where sdept = ‘计算机’ Order by sno DESC
2、下面程序段的功能是:在数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是向author_id、Author_name、address和tele phone字段插入数据.阅读并回答以下问题: USE book db GO
IF EXISTS(SELECT? name FROM Sysobjects WHERE name=’my_proc’and type=’?proc‘) DROP PROC my_proc GO
CREATE PROC my_Proc
@a int,@b char @ c,char(50) ?AS
INSERT INTO clients (client_id client_name,.address) vALUES(@a,@b,@c) GO
问题:(1)填写该程序段中空白处的内容: ? name ?proc ?AS (2)任写一条调用该存储过程的语句:
ExEC my_proc7,‘李好’,‘考试书店’或者ExEC my Proc @=7,@b=‘李好’,@c=‘考试书店’