由于网上找不到此资料,所以只好自己打出来了。仓促间,错误在所难免,请高手修改后,把修改版的资料传到网上共享。命名为“oracle数据库基础(清华大学出版社贾素玲王强主编)课后答案修改版”+8位的日期。
第一章
1,简述ORACLE软件体系结构?
答:ORACLE软件体系结构主要由数据库文件,内存结构和进程构成,全面支持C/S和B/S软件体系下应用程序的开发。
2,Oracle模式对象分为哪些类型?
模式对象包括表,视图,索引,序列,同义词,触发器,过程,函数和包等结构。
3,P28小结第三第四段
4,查询表emp中员工号为7499的员工姓名和工作职位
答:select ename,job
from emp
where empno=7499;
/
5,用PL;/SQL语句在屏幕中输出“Hello!”
答:begin
dbms_output.put_line('Hello!');
end;
/
第二章
1,根据下面数据表设计信息,创建表
答:create table nsrxx
(jsjdm varchar2(8)not null,
nsrmc varchar2(30)not null,
dz varchar2(40)not null,
dh varchar2(8)not null,
fddbr varchar2(15)not null
);
2设计emp表中,奖金为null的员工人数
答:select count(*)
from emp
where comm is null;
3,(1)查询名字中第三个是A的员工姓名。
(2)查询名字中倒数第三个是A的员工姓名。
4略
5执行顺序是where,group by,having,order by
第三章
1,p58第六段
2,根据下面数据表设计信息,创建表。要求删除表yhz中yuzdm时,可以自动删除表yh中所属yhzdm的相关信息。
create table yhz
(
yhzdm varchar2(2)not null,
yhzmc varchar2(10) not null,
constraint yhz_primary
primary key(yhzdm),
);
create table yh
(
yhdm varchar2(10) not null,
yhmc varchar2(10) not null,
yhmm varchar2(10) not null,
yhzdm varchar2(2) not null,
constraint yh_primary
primary key(yhzdm),
constraint yh_foreign
foreign key(yhzdm)
references yhz(yhzdm) on delete cascade
);
desc yhz;
desc yh;
insert into yhz values('&yhzdm','&yhzmc');
insert into yh values('&yhdm','&yhmc','&yhmm','&yhzdm');
select * from yhz;
select * from yh;
3,查询工资高于平均工资水平的员工姓名和工资。
答:select ename,sal
from emp
where sal>(select avg(sal) from emp);
4,(1)有两个列约束,当插入的新数据中电话号码或者邮件地址相同时会产生冲突。
(2)有一个表约束,当插入的新数据中电话号码和邮件地址同时相同时会产生冲突。
5,笛卡尔积查找的几个关系中的列可以不同,
并操作查找的几个关系中的列需要相同。
第四章
1,参考P85.
2,在第三章习题二的基础上,创建视图,该视图可以根据yhdm查询yuzmc。
答:create view yhz_yh
as
select a.yhzdm, a.yhmc, b.yhdm, b.yhmm, b.yhmm, b.yhzdm
from yhz a,yh b
where a.yhzdm=b.yhzdm;
select * from yhz_yh;
select yhzmc from yhz_yh where yhdm='&yhdm';
3,某系统需要文书序列号管理,创建序列。文书号从1开始,最大文书号位10000,可循环使用。
答:假设该系统book表已经建立
alter table book add (no number);
create sequence book_seq
increment by 1
start with 1
maxvalue 10 000
cycle;
select c_emp.nextval from dual;
select c_emp.currval from dual;
4,可以,用P98 grant命令
5,静态数据字典:这类数据字典主要是由表和视图组成
数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
静态数据字典中的视图分为三类,它们分别由三个前缀构成:user_*、 all_*、 dba_*。
1.
该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
1.
该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
1.
该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限
第五章
1,编写程序,程序的功能是输入员工号,如果该员工工龄在25年以上,工资提高10%
答:
declare
v_empno emp.empno%type:=&v_empno;
v_sal emp.sal%type;
v_hiredate emp.hiredate%type;
begin
select hiredate
into v_hiredate
from emp
where empno=v_empno;
if ((sysdate-v_hiredate)/365)>25 then
update emp
set sal=sal*1.10
where empno=v_empno;
dbms_output.put_line('sal ok!');
else
update emp
set sal=sal
where empno=v_empno;
dbms_output.put_line('others ok!');
end if;
end;
/
2,编写程序,程序的功能是输入员工号,输出该员工经理的姓名。
答:
declare
v_empno emp.empno%type:=&v_empno;
e1_ename emp.ename%type;
begin
create table emp1 as select * from emp;
select e1.ename
from emp e,emp1 e1:
where empno=v_empno and e.mgr=e1.empno;
dbms_output.put_line(e1_ename);
end;
/
3,静态SQL和动态SQL的区别是什么?
静态SQL是指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是明确对象。
动态SQL是指在PL/SQL块中使用的SQL语句在编译时是不明确的,要根据用户输入的参数的不同而执行不同的操作。
4,集合包含哪些类型?
集合包含索引表,嵌套表,可变数组。
5,输出:54321
第六章
1,P129表6—1
2,用显示游标编写程序,程序的功能是计算每一个部门的平均工资。
答:
declare
cursor c_dept is select * from dept order by deptno;
cursor c_emp(p_dept emp.deptno % type) is select ename,sal from emp where deptno=p_dept
order by ename;
r_dept dept % rowtype;
v_ename emp.ename % type;
v_salary emp.sal % type;
v_avg_salary emp.sal % type;
begin
open c_dept;
loop
fetch c_dept into r_dept;
exit when c_empt % notfound;
dbms_output.put_line(‘department:’||r.dept.deptno||’-’|| r_dept.dname);
v_avg_salary:=0;
open c_emp(r_dept.deptno) ;
loop
fetch c_emp into v_ename,v_salary;
exit whern c_emp % notfound;
dbms_output.put_line(‘name:’|| v_ename || ’salary:’ ||v_salary);
v_avg_salary:=v_avg_salary + v_salary;
end loop
close c_emp;
dbms_output.put_line(‘average salary for dept: ’|| v_avg_salary);
end loop;
close c_dept;
end;
/
3,用cursor for 编写上面的程序。
答:
declare
cursor c_dept is select deptno,dname from dept order by deptno;
cursor c_emp(p_dept emp.deptno % type) is
select ename,sal
from emp
where deptno=p_dept
order by ename;
v_avg_salary emp.sal % type;
begin
for r_dept in c_dept loop
dbms_output.put_line(‘department:’|| r.dept.deptno|| ’-’ || r_dept.dname);
v_avg_salary:=0;
for r_emp in c_emp(r_dept.deptno) loop
dbms_output.put_line(‘name:’|| r_emp.ename || ’salary:’ || r_emp.sal);
v_avg_salary:=v_avg_salary + r_emp.sal;
end loop;
dbms_output.put_line(‘average salary for dept: ’|| v_avg_salary);
end loop;
end;
/
4,程序中触发异常的条件
(1)当输入的员工号小于7000或者大于8000;
(2)没有找到记录;
(3)在提取时,返回行数超过一行。
5,抛出异常的三种方式
(1)预定义异常,在PL/SQL运行时抛出;
(2)自定义异常,用户使用RAISE语句抛出;
(3)ORACLE还为异常定义了错误代码和错误信息,因此用户还可以通过调用raise_appplication_error抛出异常。
第七章
1,P152参考mode的三种形式 in, out, in out。
2,参考
create or replace package P_emp as
version varchar2(11):=’version 1.0’;
author varchar2(15):=’buaa sem 108 xk’;
procedure A(v_deptno emp.deptno%type);
function B(v_empno emp.empno%type)return B_integer;
end P_emp;
3,设EMP中部门为20的员工有N个,则系统输出N次“trigger executed!”
4,触发器没有执行,数值没有改变。
5,处罚期的工作原理:触发器与一个表或者数据库事件联系在一起的,当一个触发器事件发生时,定义在表上的触发器被触发,可以设置为在触发器事件之前或之后触发执行,能够触发事件包括三种:DDL事件,DML事件和数据库事件。
第八章
1,P175保持应用程序的完整性,采取回滚的机制。
2,p179
3,P181表8—3
4,定义参数文件
文件名:export.dat
文件内容:
userid=scott@sem108
buffer=4096
file=f:/20100627.dmp
tables=nsrxx
执行文件
exp parfile=f:/export.dat
5,参考P197
第九章
数据库的设计工作主要包括一下三个环节:
1,模式对象设计:包括表设计,视图设计,索引设计,序列设计和同义词设计。
2,功能设计:包设计,触发器设计和异常处理设计。
3,安全设计:角色设计和备份计划设计。
本文来源:https://www.2haoxitong.net/k/doc/800f618ad0d233d4b14e699b.html
文档为doc格式