oracle10g数据库管理应用与开发课后答案.doc

上传人:h**** 文档编号:133975 上传时间:2018-07-09 格式:DOC 页数:25 大小:125.50KB
下载 相关 举报
oracle10g数据库管理应用与开发课后答案.doc_第1页
第1页 / 共25页
oracle10g数据库管理应用与开发课后答案.doc_第2页
第2页 / 共25页
oracle10g数据库管理应用与开发课后答案.doc_第3页
第3页 / 共25页
oracle10g数据库管理应用与开发课后答案.doc_第4页
第4页 / 共25页
oracle10g数据库管理应用与开发课后答案.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、 Oracle 10g 数据库管理应用与开发 课后习题答案(填空与选择题) 填空题 第二章 1.Oracle 数据库系统的物理存储结构主要由 3 类文件组成,分别为数据文件、 日志文件 、控制文件。 2.用户对数据库的操作如果产生日志信息、则该日志信息首先被存储在 日志缓冲区 中,随后由 LGWR 进程保存到 日志文件 。 3.一个表空间物理上对应一个或多个 数据 文件。 4.在 Oracle 的逻辑存储结构中,根据存储数据的类型,可以将段分为 数据段 、索引段、 回退段 、 LOB 段和 临时段 。 5.在 Oracle 的逻辑存储结构中, 数据块 是最小的 I/O单元。 6.在多进程 Or

2、acle 实例系统中,进程分为 用户进程 、后台进程和 服务器进程 。当一个用户运行应用程序,如 PRO*C程序或一个 Oracle 工具(如 SQL*Plus),系统将为用户运行的应用程序建立一个 用户进程 。 第三章 1.标准的 SQL语言语句类型可以分为: 数据定义语句( DDL) 、数据操纵语句( DML)和 数据控制语句( DCL) 。 2.在需要滤除查询结果中重复的行时,必须使用关键字 Distinct;在需要返回查询结果中的所有行时,可以使用关键字 ALL。 3.如果需要在 SELECT 子句中包括一个表的所有列,可使用符号 *。 4.如果定义与组有关 的搜索条件,可以把 gro

3、up by 子句添加到 SELECT 语句中。 5.当进行模糊查询时,就使用关键字 LIKE和通配符 “_“或百分号 “%“。 6.WHERE子句可以接收 FROM子句输出的数据,而 HAVING 子句则可以接收来自 group by、 FROM或 where子句的输入。 7.使下列 SQL语句中添加适当的表达式或子句,使语句可以正常运行。 SELECT 供应商所在城市 ,COUNT(供应商编号 ) FROM 供应商信息 GROUP BY 供应商所在城市 ORDER BY 2 DESC; 第四章 1.在 SQL语句中,用 于向表中插入数据的语句是 Insert。 2.如果需要向表中插入一批已经

4、存在的数据,可以在 INSERT 语句中使用 select语句。 3.创建一个 UPDATE语句来修改 ARTISTS 表中的数据,并且把每一行的 T_ID 值都改成 15,应该使用的 SQL语句是 update artists set t_id=15;。 4.使用 describe 命令可以显示表的结构信息。 5.使用 SQL*Plus 的 get 命令可以将文件检索到缓冲区,并且不执行。 6.当设置了多个列的显示属性后,如果清除设置的显示属性,可以使用命令 clear column,而当要 清除某列具体的显示属性时,需要使用命令 OFF/column 列名 clear。 7.使用 SAVE

5、命令可以将缓冲区中的 SQL命令保存到一个文件中,并且可以使用 Start 命令运行该文件。 8.要设置 SQL*Plus 显示数字时的格式可以使用 NumFormat 命令,而要设置某个数字列的显示格式要使用Column 命令。 第五章 1.在 Oracle 系统中,为了实现对表、视图和索引等数据库对象进行管理, Oracle 采用 模式 实现。 2.一个模式只能够被一个 数据库用户 所拥有,其创建的所有模式对象都保存在自己的 模式 中。 3.Char 数据类型与 Varchar2 类型都用于存储字符串。如果定义了 Char 类型的字段,并且向其赋值时,字符串的长度小于定义的长度,则使用空格

6、填充;而 Varchar2 类型的字段用于存储变长的字符串,即如果向该列赋值的字符长度小于定义时的长度,该列的字符长度只会是实际字符数据的长度,系统不会使用空格填充。 4.ROWID 实际上保存的是记录的 物理地址 ,因此通过 ROWID 来访问记录右以获得最快的访问速度。 5.在 STORAGE子句中可以设置 6 个存储参数。其中, Initial 指定为表中的数据分配的第一个盘区的大小; Next指定为存储表中的数据分配 的第二个盘区大小; Pctincrease 指定从第二个盘区之后,每个盘区相对于上一个盘区的增长百分比; Minextents 指定允许为表中的数据所分配的最小盘区数目;

