数据库试题
dnf配置-螳螂捕蝉用来比喻
一、基础题(本题40分)
1.标准SQL与SQL SERVER
在什么地方不同,举出5个不同处(本题5分)
答:(1)数据类型不同:①NUMBER与NUMERIC; ②DATE与DATETIME;
(2)语句格式不同:③SQL有“交集intersect”和“差集minus”运算,SQL
SERVER2000没有;
④外连接命令格式不同;⑤修改表中“修改字段类型”命
令格式不同。
2.判断下列关系模式最高属于第几范式,并解释原因(本题10分)
(1)R(A,B,C,D) F:{B→C,AB→D};
解:∵R的候选码为AB,
存在非主属性对码的部分函数依赖。
∴ R∈1NF。
(2)R(A,B,C,D) F:{AB→C, B→D,D→B};
解:∵R的候选码为AB或AD,不存在非主属性对码的部分或传递函数依赖
∴
R∈3NF。
(3)R(A,B,C,D) F:{AB→C, CB→D}
解:∵R的候选码为AB,不存在非主属性对码的部分函数依赖。
但∵AB→CB,CB→D,故AB→D,存在非主属性对码的传递函数依赖。
∴ R∈2NF。
(4)R(A,B,C,D) F:{AB→C, AB→D, C→D }
解:∵R的候选码为AB,不存在非主属性对码的部分函数依赖。
但∵AB→C,C→AB ,C→D,故AB→D,存在非主属性对码的传递函
数依赖。
∴ R∈2NF。
(5)R(A,B,C,D) F:{AB→C, C→B, C→D
}
解:∵R的候选码为AB或AC, 存在非主属性对码的部分函数依赖。
∴
R∈1NF。
3.解释下列名词(本题10分)
DBMS、DBS、DBA、范式、E-R图
(1)DBMS:指对数据库进行管理的系统软
件,是用户访问数据的接口,提供用户对
数据进行定义和操作的各种命令,并能保证数据的安全性、完整
性、多用户对数
据的并发使用以及发生故障后的系统恢复。
(2)DBS:指引入了数据库后
的计算机应用系统,一般由数据库、数据库管理系统
及其开发工具、应用系统、数据库管理员及用户等组
成。
(3)DBA:指负责设计、建立、管理和维护数据库以及协调用户对数据库要求的个
人
或工作团队。
(4)范式:关系数据库(RDB)中的关系要满足一定的要求,满足不
同程度要求的为
不同范式。
(5)E-R图:于1976年提出的实体-
联系方法(Entity-Relationship
Approach),该方法用E-
R图来描述现实世界的概念模型。
4.比较表、视图的异同(本题5分)
不同之处:(1)表:实际存在的表(实表),是实际存储的数据的逻辑表示。
(2)视图:是由基本表或其他视图表导出的表,是为了数据查询方便、
数据处理简便以及数据安全要求
而设计的数据虚表,不对应实际存储的数据。
相同之处:(1)逻辑结构相同,均为二维表结构,由一组命名字段和记录行组
成;
(2)相关命令的写法一致。
5.比较SQL
SERVER中企业管理器和查询分析器的异同(本题5分)。
不同之处:(1)企业管理器是用于管理SQL
Server对象的方便而实用的图形化
工具,使用菜单直观操作完成相关任务;
(2)查询分析器是一个可以交互执行SQL语句和脚本的图形工具,它
的主要功能是编辑、编译和执行
T-SQL语句,并显示命令结果。
相同之处:两者管理、操作的SQL
Server对象和数据完全一致,
6.解释概念模型和逻辑模型,并比较它们的区别(本题5分)。
概念模型:按用户观点对信息建模;一般用E-R图描述概念模型;
逻辑模型:按计算机系统
的观点对数据建模,是DBS中用于提供数据表示和操作
手段的形式框架;一般用一系列关系模式描述逻
辑模型。
二、设计题(本题20分)
根据自己所了解的情况,对学校“学生选课管理系统”
、“学生专业选择管理系
统”中某一系统设计相应的E-
R图,并设计满足第三范式的数据库,并说明其设
计过程。
M
班级
成绩
课程号
课程名
学分
课程
选修
姓名
性别
年龄
学号
学生
上课
姓名
性别
职称
职工号
老师
N
P
M
1.课程(课程号,课程名,学分)
2.学生(学号,姓名,性别,班级,年龄)
3.选课(课程号,学号,成绩)
4.老师(职工号,姓名,性别,职称)
5.上课(职工号,课程号)
姓名
性别
年龄
学号
班级
专业号
专业号
专业名称
学生
专业
选专业
学号
M
1
1.课程(课程号,课程名,学分)
2.学生(学号,姓名,性别,班级,年龄)
3.选专业(专业号,课程号)
1.已
知有二个表,Student表的字段分别为NO,Name,Sex,Age,其字段表示学号、
姓名
、性别和年龄,成绩表B的字段分别为NO,A,B,C, 其字段表示学号、A课程
成绩、B课程成绩
、C课程成绩,其中主键均为学号NO。其数据录入顺序如下:
Student的数据
NO
0101
0105
0102
0110
0108
NO
0110
0102
0105
0101
Name
刘琳
王刚
李晓
张明
周冰
B的数据
A
90
NULL
85
86
B
78
90
85
80
C
NULL
85
68
79
Sex
女
男
女
男
女
Age
20
21
22
NULL
21
写出下列命令的结果。(本题18分)
(1) select * from
student;
NO Name sex Age
0101
0102
0105
0108
0110
刘琳
李晓
王刚
周冰
张明
女
女
男
女
男
20
22
21
21
NULL
(2) select no, name, a ,b from student,b where
=
服务器返回错误消息,no列名不明确。
(3) select
avg(a),avg(b),avg(c) from B;
(无列(无列名) (无列名)
名)
87 83 77
(4) select * from student
order by age;
NO Name SEX AGE
0110 张明 男
NULL
0101 刘琳 女 20
0105 王刚 男 21
0108 周冰
女 21
0102 李晓 女 22
(5) select ,
sum(b.a),sum(b.b) from student,b where
= group
by
SEX (无列名) (无列名)
男
女
175
86
163
170
(6)Select , ,
from student a, b where (< any(select
age from
student where not exists ( select no from b where
=) ) );
NO Name SEX
0101 刘琳 女
0101
刘琳 女
0101 刘琳 女
0101 刘琳 女
2.用一条命令完成下列操作(本题22分)
在数据库中有下列5个表:
学生信息
表S(SNO,SNAME,DNUM,AGE,SEX),其字段名分别表示学号、姓名、所属学院编
号、年龄、性别。
教师信息表T(TNO,TNAME,DNUM,AGE,SEX),
其字段名分别表示教师编号、姓名、所属学
院编号、年龄、性别。
课程信息表
C(CNO,CNAME,DNUM,PCNUM,TNO),其字段名分别表示课程编号、课程名称、
所属学院编号、先修课程编号、授课教师编号。
学生选课及成绩表SC(SNO,CNO,GRADE),其字段名分别表示学号、课程编号、成绩。
学院信息表D(DNUM,DNAME,TEL),其字段名分别表示学院编号、学院名、电话。
写出下列操作的命令:
(1)检索王老师所授课程;
select * from
c where tno in (select tno from t where tname like
‘%王%’)
或:select c.* from c,t where = and like
‘%王%’)
(2)检索没有选王老师或刘老师的课程的男同学的情况;
select * from s where sex=’男’ and sno not
in(select sno from sc,c where = and tno
in(select tno from t where tname like ‘%王%’
or tname like ‘%刘%’ ))
(3)检索至少选修了二门课程的学生情况;
select ,count(cno) from s,sc where = group by
having count(cno)>=2
(4)统计每个学生选修课程的门数(超过
4门才统计),输出学生情况及选修门数,结果按门数的
降序排列,若门数相同,则按学号升序排列;
select ,count(cno) from sc group by sno
having count(cno)>=4 order by count(cno) desc ,sno
(5) 检索学号比”刘玲”同学大,而年龄比她小的学生情况;
select
* from s where sno>(select sno from s where
sname=’刘玲’) and age<(select age from s
where
sname=’刘玲’)
(6) 检索所授课程平均成绩大于80的教师情况;
select t.* from t where tno in(select from
c,sc where = group by tno having
avg(grade)>=80)
(7)
将低于所有课程的平均成绩的女同学的成绩提高5%;
update sc set
grade=grade*1.05 where sno in(select sno from s,sc
where = and =’
女’ and grade<(select avg(grade)
from sc ))
或:update sc set grade=grade*1.05
where sno in(select sno from sc where
grade<(select
avg(grade) from sc ) and sno
in(select sno from s where =’女’ ))
(8)
在表SC中,当某个成绩低于全部课程的平均成绩时,提高8%;
update sc set
grade= grade*1.08 where grade<(select avg(grade)
from sc )
(9) 如果已建立了表BB,其字段分别为SEX,A,B,C,
分别表示性别、A课程成绩、B
课程成绩、C课程成绩。将男女同学的平均成绩作为二条记录存入表BB
中。
insert into bb(sex,a,b,c)
select
sex,avg(a),avg(b),avg(c) from b group by sex
(10)查询所有超过女同学的所有课程的平均成绩的同学的记录。
select sc.* from sc where grade>(select
avg(grade) from sc where sno in(select sno from s
where
sex=’女’) )
(11)
删除选择王老师的课程的所有同学的记录。
delete from sc where cno
in(select cno from c where tno in(select tno from
t where sname like ‘%
王%’))