Oracle数据库设计期末复习Word文档下载推荐.docx

上传人:b****5 文档编号:17014269 上传时间:2022-11-27 格式:DOCX 页数:36 大小:34.15KB
下载 相关 举报
Oracle数据库设计期末复习Word文档下载推荐.docx_第1页
第1页 / 共36页
Oracle数据库设计期末复习Word文档下载推荐.docx_第2页
第2页 / 共36页
Oracle数据库设计期末复习Word文档下载推荐.docx_第3页
第3页 / 共36页
Oracle数据库设计期末复习Word文档下载推荐.docx_第4页
第4页 / 共36页
Oracle数据库设计期末复习Word文档下载推荐.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

Oracle数据库设计期末复习Word文档下载推荐.docx

《Oracle数据库设计期末复习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Oracle数据库设计期末复习Word文档下载推荐.docx(36页珍藏版)》请在冰豆网上搜索。

Oracle数据库设计期末复习Word文档下载推荐.docx

begin

…………--执行部分

return返回值;

End;

7.什么是角色,如何创建一个角色并把角色赋予指定账户?

1)角色是具有名称的一组相关权限的组合。

2)创建角色有验证方式和非验证方式两种。

例如:

--创建public_role和private_role角色

Createrolepublic_rolenotidentified;

Createroleprivate_roleidentifiedbyprivate;

--给public_role角色授予某些系统权限和对象权限,如select,update

Grantselect,updateonscott.emptopublic_role;

3)把角色赋予指定账户的sql语句和直接把某一权限赋予指定账户相似。

例如:

--把角色public_role授予给用户wangcai

Grantpublic_roletowangcaiwithadminoption;

编程题:

1.编写PL程序块循环给scott.emp表中所有职工增加工资,每次增加100元,直到平均工资高于5000或任一职工的工资超过6000元为止,最后显示出给所有员工一共增加了多少工资。

DECLARE

--声明变量

avg_salemp.sal%TYPE;

max_salemp.sal%TYPE;

v_countnumber:

=0;

BEGIN

--循环遍历

loop

SELECTAVG(sal)INTOavg_salFROMemp;

SELECTMAX(sal)INTOmax_salFROMemp;

--退出条件判断

EXITWHENavg_sal>

5000ORmax_sal>

6000;

UPDATEempSETsal=sal+100;

v_count:

=v_count+SQL%ROWCOUNT;

ENDLOOP;

--打印结果

dbms_output.put_line('

职工工资增加了¥'

||v_count*100);

END;

2.编写一个PL块,定义一个静态游标存储scott.emp表中所有雇员的员empno、ename和sal,并使用循环打印出所有数据。

declare

cursorcur_empisselect*fromemp;

--创建一个游标变量

v_erowemp%rowtype;

--存储结果集每行变量名

begin

opencur_emp;

--打开游标

loop--开始遍历游标

fetchcur_empintov_erow;

exitwhencur_emp%notfound;

--打印员工信息

员工编号:

'

||v_erow.empno||'

员工姓名:

||v_erow.ename||'

员工工资:

||v_erow.sal);

endloop;

end;

 

3.编写一个存储过程upsal接收一个员工号,如果该员工职位是MANAGER,并且在DALLAS工作,那么就给他薪金加15%;

如果该员工职位是CLERK,并且在NEWYORK工作,那么就给他薪金扣除5%;

其他情况不作处理。

--创建存储过程

CREATEORREPLACEPROCEDUREupsal(v_empnoinemp.empno%TYPE)

AS

v_jobemp.job%TYPE;

v_locdept.loc%TYPE;

--查询数据

SELECTjob,locINTOv_job,v_locFROMemp,deptWHEREempno=v_empnoANDemp.deptno=dept.deptno;

--显示数据

IFv_job='

MANAGER'

ANDv_loc='

DALLAS'

THEN

UPDATEempSETsal=sal*1.15WHEREempno=v_empno;

ELSIFv_job='

CLERK'

NEWYORK'

THEN

UPDATEempSETsal=sal*0.95WHEREempno=v_empno;

ELSE

NULL;

ENDIF;

--异常处理

EXCEPTION

WHENOTHERSTHEN

数据没更新!

);

--调用存储过程

DECLARE

v_empnoemp.empno%TYPE;

v_empno:

=&

请输入职工号;

upsal(v_empno);

4.编写一个存储过程comSalary,分别统计出scott.emp表中所有部门的平均工资,并且只显示出工资超过3500的部门。

并编写PL块调用此存储过程。

CREATEORREPLACEPROCEDUREcomSalary

CURSORcurISSELECTdeptno,AVG(sal)FROMempGROUPBYdeptno;

linecur%ROWTYPE;

OPENcur;

LOOP--开始遍历游标

FETCHcurINTOline;

EXITWHENcur%NOTFOUND;

SELECTAVG(sal)INTOavg_salFROMempWHEREdeptno=line.deptno;

IFavg_sal>

3500THEN--判断

dbms_output.put_line(line.deptno);