7、 Maxextents 指定允许为表中的数据所分配的最大盘区数目。 6.通过数据块空间管理参数可以控制数据块中空闲空间的使用方法,其中 Pctfree 用于控制数据块的更新预留的空间,而 Pctused用于控制数据块在删除时释放空间的门槛。 7.为 Student 表手动分配存储空间,并且大小由 NEXT 参数设置,则应使用的语句为 Alter table Student allocate extent; ;如果为 Student 表手动分配了一个大小为 128KB 的新盘区,则应使用的语句为 Alter table Student allocate extent(size 128k); 。

8、8.填写下面语句,使其可以将 Class 表移动到表空间 SYSTEM 中的数据段,并且其初始化盘区为 30KB,第二个盘区为 20KB,随后分配的盘区不会增长。 ALTER TABLE Class move TABLESPACE SYSTEM STORAGE ( Initial 30k Next 20k Pctincrease 0 MAXEXTENTS UNLIMITED); 9.根据约束的作用域,约束可以分为 表级约束 和 列级约束 两种。 列级约束 是字段定义的一部分,只能够应用在一个列上;而 表级约束 的定义独立于列的定义,它可以应用于一个表中的多个列。 10.填写下面的语句,使其可以

9、为 Class 表的 ID列添加一个名为 PK_CLASS_ID 的主键约束。 ALTER TABLE Class Add constraint PK_CLASS_ID PRIMARY KEY(ID) 11.假设已经创建了 CHAINED_ROWS 表,填写下面的语句,以 便对“业务员信息”表进行链接记录分析: ANALYZE TABLE 业务员信息 List chained rows into chained_rows 第六章 1.在使用逗号连接的多表查询中,为了防止出现笛卡儿积,需要 SELECT 语句的 Where 子句中提供连接条件。 2.使用逗号连接的多表查询中,用户可以根据下述基本

10、原则创建需要的各种查询: From 子句应当包括所有的表名,在 Where 子句中应定义一个连接条件,当列名为多个表共有时,列名必须被限制。 3.自然连接 为具有相同名称的列自动进行记录匹配,它不必指定任何同等连接条 件。 4.集合运算符 UNION实现了集合的并运算,操作 INTERSECT 实现了对集合的交运算,而 MINUS 则实现了减运算。 5.使用关键字连接子查询时, EXISTS 关键只注重子查询是否返回行,如果子查询返回一个或多个行,那么便返回为真,否则为假。 第七章 1.PL/SQL程序块主要包含 3 个主要部分:声明部分、可执行部分和 异常处理 部分。 2.使用显式游标主要有

11、 4 个步骤:声明游标、 打开游标 、检索数据、 关闭游标 。 3.在 PL/SQL中,如果 SELECT 语句没有返回列,则会引发 ORACLE错误,并引发 no_data_found异常。 4.自定义异常必须使用 raise 语句引发。 5.查看操作在数据表中所影响的行数,可通过游标的 %RowCount 属性实现。 6.查看下面的程序块, DBMS_OUTPUT 将显示什么结果? N DECLARE var_a CHAR(1):=N; BEGIN DECLARE var_a CHAR(2); BEGIN var_a:=Y; END; DBMS_OUTPUT.put_line(var_a)

12、; END; 7.查看下面的程序块,其中变量 var_b 的结果为 5 。 DECLARE Var_a number:=1200; Var_b number; BEGIN IF var_a500 THEN var_b:=5; ELSIF var_a1000 THEN var_b:=10; ELSE var_b:=8; END IF; END; 8.下列程序计算由 09 之间的任意 3 个不相同的数字组成的三位数,共有多少种不同的组合方式?完成下列程序使其能够正确运行。 DECLARE counter number:=0; BEGIN FOR i IN 1.9 LOOP FOR j IN 0.9

13、 LOOP IF i!=j THEN FOR k IN 0.9 LOOP IF k!=i and k!=j counter:=counter+1; END IF; END LOOP; END IF; END LOOP; END LOOP; DBMS_OUTPUT.put_line(counter); END; 第八章 1.在下面程序的空白处填写一定的代码,使该函数可以获取指定编号的商品价格。 CREATE OR REPLACE FUNCTION get_price (P_ID varchar2) return number is IS v_price NUMBER; BEGIN SELECT

