5.12 自测题

(1) 如果在没有指定模式的情况下创建表,它会在哪种模式中(选择一个最佳答案)?

A.它会是孤表,没有模式

B.创建会失败

C.会在SYS模式中

D.会在用户创建它的模式中

E.会在PUBLIC模式中

(2) 几个对象类型共享相同的名称空间,因此在相同的模式中不能有相同的名称。下面哪些对象类型不在与其他对象类型相同的名称空间中(选择一个最佳答案)?

A.索引

B. PL/SQL存储过程

C.同义词

D.表

E.视图

(3) 下面哪些语句会因为表名不合法而失败(选择两个正确答案)?

A.create table "SELECT" (col1 date);

B. create table "lowercase"(col1 date);

C.create table number1 (col1 date);

D.create table 1number (col1 date);

E.create table update (col1 date);

(4) 什么是堆表的显著特性(选择两个正确答案)?

A.堆表可以保存可变长度的行

B.多个表可以在单个堆中保存行

C.堆中的行是随机排列的

D.不能给堆表编索引

E.堆中的表没有主键

(5) 下面哪些数据类型是可变长度的(选择所有正确答案)?

A.BLOB

B. CHAR

C.LONG

D.NUMBER

E.RAW

F.VARCHAR2

(6) 分析下列语句:

        create table tab1 (c1 number(1), c2 date);
        alter session set nls_date_format='dd-mm-yy';
        insert into tab1 values (1.1, '31-01-07');

插入会成功吗(选择一个最佳答案)?

A.插入会失败,因为1.1太长

B.插入会失败,因为’31-01-07’是字符串不是日期

C.插入会因为A和B所述的原因而失败

D.插入会成功

(7) Oracle不支持下面哪种数据类型作为内部数据类型(选择一个最佳答案)?

A.CHAR

B. FLOAT

C.INTEGER

D.STRING

(8) 分析的语句:

        create table t1 as select * from regions where 1=2;

结果是什么(选择一个最佳答案)?

A.会因为不可能的条件而失败

B.不会创建表,因为条件返回FALSE

C.会创建表T1,但不会插入行,因为条件返回FALSE

D.会创建表T1,会插入REGIONS表中的所有行,因为条件返回NULL作为行过滤器

(9) 当使用下面的语句创建表时:

        create table newtab as select * from tab;

对新表有约束吗(选择一个最佳答案)?

A.对新表没有约束,因为使用子查询创建表时没有复制约束

B. TAB上的所有约束都会复制到NEWTAB

C.会复制主键和唯一约束,但不会复制检查约束和非空约束

D.会复制检查约束和非空约束,但不会复制唯一约束和主键约束

E.会复制所有约束,外键约束除外

(10) 下列哪些约束要求使用索引(选择所有正确答案)?

A.CHECK

B. NOT NULL

C.PRIMARY KEY

D.UNIQUE

(11) 某个事务由两条语句组成。第一条语句执行成功,但是第二条语句(更新若干行)由于违反约束而失败。此时会出现什么情况(选择一个最佳答案)?

A.整个事务都会回滚

B.第二条语句的执行结果会被完全回滚,第一条语句的执行结果则会被提交

C.第二条语句的执行结果会被完全回滚,第一条语句的执行结果不会被提交

D.只有违反约束的更新操作被回滚,其他执行结果都会被提交

E.只有违反约束的更新操作被回滚,其他结果不会被提交

(12) 下列哪些关于索引的描述是正确的(选择一个最佳答案)?

A.一个索引可以基于某个表的多个列,但是这些列必须具有相同的数据类型

B.一个索引可以基于某个表的多个列,但是这些列必须相邻,并且必须按照它们在表中所定义的顺序进行指定

C.如果某个索引与某个表位于相同的模式中,那么这个索引与这个表不能同名

D.以上叙述都不正确

(13) 下面的哪些选项可以用于B*树索引,而不能用于位图索引(选择所有正确答案)?

A.压缩

B.降序排序

C.基于函数的键表达式

D.反向键索引

E.唯一性

F.使用复合键

(14) 临时表中数据的可见性受到限制。如果一个用户以HR的身份登录,并将行插入到临时表中,这些行对谁可见(选择一个最佳答案)?

A.只有执行插入操作的会话可以访问

B.所有以HR身份登录的会话

C.在执行插入操作的会话终止前,所有会话都可以访问

D.在执行插入操作的会话提交事务前,所有会话都可以访问

