笔试错题集(数据库)

1.数据库中索引的描述:对于表数据量少,插入,更新操作多的表,添加索引可能会使查询速度变慢。
                                       索引不适合表频繁的update,insert,delete操作,这样会频繁的修改索引,造成性能低下。
                                       索引类似于指针访问,又类似数组的下标访问,所以可以快速定位,避免全局扫描

2.开发一个逻辑模型:公司有10个部门,每个部门有6-7名员工,但每个员工可能会为不止一个部门工作。下面所给的模型正确的是(  建立一个关联表,从员工表到该关联表建立一个一对多的关系,然后再从部门表到该关联表建立一个一对多的关系)。

3.请简单回答数据库中union 和 union all 的区别。

     Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

4. 已知关系模式:

S (SNO,SNAME) 学生关系。SNO为学号,SNAME为姓名;
C (CNO,CNAME,CTEACHER) 课程关系。CNO为课程号,CNAME为课程名,CTEACHER为任课教师;
SC(SNO,CNO,SCGRADE)选课关系。SCGRADE为成绩。
1)   找出没有选修过“李明”老师讲授课程的所有学生姓名;
     select SNAME from S where not exists(select * from SC, C where SC.CNO = C.CNO AND CNAME = '李明' and SC.SNO = S.SNO);
2)   列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩;
     select S.SNO, S.SNAME, avg(SC.SCGRADE) AVG_SCGRADE from S, SC, (select SNO from SC where SCGRADE < 60 group by SNO having count(distinct CNO) >= 2)A where S.SNO = A.SNO AND SC.SNO = A.SNO group by S.SNO, S.SNAME;
3)   列出既学过课程名为“1”的课程,又学过课程名为“2”的课程的所有学生姓名;
     select S.SNO, S.SNAME from S, (select SC.SNO from SC, C where SC.CNO = C.CNO and C.CNAME in ('1', '2') group by SNO having count(distinct CNO) = 2)SC where S.SNO = SC.SNO;
4)   列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩。
     select S.SNO, S.SNAME, SC.1号课成绩,SC.2号课成绩 from S, (select SC1.SNO, SC1.SCGRADE 1号课成绩, SC2.SCGRADE 2号课成绩 from SC SC1, C C1, SC SC2, C C2 where SC1.CNO = C1.CNO and C1.NAME = '1' and SC2.CNO = C2.CNO and C2.NAME = '2' and SC1.SCGRADE > SC2.SCGRADE)SC where S.SNO = SC.SNO;

 

你可能感兴趣的:(面试题)