oracle课后题答案总.docx
《oracle课后题答案总.docx》由会员分享,可在线阅读,更多相关《oracle课后题答案总.docx(14页珍藏版)》请在冰豆网上搜索。
oracle课后题答案总
第一章
1、选择题
1.若关系的某一属性组的值能唯一地标识一个元组,我们称之为(B)。
A、主码B、候选码C、外码D、联系
2.以下不属于数据库模式的三要素的是(C)。
A、数据结构B、数据操作C、数据控制D、完整性约束
3.以下对关系性质的描述中,哪个是错误的?
(B)
A、关系中每个属性值都是不可分解的
B、关系中允许出现相同的元组
C、定义关系模式时可随意指定属性的排列次序
D、关系中元组的排列次序可以任意交换
2、填空题
1.数据管理发展的三个阶段是人工管理、文件管理和数据库系统管理。
2.数据库系统的三级模式包括逻辑模式、用户模式、物理模式。
3、思考题
1.数据库管理系统的主要功能有哪些?
1)数据定义功能。
DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。
2)数据存取功能。
DBMS提供数据操纵语言(DML),实现对数据库数据的基本存取操作:
检索,插入,修改和删除。
3)数据库运行管理功能。
DBMS提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。
4)数据库的建立和维护功能。
包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。
5)数据库的传输;DBMS提供处理数据的传输,实现用户程序与DBMS之间的通信,通常与操作系统协调完成。
2.思考关系规范化的过程。
答:
对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。
3.思考数据库设计的步骤。
答:
1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。
第二章
1、选择题
1、Oracle11g不具备的版本是(C)
A.个人版B.标准版C.扩展板D.企业版
2、oracle数据库的数据字典不能做的工作有(B)
A.查找oracle数据库用户信息
B.查找oracle数据库表中的信息
C.查找oracle数据库模式对象的信息
D.查找oracle数据库存储结构的信息
二、填空题
1、Oracle体系结构由内存结构、进程结构和存储结构组成。
2、Oracle数据库中,段包括数据段、牵引段、回滚段和临时段四种。
3、Oracle物理存储结构包含三种数据文件:
控制文件、数据文件和日志文件
三.思考题
1.名词解释:
数据块:
是数据块使用的I/O最小单元,也是最基础的存储单位,又称逻辑块或oracle块。
数据块包括块头和存储区。
区:
是数据存储空间分配的逻辑单元,,在一个段中可以存在多个区间,区间是数据一次性预留的一个较大的存储空间。
段:
是对象在数据库中占用的空间。
从数据库存储的角度来看,段和数据库对象时一一对应的。
一个段只能属于一个表空间,一个表空间可以有多个段。
表空间。
2.Oracle的物理结构主要包括那些类型的文件?
答:
控制文件、数据文件、重做日志文件等操作系统文件等。
第三章
一:
选择题
1.下列操作系统中,不能运行Oracle11g的是(C)。
2.以下不属于Oracle安装前的准备工作的是(C)。
A.对服务器进行正确的网络配置,并且记录IP地址、域名的网络配置信息,如果采用动态IP,需先将MicrosoftLoopBackAdapter配置为系统的主网络适配
B.卸载其他的数据库管理系统
C.如果服务器上运行有其他Oracle服务,必须在安装前将他们全部停止
D.关闭Windows防火墙和某些杀毒软件
二:
填空题
1.卸载Oracle需要经过停止服务、卸载组件和删除遗留成分三个步骤。
数据库监听器的启用有3种方法:
利用EnterpriseManager、用监听器控制实用程序和利用NetManager提供的“监听程序”。
第四章
1、选择题
1、SQL语言中不属于数据定义的命令动词是(C)。
A、CREATEB、DROP
C、GRANTD、ALTER
2、在同样的条件下,下面的哪个操作得到的结果集有可能最多?
(D)
A、内连接B、左外连接
C、右外连接D、完全连接
3、下列操作权限中,在视图上不具备的是(B)。
A、SELECTB、ALTER
C、DELETED、INSERT
2、填空题
1、SQL语言的功能主要包括数据定义、数据操作和数据控制三类。
2、希望删除查询结果集中重复的行,需要使用distinct关键字。
3、常用的统计函数有count、MIN、MAX、sum和AVG。
3、实训题
1、登陆Oracle,进入HR方案,使用DESC和SELECT命令查看各个表的结构以及现有的数据。
代码如下:
(1)a.查看JOBS表的结构:
DESCJOBS;
b.查看JOBS表的部分数据:
SELECT*FROMJOBS;
(2)a.查看EMPLOYEES表的结构:
DESCEMPLOYEES;
b.查看EMPLOYEES表的部分数据:
SELECT*FROMEMPLOYEES;
(3)a.查看表的结构:
DESCDEPARTMENTS;
b.查看DEPARTMENTS表的部分数据:
SELECT*FROMDEPARTMENTS;
(4)a.查看REGIONS表的结构:
DESCREGIONS;
b.查看REGIONS表的部分数据:
SELECT*FROMREGIONS;
(5)a.查看LOCATIONS表的结构:
DESCLOCATIONS;
b.查看LOCATIONS表的部分数据:
SELECT*FROMLOCATIONS;
(6)a.查看COUNTRIES表的结构:
DESCCOUNTRIES;
b.查看COUNTRIES表的部分数据:
SELECT*FROMCOUNTRIES;
(7)a.查看JOB_JISTORY表的结构:
DESCJOB_JISTORY;
b.查看JOB_JISTORY表的部分数据:
SELECT*FROMJOB_JISTORY;
2、在HR方案中进行表的创建、修改和删除(CREATE、DROP、ALTER命令)。
创建表:
CREATETABLEMANAGER(
MANAGER_IDNUMBER2(6)NOTNULLUNIQUE,
FIRST_NAMEVARCHAR2(20),
LAST_NAMEVARCHAR2(25),
DEPT_IDVARCHAR2(10));
修改:
ALTERTABLEMANAGERADDSEXVARCHAR2
(2);
ALTERTABLEMANAGERMODIFYMANAGER_IDUNMBER(8);
删除:
ALTERTABLEMANAGERDROPUNIQUE(MANAGER_ID);
DROPTABLEMANAGER;
3.在HR方案中完成对EMPLOYEES表以及相关各表的各种查询操作(WHERE子句GROUPBY子句以及各种连接等)。
代码如下:
查询:
SELECT*FROM,,;
GROUPBY语句:
SELECTDEPARTMENT_ID,COUNT(*),AVG(SALARY)
FROMEMPLOYEES
GROUPBYROLLUP(DEPARTMENT_ID);
各种连接:
(1)简单连接:
SELECTEMPLOYEES.*,JOBS.*FROMEMPLOYEES,DEPARTMENTS;(连接EMPLOYEES和DEPARTMENTS)
(2)内链接:
SELECT,FROMEMPLOYEESINNERJOINJOBSON=
(3)自然连接:
SELECTEMPLOYEES,,,
FROMEMPLOYEESEMNATURALJOINDEPARTMENTSDEPWHERE=”SALES”
(4)外连接:
SELECT,,
FROMEMPLOYEESEMLEFTOUTERJOINDEPARTMENTSDEP
ON=DEP.DEPARTMENT
WHERE=’IT_PROG’;(左连接)
(5)自身连接:
SELECTEMPLOYEES_ID,LAST_NAME,JOB_ID
FROMEMPOYEES
ORDERBYEMPLOYEE_ID
4.在HR方案中,针对EMPLOYEES表进行数据的创建、修改和删除操作(INSERT、UPDATE、DELETE命令)。
代码如下:
INSERT:
INSERTINTOEMPLOYEESVALUES(‘2001’,’TOM’,’KING’,’SKING’,EMPLOYEES
SETSALARY=SALAY+100
WHEREJOB_ID=”IT_PROG”;(IT_PROG部门的薪水涨100$)
DELETE:
DELETEFROMEMPLOYEES
WHEREFIRST_NAME=’TOM’;(删除真名叫tom的人的信息)
第五章
一、选择题
1、下列属于OraclePL/SQL的数据类型是()。
.
2、下面不属于OraclePL/SQL的参数类型是()。
二、填空题
1、显示游标的处理包括声明游标、打开游标、提取游标和关闭游标4个步骤。
2、包有两个独立的部分:
说明部分和包体部分。
3、触发器的类型包括DML触发器、INSTENDOF触发器和系统触发器。
三、实训题
1、实现一个游标,完成对emplouees表的遍历;
SQL>createorreplaceprocedureshow_all_employees
2as
3emp_rowemployees%rowtype;
4cursoremp_curisselect*fromemployees;--声明游标
5begin
6OPENemp_cur;--打开游标
7LOOP
8FETCHemp_curINTOemp_row;--提取行
9EXITWHENemp_cur%NOTFOUND;
10('雇员ID是:
'||||'姓名是:
'||||''||;
11ENDLOOP;
12CLOSEemp_cur;--关闭游标
13end;
14/
Procedurecreated
SQL>executeshow_all_employees();
2、实现一个过程,完成对emplouees表中job_id为'IT_PROG'的员工salary的增加,增加额度为800;
createorreplaceproceduresalary_add(jobidin%type,addsin%type)
2as
3begin
4updateemployeessetSALARY=SALARY+addswhereJOB_ID=jobid;
5('emploees表中列的'||jobid||'增加的salary为'||adds);
6endsalary_add;
7/
Procedurecreated
SQL>setserverouton;
SQL>EXECUTEsalary_add('IT_PROG',800);
createorreplaceproceduresalary_add
2as
3begin
4updateemployeessetSALARY=SALARY+800whereJOB_ID=’IT_PROG’;
5('为IT_PROG增加工资800’);
6endsalary_add;
7/
Procedurecreated
SQL>setserverouton;
SQL>EXECUTEsalary_add;
3.实现一个函数,完成对EMPLOYEES表中JOB_ID为“IT_PROG的员工SALARY的增加”
createorreplacefunction
incr_emp_salary_func(inrementinnumber)returnboolean
IS
begin
updateemployeessetsalary=salary+inrementwhere
job_id='IT_PROG';
ifsql%notfoundthen
returnfalse;
endif;
returntrue;
end;
Createorreplacefunctionsal_fuc(sal_addinnumberdefault10)returnvarchar2(30)
As
begin
Updateemployeessetsalary=salary+sal_addwherejob_id=’IT_PROG’;
Return‘为IT_PROG的员工增加工资800’;
end;
/
Setserverouton;
Declare
salaryvarchar2(50);
begin
salary:
=sal_fun(800);
(salary);
end;
/
第六章
1.选择题
1.下面属于OraclePL/SQL的数据类型的是(A)
A.DATEC.DATETIME
2.下面不属于OraclePL/SQL的参数类型是(D)
A.InC.inoutD.null
2.填空题
1.显示游标的处理:
声明游标、打开游标、提取游标、关闭游标
2.包的两个独立部分:
说明部分、包体部分
3.触发器的类型包括:
DML触发器、INSTENDOF触发器、系统触发器
第七章
一、选择题
1.createuser命令中的defaulttablespace语句用于下列哪种中设置?
(A)
A、用户创建的数据库对象
B、用户创建的临时对象
C、用户创建的系统对象
D、以上都不对
2.下列哪一种不属于系统权限(A)。
A、SelectB、UpdateAnyC、CreateViewD、CreateSession
3.哪一种操作受表空间配额的限制?
(C)
A、UpdateB、DeleteC、CreateD、以上全是
二、填空题
1.数据库中的权限包括系统权限和对象权限两类。
2.Oracle数据库安全控制机制包括用户管理、权限管理、角色管理、表空间设置和配额、概要文件管理、数据库审计6个方面。
三、实训题
1.创建一个口令认证的数据库用户usera_exer,口令为usera,默认表空间为USERS,配额为10MB,初始账户为锁定状态。
createuserusera_exeridentifiledbyuseradefaulttablesspaceusersquota10monusersaccountlock;
2.创建一个口令认证的数据库用户userb_exer,口令userb。
createuseruserb_exeridentifiledbyuserb;
3.将用户usera_exer的账户解锁。
alteruserusera_exeraccountunlock;
4.为usera_exer用户授权CreateSession权限、的select权限和update权限,同时允许该用户将获取的权限授予其他用户。
grantcreatesessiontousera_exerwithoption;
grantselect,updateontousera_exerwithoption;
第八章
1.选择题
2.创建控制文件时,数据库必须:
(B.未加载)
3.以下哪一种数据字典视图显示出数据库处于ARCHIVELOG方式:
(C.V$DATABASE)
2.填空题
数据库逻辑存储结构包括:
表空间、段、区、数据块四种
数据库物理存储结构是指存储在磁盘上的物理文件,包括:
数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、跟踪文件、口令文件、警告文件、备份文件
建立2个表,一个是stuInfo(学号sno,姓名sname,年龄sage,性别smale,系编号deptNo),一个是department(系编号deptNo,系名称deptName)。
要求:
每个表有主键,stuInfo表建立外键,学生的姓名不能为空,学生的年龄要在18到50之间,学生的性别必须是男女之一,默认是男。
stuInfo表的deptNo列,要参照department表的deptNo列;
11、添加约束:
允许stuInfo中的姓名可以为空;允许stuInfo中的姓名不能重复;创建deptName_check,要求department的系名称列的内容,必须大于4个字符长度;
AltertablestuInfomodifysnamenull;
AltertablestuInfoaddconstraintssname_uniqueunique(sname);
AltertabledepartmentaddconstraintsdeptName_checkcheck(length(deptName)>4);
12、删除约束:
删除刚才建立的department表上的deptName_check约束,删除主键语句;
AltertabledepartmentdropconstraintdeptName_check;
Altertabledepartmentdropprimarykeycascade;
2、创建视图Managers_2,该视图显示出所有部门经理的信息,其中部门显示的不是部门编码,而是部门名称。
提示:
要从employees表和departments表中联合查询,连接条件是两个表中的department_id字段相同。
createviewmanagers_2asselect,,,,,,,fromemployeesemp,departmentsdepwherein(selectdistinctmanager_idfromdepartments)and=;
3.使用GROUPBY子句对薪金记录进行分组,使用SQL函数计算每个JOB_ID的平均薪金(AVG)、所有薪金的总和(SUM),以及最高薪金(MAX)和各组的行数;
Selectjob_id,sum(salary),avg(salary),max(salary),count(job_id)formemployeesgroupbyjob_id;
实现一个函数,完成对employees表中job_id为'IT_PROG'的员工salary的增加,增加额度为800,输出员工所在的部门收入的名次,增加额度作为参数传入
Createorreplacefunctionsal_fuc(sal_addinnumberdefault10)returnvarchar2(30)
As
begin
Updateemployeessetsalary=salary+sal_addwherejob_id=’IT_PROG’;
Return‘为IT_PROG的员工增加工资800’;
end;
/
Setserverouton;
Declare
salaryvarchar2(50);
begin
salary:
=sal_fun(800);
(salary);
end;
/