14、单价 into v_price FROM 商品信息 WHERE 商品编号 =P_ID; RETURN v_price; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(查找的商品不存在! ); WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE( 程序运行错误!请使用游标 ); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(发生其他错误! ); END get_price; 2.假设有一个程序包,其中包含了两个重载的函数 max。写出下面程序调用 max 函数后的运

15、行结果。 程序包主体: Create or replace package body TEST is Function max(x in number,y in number) return number is Result number; Begin If xy then Result:=x; Else Result:=y; End if; Return (result) End max; Function max(x in number,y in number,z in number) return number is result number; Begin Result:=test.m

16、ax(x,y); Result:=test.max(result,z); Return(result); End max; End; 运行结果: 21 3.在下面程序的空白处填写适当的代码,使得调用该过程时可以统计某产地的商品数量和总价。 CREATE OR REPLACE PROCEDURE proc_demo( Merch_place IN varchar2, Price_sum out NUMBER, Merch_count out NUMBER) IS BEGIN SELECT SUM(单价 ),COUNT(*) INTO Price_sum,Merch_count FROM 商品信息

17、 WHERE 产地 =Merch_place; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE(所需数据不存在 !); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(发生其他错误 !); END proc_demo; 第九章 1.为了建立外部表,首先需要指示数据文件在操作系统上的位置。现在假设在操作系统的 F:DATAFILE文件夹中存有一个数据文件,使用 create directory exterior_data as F:DATAFILE;语句使 Oracle 可以访问数据文件。 2.在使用 CR

18、EATE TABLE 语句创建索引组织表时,必须使用 organization index 子句指示创建的表为索引组织表,并且为索引组织表指定 主键 。 3.PCTTHRESHOLD 指定一个数据块的百分比,当一行中的数据占用空间大于这个百分比时,该行将被分隔到两个位置存储: 主键 列被存储在基本索引段中,所有其他列被存储在 溢出段 中。 4.Oracle 中的临时表可以分为事务级临时表和会话级临时表,创建事务级别的临时表,需要使用 on commit delete rows 子句;创建一个会话级别的临时表,则需要使用 on commit preserver rows 子句。 5.在创建对象类

19、型时,用户不必特意创建 构造函数 ,它由系统隐式创建,名称与对象类型的名称相同,并且它会接收对象类型的所有属性作为它的参数。 6.如果用户想要对对象类型的实例进行比较排序,则需要使用 映射方法 Map,它最重要的一个特点是:当在WHERE或 ORDER BY 等比较关系子句中使用对象时会被间接地使用。 7.有两种方法向对象表添加数据:一种是像关系表一样在 INSERT的 VALUES 子句中,为对象的每个属性提供值,隐式地创建 对象类型实例 ,向对象表添加数据;另一种方式是显式地创建 对象实例 ,然后再将它添加到对象表。 8.Oracle 数据库提供对表或索引的分区方法有 5 种:范围分区、

20、散列分区 、列表分区、 组合范围散列分区 和 组合范围列表分区 。 9.簇是一种用于存储数据表中数据的方法。簇实际是 一组表 ,由一组共享相同数据块的多个 表 组成。 第十章 1.B树索引可以是 唯一 的或者 不唯一的 , 唯一的 B树索引可以保证索引列上不会有重复的值。 2.在为表中某个列定义 PRIMART KEY约束 PK_ID 后,则系统默认创建的索引名为 PK_ID。 3.在 B树索引中,通过在 索引中保存排过序的 索引列的值 与相对应的 RowID 来实现快速查找。 4.如果表中某列的基数比较低,则应该在该列上创建 位图 索引。 5.如果要获知索引的使用情况,可以通过查询 V$OB

21、JECT_USAGE 视图;而要获知索引的当前状态,可以查询Index_Stats 视图。 第十一章 1.在不为视图指定列名的情况下,视图列的名称将使用 表列的名称 。 2.视图与数据库中的表非常相似,用户也可以在视图进行 INSERT、 UPDATE、和 DELETE操作。通过视图修改数据时,实际上是在修改 基本表 中的数据;相应地,改变 基本表 中的数据也会反映到 该 表产生的视图 中。 3.视图是否可以更新,这取决于定义视图的 SELECT 语句,通常情况下,该语句越复杂,创建的视图可以更新的可能性也就 越小 。 4.下面的语句创建了一个序列对象,该序列对象的开始数为 2,每次递增 2,

