ORACLE11g试题答案(陈冬亮)

第九章 视图

一、单项选择题

1.视图定义是( D ) A.一个基表中导出的基表 B.一个基表中导出的虚表

C.一个或几个基表或视图中导出的基表 D.一个或几个基表或视图中导出的虚表 2.在视图上不能完成的操作是( C ) A.更新视图 B.查询

C.在视图上定义新的基本表 D.在视图上定义新视图

3.在基本SQL语言中,不可以实现( D ) A.定义视图 B.定义基表 C.查询视图和基表 D.并发控制

4.下列关于关系数据库视图的说法中,哪些是正确的?( A ) Ⅰ. 视图是关系数据库三级模式中的内模式。 Ⅱ. 视图能够对机密数据库提供一定的安全保护。 Ⅲ. 视图对重构数据库提供了一定程度的逻辑独立性。

33

Ⅳ. 对视图的一切操作最终都要转换为对基本表的操作。 Ⅴ. 所有的视图都是可以更新的。

A.Ⅰ、Ⅱ和Ⅲ B. Ⅱ、Ⅲ和Ⅳ C. Ⅱ、Ⅲ、Ⅳ和Ⅴ D. 都正确

5.下列模式对象不会占用实际的存储空间是( D ) A.表 B.索引 C.蔟 D.视图

6.查看视图中哪些字段可以更新应查询( D )视图 A.DBA_VIEWS B. DBA_CLU_COLUMNS C. DBA_OBJJECTS D.DBA_UPDATABLE _COLUMN

7. 在SQL Sever 2000中,以下关于视图数据的操作,正确的描述是( C )。 A.视图数据只能用来查询和浏览,不能进行修改、插入和删除 B.可以修改和删除视图的数据,但是这些数据不更新到数据库表中

C.可以在查询分析器中使用INSERT/UPDATE/DELETE 等SQL语句对视图进行操作

D.由于视图是数据库基表数据的复制,因此删除视图中数据行,不会影响到基表的数据。 8. 现有创建视图语句

create view view_stuinfo(姓名, 学号, 成绩) As

select stuname, stuinfo.stuid, score from stuinfo left join stumarks on stuinfo.stuid=stumarks.stuid go

下列评述正确的是( A )

A. 成功创建了一个名为view_stuinfo的视图 B. 语法错误:第一行的列名不能这样指定 C.语法错误:as应改为begin

D.语法错误:视图中不能出现左连接关键字left join 二、填空题

1. 视图 是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。 2.可以通过在SQL*PIUS中查询Oracle数据库字典的动态视图是 V$NLS-PARAMETERS 。 3. DBA_DATA_FILES 视图用来检查数据文件的大小, DBA_FREE_SPACE 视图用来判断tablespace的剩余空间。

4.当对视图进行UPDATE、INSERT和DELETE操作时,为了保证被操作的行满足视图定义中子查询语句的谓词条件,应在视图定义语句中使用可选择项 WITH CHECK OPTION 。 5.在不为视图指定列名的情况下,视图列的名称将使用 表列的名称 。 三、问答题

1.什么是视图?视图有什么作用? 解:

视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。

34

对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。

2.比较表和视图二者之间的异同 解:

视图中没有数据,仅仅是一条SQL语句,查询语句检索出来的数据以表的形式表示;视图的定义存储在数据字典中,视图的查询基于表;视图没有直接的相关物理数据,不能像表那样被索引。

3.举例说明WITH CHECK OPTION的作用 解:

首先创建表students

create table students (

sid number(6) not null unique, sname varchar2(20) , sage varchar2(10) );

insert into students values(1,'yangliehui','21'); insert into students values(2,'zhangsan','22');

然后创建视图view_student

create view view_student as select * from students where sid='2'; 再创建视图view_student_check

create view view_student_check as select * from students where sid=2 with check option;

比较view_student 和 view_student_check 的区别:

view_student视图可以执行 insert into view_student_sele values(3,'lisi','30'); view_student_check视图执行insert into view_student_sele values(3,'lisi','30');时显示“视图WITH CHECK OPTION where 子句违规”。

同理:update 、delete 操作也是如此,说明:视图加上with check option 子句后对该视图进行插入、修改、删除操作时,DBMS会自动加上条件(在本例中加的条件是:sid=2)。

4.创建一个视图时,使用SELECT语句如下:SELECT COUNT(*) FROM 商品信息,为什么不能更新这个视图?如何查看该试图是否可以更新?

35

解:

(1)表商品信息无COUNT(*)对应的字段。

(2)视图的更新能唯一地有意义地转换成对相应基本表的就可以更新。

5.根据下列模式: S(S#,SN,SA,SG) C(C#,CN,PC#) SC(S#,C#,G)

其中S,C,SC分别代表学生,课程及学生-课程。S#,SN,SA,SG,C#,CN,PC#, G分别表示学号,学生姓名,年龄,系别,课程号,课程名,预修课号,成绩等,以上述模式为基础做一个视图VSC(S#,SN,SA),该视图表示计算机系学生的视图。 解:

CREATE VIEW AS VSC(S#,SN,SA) SELECT A.S#,SN,SA FROM S A,C B,SC C

WHERE A.S#=C.S# AND B.C#=C.C# AND PC#=’计算机’

36

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4