答案是自己做的,仅供参考。
一、单选题(每小题2分,共30分)
1、下列关于数据库系统正确的描述是( A )。
A、数据库系统减少了数据的冗余
B、数据库系统避免了一切冗余
C、数据库系统中数据的一致性是指数据的类型一致
D、数据库系统比文件系统能管理更多的数据
2、下面哪个不属于数据库系统的三级模式结构( C )。
A、外模式 B、 模式 C、中模式 D、 内模式
3、下面哪个命令属于SQL语言授权命令( D )。
A、 update B、 delete C、select D、 grant
4、同一个关系模型的任意两个元组值( A )。
A、不能全同 B、可全同 C、必须全同 D、以上都不是
5、关系模型的结构是( D )。
A、层次结构 B、网状结构 C、对象结构 D、二维结构
6、下列聚合函数中不忽略空值(null)的是( C )
A、SUM(列名) B、MAX(列名)
C、COUNT(*) D、AVG(列名)
7、实体完整性要求主属性不能取空值,这一点可以通过( B ) 来保证。
A、定义外码 B、定义主码
C、用户定义的完整性 D、由关系系统自动
8、为防止用户通过视图对数据进行增、删、改时,无意或故意操作不属于视图范围内的基本表数据,可在定义视图时加上下列哪个句子?( A )
A、WITH CHECK OPTION子句 B、WITH CHECK DISTINCT 子句
C、WITH CHECK ON 子句 D、WITH CHECK STRICT 子句
9、设关系R与关系S具有相同的目(或称度),且相对应的属性的值取自同一个域,则R-(R-S)等于( B )
A、R∪S B、R∩S C、R×S D、R-S
10、视图消解(View Resolution)的概念是( D )
A、将对视图的查询转换为逻辑查询的过程
B、将对视图的查询转换为对具体数据记录查询的过程
C、将对视图的查询转换为对数据文件的查询的过程
D、将对视图的查询转换为基本表的查询的过程
11、当关系R和S自然连接时,能够把R和S原该舍弃的元组放到结果关系中的操作是( D )
A、左外联接 B、右外联接 C、外部并 D、外联接
12、 要保证数据库逻辑数据独立性,需要修改的是( C )
A、模式 B、模式与内模式的映射
C、模式与外模式的映射 D、内模式
13、若要删除数据库中已经存在的表 S ,可用( C )
A、DELETE TABLE S B、DELETE S
C、DROP TABLE S D、DROP S
14、在视图上不能完成的操作是( C )
A、更新视图 B、查询
C、在视图上定义新的表 D、在视图上定义新的视图
15、建立索引的最优之一是( C )
A、节省存储空 B、便于管理
C、提高查询速度 D、提高查询和更新的速度
二、简答题(每小题6分,共30分)
1、试述数据库中候选码和主码的区别?
2、试述视图的作用?基本表和视图有什么区别和联系?
3、简述数据库的审计功能,为什么要提供审计功能?
4、举例说明关系模型有哪三类完整性规则?
5、简述数据库的三级模式结构和两层映像?这样的结构有什么好处?
三、问答题(第1小题25分,第2小题10分,第三小题5分,共40分)
1、设有一个学生—课程数据库,其中关系表如下所示:
学生关系表:Student(Sno,Sname,Ssex,Sage,Sdept),属性为:学生(学号,姓名,性别,年龄,所在系)
课程关系表:Course(Cno,Cname,Cpno,Ccredit),属性为:课程(课程号,课程名,先修课号,课程学分)
学生选课关系表:SC(Sno,Cno,Grade),属性为:选课(学号,课程号,成绩)
用SQL语句实现下列各项:
(1)创建学生选课表SC。(4′)
CREATE TABLE SC (SNO CHAR,
CNO CHAR,
GRADE INT,
PRIMARY KEY(SNO,CNO),
FOREIGN KEY(SNO) REFERENCES STUDENT(SNO),
FOREIGN KEY(CNO) REFERENCES STUDENT(CNO)
);
(2)为学生—课程数据库中的SC建立索引,SC表按学号升序和课程号降序建索引。(2′)
CREATE UNIQUE INDEX MY_INDEX ON SC(SNO ASC,CNO DESC);
(3)创建视图:院系学生数,要求将所有院系学生人数列示出来。(3′)
CREATE VIEW MY_VIEW AS(
SELECT SDEPT,COUNT(*)
FROM STUDENT
GROUP BY SDEPT);
(4)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。(2′)
SELECT SNAME,SDEPT,SAGE
FROM STUDENT
WHERE SAGE >= 20 AND SAGE <= 23;
(5)查询学生姓名中第2个字为”明”字的学生的姓名和学号。(3′)
SELECT SNAME,SNO
FROM STUDENT
WHERE SNAME LIKE '_明%';
(6)查询“化学系”学生没有选修的所有课程名。(3′)
SELECT CNAME
FROM COURSE
WHERE CNO NOT IN
(SELECT CNO
FROM STUDENT,SC
WHERE STUDENT.SNO = SC.SNO AND
SDEPT = '化学系');
SELECT CNAME
FROM COURSE
WHERE NOT EXISTS(
SELECT *
FROM SC,STUDENT
WHERE COURSE.CNO = SC.CNO AND
SC.SNO = STUDENT.SNO AND
STUDENT.SDEPT = '化学系');
(7)查询选修了课程M01或者选修了课程M02的学生。(3′)
SELECT *
FROM STUDENT
WHERE SNO IN
(SELECT SNO
FROM SC
WHERE CNO = 'M01' OR CNO = 'M02');
SELECT *
FROM STUDENT,SC
WHERE SC.SNO = STUDENT.SNO AND
(SC.CNO = 'M01' OR SC.CNO = 'M02');
(8)将学生08001的年龄改为23岁。(2′)
UPDATE STUDENT
SET SAGE = 23
WHERE SNO = '08001';
(9)查询每一课的间接先修课(先修课的先修课)。(3′)
SELECT FIRST.CNO,SECOND.CPNO
FROM COURSE FIRST,COURSE SECOND
WHERE FIRST.CPNO = SECOND.CNO;
2、设有3个关系模式如题1所示,请用关系代数表达式完成下列各题。
(1)检索选修课程号为C2的学生学号与姓名。(3′)
(2)检索选修课程名为MATHS的学生学号与姓名。(3′)
(3)检索至少选修课程号为C2或C4的学生学号。(4′)
3、设有两个关系R(A,B)和S(B,C),有下列SELECT语句
SELECT A,B
FROM R
WHERE B NOT IN(SELECT B
FROM S
WHERE C=‘C56’);
请写出与之等价的关系代数表达式。