考      生      信        息        栏
        计科              计科          专业    普通版    级 班级                  姓名            学号               
装                          订                          线
大型数据库期末复习提示 
 
一.题型: 1.选择40分 2.填空20分 
3. 程序填空20分 4. 读程序10分 5.程序设计10分 
二.试题框架 
题型1,2来源为全书16章的内容,重点可以复习每章章后练习。 
题型4,5 来自触发器,事务,存储过程几章内容,题目难度与书中相仿。
一、选择题:(本题共20个小题,每小题2分,共40分)
1当Oracle服务器启动时,下列哪种文件不是必须的 (    ) 。    
A. 数据文件    B. 控制文件    C. 日志文件  D. 归档日志文件 
2. 在Oracle中,一个用户拥有的所有数据库对象统称为 (    )。
A. 数据库      B. 模式        C. 表空间    D. 实例
3.在 Oracle数据库的逻辑结构中有以下组件:
1.    表空间        2. 数据块          3.         4.
这些组件从大到小依次是(   
A. 1→2→3→4  B.1→4→3→2  C.1→3→2→4  D. 4→1→3→2
4.下列哪个子句实现对一个结果集进行分组和汇总(    )。     
A.HAVING     B.ORDER BY   C.WHERE     D.GROUP BY
5. 在Oracle数据库中,(    )用户模式存储数据字典表和视图对象。
A. SYS        B. SYSTEM      C. SCOTT    D. SYSDBA
6.以下不属于命名的PL/SQL块的是(    )。 
A.程序包      B.过程      C.游标      D.函数
7.Oracle中创建用户时,若未提及DEFAULT TABLESPACE关键字,则Oracle就将(    表空间分配给用户作为默认表空间。
AHR    BSCOTT      CSYSTEM   DSYS
8.在Windows操作系统中,Oracle的(    )服务是使用iSQL*Plus必须的。
A.OracleHOME_NAMETNSListener    B. OracleServiceSID 
C.  OracleHOME_NAMEAgent        D. OracleHOME_NAMEHTTPServer
9.下列哪个语句可以在SQL*Plus 中直接调用一个过程(    )。  
A. RETURN     B. CALL     C. SET     D. EXEC
10.如果服务器进程无法在数据缓冲区中到空闲块,为添加从数据文件中读出的数据块,则系统会启动如下哪一个进程(    ) 
A.CKPT          B. DBWR          C.LGWR        D. SMON
11.下列哪一个锁模式不属于Oracle(    )。
A.死锁  B.排他锁    C.行级共享锁    D.共享锁
12.有字符串数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为(    oracle10g程序异常终止)
A. 10  4      B. 4  4      C. 10  10      D. 4  10
13.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句(    )。
A. FETCH          B. CLOSE        C. OPEN            D.    CURSOR
14. ORACLE中,用来判断列值是否为空的操作符是(    )。 
A. ==NULL        B. NULLIS        C. AS NULL      D. IS NULL
15.查询一个表的总记录数,可以采用(    )统计函数。
A. AVG(*)        B. SUM(*)         C. COUNT(*)       D. MAX(*)
16.以下的哪个命令可以将SQL 命令的运行结果保存到文件中(    )。
A.SAVE     B.SPOOL       C.GET       D.INPUT
17.为了去除结果集中重复的行,可在SELECT 语句中使用下列哪个关键字(    ) 。
A.ALL       B.DISTINCT     C.SPOOL     D.HAVING
18.关于模式的描述下列哪一项不正确(    )。 
A.表或索引等模式对象一定属于某一个模式
B.Oracle 数据库中,模式与数据库用户是一一对应的
C.一个表可以属于多个模式
D.一个模式可以拥有多个表
19.下列SELECT 语句中,哪些子句可以包含子查询(    )。 
A.SELECT     B.GROUP BY  C.WHERE       D.ORDER BY
20.在下列模式对象中,哪个对象不会占用实际的存储空间(    )。
A.视图        B.表      C.索引        D.
二、填空题(共8小题,10空需要填写,每空1分,共10分)
1. __________是具有名称的一组相关权限的组合。 
2. 一个表空间物理上对应一个或多个__________文件。
3.标准的SQL 语言语句类型可以分为:__________、数据操纵语句(DML)和__________。 
4. 如果需要向表中插入一批已经存在的数据,可以在INSERT 语句中使用__________ 语句。
5.通过视图修改数据时,实际上是在修改__________中的数据。
6.如果需要向表中插入一批已经存在的数据,可以在INSERT 语句中使用__________语句。
7.在众多的事务控制语句中,用来撤销事务的操作的语句为________,用于持久化事务对数据库操作的语句是________
8. 在多进程Oracle 实例系统中,进程分为________、后台进程和服务器进程。
三、程序填空(共10小题,10空需要填写,每空3分,共30分)
1. 假设当前用户是SCOTT用户以普通用户登录,口令为tiger,请写出该用户以管理员身份登录的命令
________________________________________;
2.假设用户SCOTT以管理员身份登录,现需创建用户Lisa,口令是Lisa,请写出相应的命令___________________________________________;
3. 假设用户SCOTT以管理员身份登录,已知用户账号Lisa被锁定,需为他解除锁定,请写出相应的命令___________________________________________;
4. 假设用户SCOTT以管理员身份登录,需授予用户Lisa对SCOTT用户模式下的EMP表进行查询(SELECT)的权限,请写出相应的命令_______________________________;
5. 假设用户SCOTT以管理员身份登录,在SQL Plus的SQL>提示符下,希望用户Lisa用Lisa以普通用户身份登录到系统,请写出相应的命令________________________;
6. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需查看本用户下的Class表的结构,请写出相应的命令___________________________________________; 
7. 假设用户Lisa用Lisa以普通用户身份登录到系统,用命令select * from Class查询Class表中的数据,现需将缓冲区中的SQL 命令保存到C盘根目录下的文件中, 请写出相应的命令___________________________________________; 
8. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需查看本用户下有哪些表,请写出相应的命令___________________________________________; 
9. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需为Class 表的ID 列添加一个名为PK_CLASS_ID 的主键约束,请补充完整相应的命令
ALTER TABLE Class
________________________; 
10. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需创建一个UPDATE 语句来修改本用户下ARTISTS 表中的数据,并且把每一行的T_ID 值都改成15,应该使用的SQL 语句是________________________ ;
四、编程题:(本题共2小题,每题10分,共20分)
1.请按要求完成以下程序的编写。(5空,每空2分,共10分)
以下存储过程借助游标用于实现对员工工资(Sal)的调整,调整方案为:对于员工号(empno)在7000到7200间的员工,若其原工资在1000之下,则加薪20%。
(1)请完成以下程序:
CREATE OR REPLACE PROCEDURE Rise_sal
IS
    v_empno          pno%type;
    v_sal            Emp.sal%type;
    V_ErrorText        Varchar(200);
    CURSOR    cursor_sal  //定义游标CURSOR cursor_sal
IS 
    _______①_______  //
BEGIN
    ______②________;  //打开游标
    LOOP
        FETCH cursor_sal _____③_______; 
        EXIT WHEN cursor_sal%NOTFOUND;//逐行提取数据
        IF v_sal<1500 THEN
        UPDATE Emp SET sal= sal*0.20+Sal        //更新数据
    END LOOP;
   
线                          订                          装
考      生      信        息        栏
                                  专业          级  班级                  姓名            学号               
装                          订                          线
    CLOSE cursor_sal;  //关闭游标
    _____④______;              //提交事务
Exception
    When others THEN
    CLOSE cursor_sal;    //关闭游标
    rollback;        //回滚事务
    v_Errortext:='游标使用错误';
    dbms_output.put_line('程序异常终止,出现以下错误:'||v_Errortext);
END;
(2)假设用户已登录SQL Plus系统,处于“SQL>_”命令提示符下,现需执行存储
过程Rise_sal,请写出命令:__________________ 
2.创建一个函数get_sal,用于实现对表Emp(如下图)给定一个员工号(Empno),
通过函数获取该雇员的工资值 ,请完成以下程序。
(1)请将函数get_sal补充完整 (3空,每空2分,共6分)
CREATE OR REPLACE FUNCTION get_sal
(v_emp_no  IN  pnoTYPE)
______________   
IS
______________   emp.salTYPE:0
BEGIN
    SELECT sal
    INTO v_emp_sal
    FROM emp
 
      WHERE empno=______________;  
    RETURN(v_emp_sal)
END get_sal
(2)用函数get_sal查询员工7521号的工资,请写出一种查询方式。(4分)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。