(15) 临时表写入磁盘的什么位置(选择一个最佳答案)?

A.从不写入磁盘

B.写入用户的临时表空间

C.表所在模式的用户的临时表空间

D.写入会话的用户进程的本地磁盘

(16) 下面哪些选项定义了复杂视图而不是简单视图的特征(选择所有正确答案)?

A.通过仅选择表的部分列来限制投影

B.用列的别名命名视图的列

C.用WHERE子句限制行的选择

D.执行聚合

E.联接两个表

(17) 分析下面三条语句:

        create view v1 as select department_id, department_name, last_name from
        departments join employees using (department_id);
        select department_name, last_name from v1 where department_id=20;
        select d.department_name, e.last_name from departments d, employees e
        where d.department_id=e.department_id and
        d.department_id=20;

第一个查询会比第二个查询快,因为(选择一个最佳答案):

A.视图已经完成了联接表的工作

B.视图使用ISO标准联接语法,它比第二个查询中使用的Oracle联接语法快

C.视图是预编译的,因此第一个查询需要的动态编译比第二个查询少

D.没有理由使第一个查询更快

(18) 研究这个视图创建语句:

        create view dept30 as
        select department_id, employee_id, last_name from employees
        where department_id=30 with check option;

是什么导致如下语句失败(选择一个最佳答案)?

        update dept30 set department_id=10 where employee_id=114;

A.除非另外指定,否则视图会被创建为WITH READ ONLY

B.视图太复杂而不允许DML操作

C.WITH CHECK OPTION会拒绝任何修改DEPARTMENT_ID的语句

D.该语句会成功

(19) 表SCOTT.DEPT上有一个简单的视图SCOTT.DEPT_VIEW。这个插入失败了,并出现如下错误:

        SQL> insert into dept_view values('SUPPORT', 'OXFORD');
        insert into dept_view values('SUPPORT', 'OXFORD')
        *
        ERROR at line 1:
        ORA-01400: cannot insert NULL into ("SCOTT"."DEPT"."DEPTNO")

问题可能出在哪里(选择一个最佳答案)?

A.INSERT违反了明细表上的约束

B. INSERT违反了视图上的约束

C.视图被创建为WITH READ ONLY

D.视图被创建为WITH CHECK OPTION

(20) 公有同义词区别于私有同义词的特征是什么(选择两个正确答案)?

A.公有同义词总是对所有用户可见

B.公有同义词可以根据名称访问,不需要模式名称限定符

C.可以从公有同义词中进行选择,不需要任何权限

D.公有同义词可以与表或视图有相同的名称

(21) 分析下面三条语句:

        create synonym s1 for employees;
        create public synonym s1 for departments;
        select * from s1;

下面哪条语句是正确的(选择一个最佳答案)?

A.第二个语句会失败,因为对象S1已经存在

B.第三个语句会显示EMPLOYEES的内容

C.第三个语句会显示DEPARTMENTS的内容

D.第三个语句会显示表S1的内容(如果此当前模式中存在这样一个表的话)

(22) 一个视图和一个同义词的创建语句如下:

        create view dept_v as select * from dept;
        create synonym dept_s for dept_v;

然后删除表DEPT。如果查询同义词DEPT_S会发生什么事(选择一个最佳答案)?

A.不会有错误,因为该同义词引用了依然存在的视图,但是不会有行返回

B.如果先用命令ALTER VIEW DEPT_V COMPILE FORCE重新编译视图,就不会有错误

C.会有一个错误,因为该同义词将是无效的

D.会有一个错误,因为视图将是无效的

E.会有一个错误,因为删除表时会隐式删除视图

(23) 一个序列的创建语句如下:

        create sequence seq1 maxvalue 50;

如果当前值已经是50,当试图选择SEQ1.NEXTVAL时会发生什么情况(选择一个最佳答案)?

A.序列会循环,并发出0

B.序列会循环,并发出1

C.序列会重新发出50

D.会出现一个错误

(24) 假设创建了一个如下所示的序列:

        create sequence seq1 start with 1;

当从中选择了几次后,要将它重新初始化为重新发出已经生成的数值。如何做到这一点(选择一个最佳答案)?

A.必须删除并重新创建序列

B.无法做到。一旦数值被使用过,就不能从序列中重新发出该数值

C.使用命令ALTER SEQUENCE SEQ1 START WITH 1;将下一个值重置成1

D.使用命令ALTER SEQUENCE SEQ1 CYCLE;将序列重置为它的起始值