Oracle数据库设计期末复习Word文档下载推荐.docx
- 文档编号:17014269
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:36
- 大小:34.15KB
Oracle数据库设计期末复习Word文档下载推荐.docx
《Oracle数据库设计期末复习Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Oracle数据库设计期末复习Word文档下载推荐.docx(36页珍藏版)》请在冰豆网上搜索。
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)
0
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 设计 期末 复习