CLOSEcur;

--关闭游标

BEGIN

comSalary;

一、填空题 

1. 

每个Oracle数据库都由3种类型的文件组成:

数据文件、日志文件 

和控制文件。

2. 

执行立即关闭的命令是_hareg 

–n 

oracle_。

3. 

改变数据库状态的语句是alter 

database。

4. 

用于创建表空间的语句是create 

tablespace 

, 

5. 

修改表空间的语句是alter 

tablespace。

6. 

向用户授权的命令为grant 

connect,resource 

to 

cdpfzx。

7. 

创建用户的语句是create 

user 

CDPFZX 

identified 

by 

CDPFZX。

8. 

修改角色的语句是alter 

role 

9. 

在CREATE 

TABLE语句中,定义主键的关键字是_PRIMARY 

KEY。

10. 

在ALTER 

TABLE语句中,修改列名的关键字是_______ALTER 

__________。

11. 

在SELECT语句中,设置查询条件的关键字是_____where____________。

12. 

在SELECT语句中,实现模糊查询的功能的关键字是_____like_____________。

13. 

[declarations]关键字标志着PL/SQL程序中声明段的开始,在声明段中可以声明变量、常量和游标等对象。

14. 

PL/SQL的异常处理代码在异常处理块中实现。

三、简答题 

1、 

简述用户和角色的关系。

Oracle使用角色的方法来限定各种用户的权力,在系统中可以有许多用户,各种用户有各种不同的角色,拥有不同的权力。

实践表明与其很明确的赋一组权限给一个角色,不如赋给一个角色,然后把这个角色赋给一组用户。

这样就可以实现动态的权限管理,当这组用户的权限必须改变时,只需改变角色的权限就可以了。

2、 

简述表与视图的区别与联系

区别:

1、视图是已经编译好的sql语句,是基于 

SQL 

语句的结果集的可视化的表。

而表不是 

2、视图没有实际的物理记录。

而表有。

3、表是内容,视图是窗口 

4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改 

5、表是内模式,视图是外模式6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。

从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

7、表属于全局模式中的表,是实表;

视图属于局部模式的表,是虚表。

8、视图的建立和删除只影响视图本身,不影响对应的基本表。

联系:

视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。

一个视图可以对应一个基本表,也可以对应多个基本表。

视图是基本表的抽象和在逻辑意义上建立的新关系 

四、应用题 

1.创建、修改表空间的定义,以及编辑和维护表空间。

(1)创建临时表空间tmptbs,文件大小为20M,可以重用,指定其最小区间为16M。

CREATE 

TEMPORARY 

TABLESPACE 

tmptbs 

TEMPFILE 

/oracle/oradata/db/tmptbs.dbf'

SIZE 

20M 

autoextend 

on 

next 

50m 

minsize 

16m 

extent 

management 

local;

(2)在临时表空间tmptbs中添加临时文件,tmptbs01.dbf,文件大小为20MB。

ALTER 

ADD 

DATAFILE 

/oracle/oradata/db/ 

tmptbs01.dbf 

20M;

(3)将表空间tmptbs设置为脱机状态。

OFFLINE;

(4) 

将表空间tmptbs设置为只读表空间。

READ 

ONLY;

(5) 

删除表空间tmptbs,在删除表空间的同时,删除包含的段和数据文件。

DROP 

INCLUDING 

CONTENTS 

AND 

DATAFILES;

2.创建和管理用户的基本属性,并对用户授予相应的角色和权限。

(1)创建用户名为USERMAN,密码为USERPASS的用户。

create 

USERMAN 

USERPASS 

default 

(2)设置用户USERMAN的密码立即过期。

Alter 

expired 

(3)锁定用户USERMAN。

lock 

account 

(4)对于用户USERMAN授予SYSDBA权限。

GRANT 

SYSDBA 

(5)对用户USERMAN授予表USERS的SELECT、INSERT、UPDATE、DELETE权限。

SELECT,INSERT,DELETE,UPDATE 

ON 

USER 

userman 

五、选做题 

编写PL/SQL程序,使用LOOP…EXIT…END语句计算1~100之间所有偶数之和。

declare 

v_count 

number 

:

1;

v_sum 

0;

begin 

for 

in 

1..100 

loop 

if 

mod(v_count,2) 

then 

v_count;

end 

if;

loop;

dbms_output.put_line(v_sum);

试卷二 

二、填空题(每空2分,共40分) 

1、假设已在某远程客户端完成网络服务名配置,服务名为aptech,请写出用户MARTIN(用户口令martinpass)连接到服务器的命令:

___Connect 

martin/martinpass@aptech__;

2、SYS用户以管理员身份登录后,要授予用户MARTIN可以对SCOTT用户的EMP表进行查询的权限,请写出授权命令:

(假设MARTIN用户已存在) 

___Grant 

select 

scott.emp 

martin__;

3、 

创建表employee的副本,但不包含表中的记录:

TABLE 

employee_copy 

AS____Select 

from 

employee 

where 