22、当大于 1000 后,序列值重新返回到2.在空白处填写适当的代码,完成上述要求。 Create sequence seg_test Start with 2 Increment by 2 Maxvalue 1000 Cycle; 第十二章 1.假设有一个表 TEST,它仅包含一个字段 DATA。现在创建一个触发器,实现将 添加的数据变大写。在下面的空白处填写适当的语句,使之可以正常运行。 Create or replace trigger test_trigger After insert on TEST for each row Begin :new.data:=upper(:new.dat

23、a); End; 2.BEFORE 和 AFTER 指定了触发器的触发时间。当为一个表配置了约束时,它们将会特别有用, BEFORE 可以规定 Oracle 在应用约束前调用触发器,而 AFTER 规定在应用约束后调用触发器。 3.假设有一个名为 ACTION_TYPE的表,它记录了对 STUDENT 表的操作。在空白处填写适当的代码,完成上述功能。 Create or replace trigger biud_student_trigger Before insert or update or delete on student Declare Action action_type.type

24、%type; Begin if inserting then action:=INSERT; elsif updating then action:=UPDATE; elsif deleting then action:=DELETE; end if; insert into action_type value(user,action); End; 第十三章 1.事务的 ACID 特性包括 原子性 、一致性, 隔离性 和永久性。 2.在设置事务隔离层时,需要使用关键字 set transaction。 3.可以用 SET CONSTRAINT constraint_name DEFERRED

25、语句,启用某个约束的 延期应用 ,而使用 SET CONSTRAINT ALL DEFERRED 语句可以设置本事务中所有约束的 延期应用 ;语句 SET CONSTRAINT ALL IMMEDIATE可以设置约束的应用。 4.在众多的事务控制语句中,用来撤销事务的操作的语句为 ROLLBACK,用于持久化事务对数据库操作的语句是 COMMIT。 5.当 Oracle 检测到死锁后,它会选择一个事务退出。选择退出事务的原则是执行修改数目 最小 的事务。 6.锁粒度与数据库系统的并发度和并发控制的开销密切相关。锁粒度越大,数据库中所能够使用的资源也就 越少 ,并发度也就 越小 ,系统开销也就

26、越小 。 7.当对某 个表加 SRX 锁时,则表中行的锁类型为 DML 锁 。 第十四章 1.如果要获取数据库中创建的配置文件的信息,可以通过查询数据字典视图 DBA_profiles。 2.在 Oracle 数据库中将权限分为两类,即 系统权限 和 对象权限 。 系统权限 是指在系统级控制数据库的存取和使用机制, 对象权限 是指在模式对象上控制存取和使用的机制。 3.角色 是具有名称的一组相关权限的组合。 4.连接到数据库的最低系统预定义角色是 connect。 5.在用户连接到数据库后,可以查询数据字典 role_sys_privs 了解用户所具有的系统权限。 第十五章 1.表空间的管理

27、类型可以分为 数据字典管理 和 本地化管理 。 2.在 Oracle 的早期版本中,对撤销信息的管理采用 手动管理撤销 ,从 Oracle 9i后采用 自动撤销管理 方式管理撤销信息。 3.一个表空间具有 离线( OFFLINE)、在线( ONLINE)、只读 (READ ONLY)、 读写( READWRITE) 状态。 4.在创建 UNDO 表空间时,所使用的表空间管理方式为 本地化管理 ,并且盘区的管理方式只允许使用AutoAllOcate 方式。 5.在创建本地化管理临时表空间时,不得指定盘区的管理方式为 AutoAllOcate,临时表空间的盘区管理统一使用uniform 方式。 选

28、择题 第二章 1.下列选项中,哪一部分不是 Oracle 实例的组成部分? C A.系统全局区 SGA B. PMON 后台进程 C.控制文件 D.Dnnn 调度进程 2.在全局存储区 SGA中,哪部分内存区域是循环使用的? B A.数据缓冲区 B.日志缓冲区 C.共享池 D.大池 3.解析后的 SQL语句在 SGA的哪个区域中进行缓存? C A.数据缓冲区 B.日志缓冲区 C.共享池 D.大池 4.如果一个服务进程非正常终止, Oracle 系统将使用下列哪一个进程来释 放它所占用的资源? D A. DBWR B.LGWR C.SMON D.PMON 5.如果服务器进程无法在数据缓冲区中找到空闲缓存块,以添加从数据文件中读取的数据块,则将启动如下哪一个进程? D A. CKPT B.SMON C.LGWR D.DBWR 6.下列关于共享服务器模式的叙述哪一项不正确? A A.在共享服务器操作模式下,每一个用户进程必须对应一个服务器进程 B.一个数据库实例可以启动多个调度进程 C.在共享服务器操作模式下, Oracle 实例将启动调度进程 Dnnn 为用户 进程分配服务进程 D.共享服务器操作模式可以实现少量服务器进程为大量用户进程提供服务

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 参考答案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。