大型数据库技术-期末考试样题

一、选择题样题:

1.有4条与游标有关的语句,它们在程序中出现的正确顺序是:( )B

  1. OPEN abc
  2. CURSOR abc IS SELECT ename FROM emp
  3. FETCH abc INTO vname
  4. CLOSE abc
    A.1、2、3、4 B.2、1、3、4
    C.2、3、1、4 D.1、3、2、4
    2.数据库运行在归档模式下,如果发生日志切换,为了保证不覆盖旧的日志信息,系统将启动如下哪个进程?( )D
    A.DBWR 数据库写进程 B.LGWR 日志写进程
    C.SMON 系统监视器 D.ARCH 归档进程
    3.对于ROLLBACK命令,以下准确的说法是:( )C
    A.撤销刚刚进行的数据修改操作
    B.撤销本次登录以来所有的数据修改
    C.撤销到上次执行提交或回退操作的点
    D.撤销上一个COMMIT命令
    4.创建表空间时,可以指定表空间中存储对象的默认存储参数,其中哪个参数用于设置分配给每一个对象的初始区大小( )B
    A.NEXT B.INITIAL
    C.PCTINCREASE D.MINEXTENTS
    5.现将CONNECT 角色授予TEXT_ROLE角色,下面哪个语句可以实现( )D
    A.GRANT ROLE CONNECT ON TEST_ROLE;
    B.GRANT ROLE CONNECT TO TEST_ROLE;
    C.GRANT CONNECT ON TEST_ROLE;
    D.GRANT CONNECT TO TEST_ROLE;

请添加图片描述

二、填空题样题:

1.Oracle数据库系统的物理存储结构主要有三类文件组成,分别: 数据文件日志文件控制文件 。逻辑存储结构包括 (数据库)、表空间、(逻辑对象)、数据段、数据区间、数据块。

请添加图片描述
2.SQL*Plus中直接调用过程的关键字是 exec ;查询中去掉重复的行,必须使用的关键字是 distinct ; 关键字 describe 可以用来显示表的结构信息。
3.使用EXPORT命令时,可以有3种不同方式导出数据,表方式就是导出一个指定的基本表,包括表的定义和数据及表上的索引、约束等。 用户 方式是导出一个用户的所有对象,包括表、视图、存储过程、序列等。 整个数据库 是导出数据库中所有的对象。
4.在ORACLE数据库中,将权限分为两类即 系统权限 和 用户权限 ,分别指在系统级控制数据库的存取和使用机制和在模式对象上控制存取和使用的机制。

三、判断题样题

1.INSERT事件触发器中可以使用:old伪记录;DELETE事件触发器中可以使用:new伪记录。全错//UPDATE事件触发器中,可以使用“:old”伪记录 ( F )
2.后台进程LGWR的作用是数据库写入程序。 //日志写入程序 ( F )
3.Alter user tempuser Identified by oracle Default tablespace users Default temporary tablsespace temp Quota 100M on users ( F )
4.SQL*PLUS中,显示登录的用户的命令是DESCRIB user。//SHOW user ( F )
5.默认登录Oracle Enterprise Manager Database Control 的端口号是1158。 ( T )

四、简答题样题:

1.How to connect remote oracle server by SQLPLUS? Please write down the steps and the operating statements?
如何使用SQL
PLUS连接远程oracle服务器?请写下操作步骤和操作说明?

在这里插入图片描述

2.What is the difference between procedures and functions in the Oracle database?
// Oracle数据库中的过程和函数有什么不同
1.过程可以有0-N个返回参数,通过OUT OR IN OUT参数返回,函数有且仅有一个返回值,通过return语句返回。
2.调用过程时,可作为单独的语句执行;调用函数时,函数必须把返回结果赋值给一个变量。
3.在SQL语句中,可以不能调用过程;可以直接调用函数。

过程没有返回值,函数必须有且仅有一个返回值,通过return语句返回。
调用过程时,可作为单独的语句执行;调用函数时,函数必须把返回结果赋值给一个变量。
在SQL语句中,不能调用过程;可以直接调用函数。

3.读懂如下程序:
CREATE OR REPLACE FUNCTION ret_deptinfo(
p_deptno dept.deptno%TYPE, p_num OUT NUMBER, p_max OUT NUMBER)
RETURN dept.dname%TYPE
AS
v_dname dept.dname%TYPE;
BEGIN
SELECT dname INTO v_dname FROM dept WHERE deptno=p_deptno;
SELECT count(*),max(sal) INTO p_num,p_max FROM emp WHERE deptno=p_deptno;
RETURN v_dname;
END ret_deptinfo;
分析程序实现的功能:
按照部门号查询该部门的总人数、最高工资,同时返回该部门的部门名称
4.输入和运行以下程序:
CREATE OR REPLACE TRIGGER CHECK_SAL
BEFORE UPDATE ON emp
FOR EACH ROW
BEGIN
IF :new.job=‘CLERK’ AND (:new.sal<500 OR :new.sal>1000) THEN
RAISE_APPLICATION_ERROR(-20001, ‘工资修改超出范围,操作取消!’);
END IF;
END;
分析程序实现的功能:
在对 emp 执行更新操作前先判断如果更新的职位为’CLERK’且输入的工资小于200或大于1000则出错。
为emp表的’CLERK’职位的工资添加约束条件:大于500小于1000

五、设计题样题:

1、创建一个存储过程,以部门号为参数,查询该部门的平均工资,并输出该部门中比平均工资高的员工号、员工名。并且调用该存储过程,要求根据输入部门编号,查询平均工资及输出比平均工资高的员工号、员工名。
CREATE OR REPLACE PROCEDURE show_emp( p_deptno emp.deptno%TYPE)
AS
v_sal emp.sal%TYPE;
BEGIN
SELECT avg(sal) INTO v_sal FROM emp WHERE deptno=p_deptno;
DBMS_OUTPUT.PUT_LINE(p_deptno||’ ‘||‘average salary is:’ ||v_sal);
FOR v_emp IN (SELECT * FROM emp WHERE deptno=p_deptno AND sal>v_sal) LOOP
DBMS_OUTPUT.PUT_LINE(v_emp.empno||’ '||v_emp.ename);
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(‘The department doesn’’t exists!’);
END show_emp;

过程调用语句:
declare
vdeptno emp.detpno%type;
Begin
vdeptno:=&deptno;
show_emp(vdeptno);
End;
2、创建一个函数,以部门号为参数,返回部门名、部门人数及部门平均工资。并且调用该函数,输出所有有员工的部门的名称、部门人数和平均工资。
CREATE OR REPLACE FUNCTION ret_deptinfo( p_deptno dept.deptno%TYPE,
p_num OUT NUMBER, p_avg OUT NUMBER)
RETURN dept.dname%TYPE
AS
v_dname dept.dname%TYPE;
BEGIN
SELECT dname INTO v_dname FROM dept WHERE deptno=p_deptno;
SELECT count(*),avg(sal) INTO p_num,p_avg FROM emp WHERE deptno=p_deptno;
RETURN v_dname;
END ret_deptinfo;
函数调用语句:
DECLARE
v_avgsal emp.sal%TYPE;
v_num NUMBER;
v_dname dept.dname%TYPE;
BEGIN
FOR v_dept IN (SELECT DISTINCT deptno FROM emp) LOOP
v_dname:=ret_deptinfo(v_dept.deptno,v_num,v_avgsal);
DBMS_OUTPUT.PUT_LINE(v_dname||’ ‘||v_maxsal||’ ‘|| v_avgsal||’ '||v_num);
END LOOP;
END;

3、创建学生表student(sno,sname,sex,sage),要求学号sno主键,姓名sname不能重复, 性别sex只能是‘男’或者‘女’,年龄sage在15到25之间。创建课程表course(cno,cname),要求课程号cno主键,课程名cname唯一,同时为主键约束列上的唯一性索引设置存储位置和存储参数。创建学生选课表SC(sno,cno,grade),要求成绩grade大于0小于100,有两位小数,sno,cno都是外键,而且sno,cno一起做主键。
CREATE TABLE student(
sno NUMBER(6) CONSTRAINT S_PK PRIMARY KEY,
sname VARCHAR2(20) UNIQUE,
sex CHAR(2) CONSTRAINT S_CK1 CHECK(sex in(‘男’, ‘女’)),
sage NUMBER(6,2) CONSTRAINT S_CK2 CHECK(sage between 15 and 25)
);
CREATE TABLE course(
cno NUMBER(6) PRIMARY KEY,
cname CHAR(20) UNIQUE
USING INDEX TABLESPACE USER
STORAGE (INITIAL 64K NEXT 64K)
);
CREATE TABLE SC(
sno NUMBER(6) REFERENCES student(sno),
cno NUMBER(6) REFERENCES course(cno),
grade NUMBER(5,2) CHECK(grade between 0 and100),
CONSTRAINT SC_PK PRIMARY KEY(sno, cno)
);

4、创建用户user2,口令为user2,默认表空间为USERS,在该表空间的配额为10 MB,初始状态为锁定。创建用户user3,口令为user3,默认表空间为USERS,在该表空间的配额为10 MB,概要文件为example_profile(假设该概要文件已经创建),为用户user2授予CREATE SESSION,CREATE TABLE ,CREATE VIEW系统权限。user2获得权限后,为用户user3授予CREATE TABLE权限。然后回收user2的CREATE TABLE权限。
SQL> conn system/oracle@orcl 或者 conn / as sysdba 仅供参考,正确就行
SQL>CREATE USER user2IDENTIFIED BY user2
DEFAULT TABLESPACE USERS QUOTA 10M ON USERS
ACCOUNT LOCK;
SQL> CREATE USER user3 IDENTIFIED BY user3
DEFAULT TABLESPACE USERS
QUOTA 10M ON USERS
PROFILE example_profile ;
SQL> GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW
TO user2 WITH ADMIN OPTION;
SQL> CONNECT user2/user2 @ORCL
SQL> GRANT CREATE TABLE TO user3;
SQL> conn system/oracle@orcl 或者 conn / as sysdba
SQL> revoke CREATE TABLE from user2;

5、使用EXPDP导出scott模式相关数据,并使用IMPDP 将刚刚导出的scott模式相关数据导入到system模式,写出核心操作语句。
1、创建DIRECTORY :create directory dir_dp as ‘D:/oracle/dir_dp’;
2、授权 :Grant read,write on directory dir_dp to scott;
3、执行导出
expdp scott/tiger@orcl schemas=scott directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;
4、执行导入
impdp system/oracle@orcl directory=dir_dp dumpfile =expdp_test1.dmp remap_schema=scott:system logfile=impdp_test1.log;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我慢慢地也过来了

谢谢大佬的投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值