1=2__;

4、查询itemfile表中itemrate列的信息,要求将数值转换为字符串,并使用当前货币符号作为前缀:

SELECT 

__To_char___(itemrate,'

C99999'

) 

FROM 

itemfile;

5、查itemfile表中itemdesc、re_level列的信息,要求re_level为NULL时显示为0 

itemdesc, 

__NVL__(re_level,0) 

6、完成以下PL/SQL块,功能是:

显示2 

到50的25个偶数。

BEGINFOR__even_number___ 

IN 

__1..25___ 

LOOP 

DBMS_OUTPUT.PUT_LINE(even_number*2);

END 

END;

7、 

完成以下PL/SQL块,功能是:

接受职员编号并检索职员姓名。

将职员姓名存储在变量empname中,如果代码引发VALUE_ERROR异常,则向用户显示错误消息。

DELCARE 

empname 

employee.ename%TYPE;

eno 

employee.empno%TYPE;

BEGIN 

eno:

=’&

employee_number’;

___SELECT 

ename 

INTO 

WHERE 

empno=eno___;

DBMS_OUTPUT.PUT_LINE(‘职员姓名:

’||empname);

___EXCEPTION___ 

WHEN 

VALUE_ERROR 

THEN 

DBMS_OUTPUT.PUT_LINE(‘要存储在变量中的值过大’) 

8、完成以下PL/SQL块,功能是:

使用游标,显示所有单价低于250元的玩具的单价。

DECLARE 

my_toy_price 

toys.toyprice%TYPE;

CURSOR 

toy_cur 

IS 

toyprice 

toys 

toyprice<

250;

___OPEN 

toy_cur___ 

___FETCH 

my_toy_price;

___

EXIT 

toy_cur%NOTFOUND;

DBMS_OUTPUT.PUT_LINE 

(toy_cur%ROWCOUNT 

|| 

玩具单价:

my_toy_price);

LOOP;

CLOSE 

toy_cur;

9、完成以下PL/SQL块,功能是:

使用游标显示销售报表。

如果目标销售额(tsales)大于实际销售额(asales),则显示消息“需提高销售额”。

如果tsales等于asales,则显示消息“已达到销售额”,否则显示消息“销售业绩出色” 

sales_cur 

salesdetails;

_FOR 

sales_rec 

LOOP_ 

IF 

sales_rec.tsales 

>

sales_rec.asales 

DBMS_OUTPUT.PUT_LINE('

产品:

||sales_rec.pid||'

需提高销售额'

ELSE 

_sales_rec.tsales 

sales_rec.asales_ 

已达到销售额'

销售业绩出色'

IF;

10、完成以下PL/SQL块,功能是:

创建一个交换两数的过程。

OR 

REPLACE 

PROCEDURE

swap(p1 

OUT 

NUMBER, 

p2 

__IN 

OUT__ 

NUMBER) 

v_temp 

NUMBER;

p1;

p1 

p2;

v_temp;

11、完成以下PL/SQL块,功能是:

创建一个函数dept_name,其功能是接受职员编号后返回职员所在部门名称。

(注:

部门名称在dept表中,而职员信息在emp表中,职员所在部门号的列名为deptno) 

FUNCTION 

dept_name 

(emp_no 

RETURN 

VARCHAR2 

AS 

dept_no 

NUMBER

(2);

result 

dept.dname%TYPE;

_SELECT 

deptno 

emp 

empno=emp_no;

dname 

result 

dept 

dept_no;

__RETURN 

result;

___ 

EXCEPTION 

OTHERS 

NULL;

12、要执行pack_me包中的order_proc过程(有一个输入参数),假设参数值为’002’,可以输入以下命令:

EXECUTE 

__pack_ma.order_proc(‘002’)__ 

13、完成以下PL/SQL块的功能是:

创建一个触发器biu_job_emp,无论用户插入记录,还是修改EMP表的job列,都将用户指定的job列的值转换成大写。

TRIGGER 

biu_job_emp 

__BEFORE 

INSERT 

UPDATE 

OF 

job 

emp__FOR 

EACH 

ROW__ 

BEGIN:

NEW.job 

=__UPPER(:

NEW.job)_;

试卷三 

复习题 

一、填空题:

1.Oracle 

EnterpriseManager是一个基于 

B/S的框架系统。

2.Oracle数据库的存储结构分为物理结构和逻辑结构。

3.在游标或者游标变量打开后还没有进行第一次提取时,%found属性为null。

在oracle中已commit或rollback作为上一个事务的结束标志及下一个新事物开始的标志。

DML表示数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE. 

6.索引的主要目标是提高访问的速度。

7.在Oracle 

database 

10g 

系统中,可以使用DBCA工具和CREATE 

DATEBASE命令两种方式创建数据库。

命令Startup 

nomount只能启动数据库实例,但不能装载和打开数据库。

9.在输入URL进入Oracle 

Enterprice 

Manager 

Database 

Control 

的时候,必须指出ip地址和端口号 

10.在登录Oracle

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1