ORACLE 11g教程 数据库应用简明教程

更新时间:2024-01-17 07:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章 填空题

1. oracle数据库从存储结构上可以分为__物理存储结构____和__逻辑存储结构___.

2. 在oracle数据库中,_数据文件__是指存储数据库的文件,数据库中的所有数据最终都保存在_数据文件_中。

3. Oracle数据库从逻辑存储结构上可以分为表空间、_段___、区、_块___。一个数据库实例由多个表空间组成,一个表空间由多个__段__组成,一个__段__有多个区组成,一个区由多个__块__组成。

4. 将日志缓冲区的日志信息写入日志文件的后台进程是__LGWR__,如果数据库实例运行在归档模式下,则日志文件中的内容将会被__ARCn__进程写入归档日志。

5. oracle数据库的物理存储结构主要有数据库文件、__控制文件__和_日志文件___这3种类型的文件组成。 6. 如果一个服务器进程非正常终止,由oracle系统会使用__PMON__进程来释放他所占用的资源。

7. oracle数据库中,段主要可以分为数据段、_索引段___、_临时段___和_回退段___。 二、选择题

1.下面对数据库文件的叙述中,正确的是C A、一个表空间只能对应一个人数据库文件 B、一个数据文件可以对应多个表空间 C、一个表空间可以对应多个数据库文件

D、数据库文件存储了数据库中的所的日志信息 2.下面对数据库逻辑存储结构叙述中,正确的是__AB__ A、一个数据库实例由多个表空间组成 B、一个人段由多个区组成 C、一个人区由多个段组成 D、一个人块由多个区组成

3.下面哪种后台进程用于将数据缓冲区中的数据写入数据文件?__B__ A、LGWR B、DBWn C、 CKPT D、ARCn

4.系统全局区包括下面那些区域?__ACD__ A、java池 B、软件代码区 C、数据缓冲区 D、日志缓冲区

5.解析后的sql语句会缓存到下面的SGA哪个区域中?_C___ A、java池

B、大型池 C、 共享池 D、数据缓冲区 三、简答题

1.简述oracle物理存储结构中的数据文件、控制文件与重做日志文件的作用。 答:

数据文件(Data File)是指存储数据库数据的文件

控制文件(Control File)是一个很小的二进制文件,用于描述和维护数据库的物理结构

重做日志文件(Redo Log File)是记录数据库中所有修改信息的文件,简称日志文件

2.简述oracle逻辑存储结构中的表空间、段、区、块之间的关系。 答:

表空间是Oracle中最大的逻辑存储结构,它与物理上的一个或多个数据文件相对应,每个Oracle数据库都至少拥有一个表空间,表空间的大小等于构成该表空间的所有数据文件大小的总和。一个或多个区组成一个段,所以段的大小由区的个数决定。不过,一个数据段可以包含的区的个数并不是无限制的,它由如下两个参数决定

3.简单介绍LGWR进程与ARCn进程的作用。 答: LGWR(Log Writer,日志写入)进程,是负责管理日志缓冲区的一个后台进程,用于将日志缓冲区中的日志数据写入磁盘的日志文件中

ARCn(Archive Process,归档)进程,用于将写满的日志文件复制到归档日志文件中,防止日志文件组中的日志信息由于日志文件组的循环使用而被覆盖。

4.如果想要了解数据库中所有的表的信息,应使用那种数据字典? 答:

dba_tables数据字典

5.DBWn进程所采用的LRU算法应该怎样理解

LRU算法是数据缓冲区的一种管理机制,只保留最近的数据,不保留旧数据,所以DBWn进程可以使用LRU算法将最近使用的数据块保留在内存中。

3.5习题

一、填空题 1.查看表结构时,所使用的命令是__ DESCRIBE ___,该命令可以简写为___ DESC _____。

2.使用SQL*Plus语句块编辑SQL语句时,可以使用的命令有APPEND(可以简写为A)命令、__ CHANGE ___(可以简写为C)命令、__ INPUT ___(可以简写为I)命令、___ LIST _____(可以简写为L)命令 ,以及RUN(可以简写为R)命令。

3.在SQL*Plus工具中,可以使用SAVE命令将缓冲区内容保存到文件;可以使用___ START ____命令读取并运行文件内容;可以使用___ EDIT ____命令编辑缓冲区内容或文件内容;还可以使用SPOOL命令复制输出结果到文件。

4.在SQL语句中,如果在某个变量前面使用了&符号,那么就表示该变量是一个临时变量,定义变量,可以使用___ DEFINE ____或ACCEPT命令;删除变量,可以使用UNDEFINE命令。

5. 在SQL*Plus中格式化查询结果时,COLUMN命令可以格式化对列的显示效果,PAGESIZE命令可以__设置一页显示多行数据____,LINESIZE命令可以__设置一行显示多少个字符___。

6.创建简单报表时,使用___ TTITLE ____命令和____ BTITLE ____命令,分别为报表设置页眉和页脚信息。 二、选择题

1. 在SQL*Plus中链接数据库时,可以使用CONNECT命令。下面的4个选项中,哪几个命令是正确的?其中,用户名为scott,密码为tiger,数据库名为orcl。____D________

A.CONNECT scott/tiger; B.CONNECT tiger /scott;

C.CONN scott/tiger as sysdba;

D.CONN scott/tiger@orcl as sysdba;

2.执行语句SAVE scott_emp_query.sql APPEND,执行结果表示_____C_____。 A.如果scott_emp_query.sql文件不存在,则出现错误 B.如果scott_emp_query.sql文件已经存在,则出现错误

C.将缓冲区中的内容追加到scott_emp_query.sql文件中,如果该文件不存在,会创建该文件

D.将缓冲区中的内容替换掉 scott_emp_query.sql文件的内容,如果该文件不存在,会创建该文件

3.使用SQL*Plus中的____B_______,可以将文件中的内容检索到缓冲区,并且不执行。 A.SAVE命令 B.GET命令 C.START命令 D.SPOOL命令

4.下面是有关变量的描述,请问哪些描述是正确的?_____C__________ A.临时变量是指仅在某个SQL语句中有效的变量 B.临时变量实在某个会话期间有效的变量 C.已定义变量是指明确定义,其生命期至显式地删除、重新定义或退出SQL*Plus为止

D.已定义的变量是不能被删除的

5.如果希望控制列的显式格式,那么可以使用下面的____D____________命令 A.SHOW B.DEFINE C.SPOOL D.COLUMN 三、简答题

1.使用DESCRIBE命令,查看scott用户的dept表的结构信息。 答:DESCRIBE scott.dept;

2.使用SAVE命令将缓冲区内容写入到e:\\test.sql文件中;然后使用START命令将文件中的内容读入到缓冲区,并且进行执行。 答:SAVE e:\\test.sql;START e:\\test.sql;

3.执行下列语句,观察输出结果;

DEFINE temp=5000

SELECT empno ,ename,mgr FROM scott.emp WHERE sa1>=&temp;

答:输出结果为:

员工编号 员工姓名 上级编号 7839 KING

4.对 scott用户的emp表的输出信息进行格式设置,其中,empno列设置标题为“员工编号”,NUMBER格式为9999;ename列设置标题为“员工名称”,格式设置为25个;hiredate列设置标题为“受雇日期”,并且标题居中显示。 答:COLUMN empno HEADING ‘员工编号’ FORMAT 9999

COLUMN ename HEADING ‘员工姓名’ FORMAT A25

COLUMN hiredate HEADING ‘受顾日期’ JUSTIFY GENTER SELECT empno , ename , hiredate FROM scott.emp ;

5.设置一页显示30行数据,并且设置一行显示130个字符,然后输出scott用户的emp表的全部信息。 答:SET PAGESIZE 30

SET LINESIZE 130

SELECT * FROM scott.emp;

Oracle第四章课后习题以及答案 一、 填空题

1. 在创建永久性性表空间是,需要使用datafile关键字指定其数据文件,而如

果是创建临时表空间时,则应该使用___关键字为其指定临时文件。(TEMPFILE)

2. 表空间的状态属性主要有ONLINE__ , ___和__。(OFFLINE,READ ONLY,.READ WRITE)

3. 数据文件的状态属性主要有ONLINE ___和__。(OFFLINE,OFFLINE DROP) 4. 创建临时表空间需要使用TEMPORARY关键字,创建大文件表空间需要使用___关键字,创建撤销表空间需要使用___关键字。(BIGFILE,UNDO) 5. oracle中用户默认的永久表空间为___,默认的临时表空间为temp。(users) 6. oracle中管理撤销表空间的方式有回退段撤销管理和____。(自动撤销管理) 二、

1、下面那些不属于表空间的状态属性(CD) A.ONLINE B.OFFLINE

C.OFFLINE DROP D.READ

2.将表空间的状态切换为OFFLINE时,可指定下面那种切换方式(ABD) A.NORMAL B.IMMEDIATE C.TEMP

D.FOR RECOVER

3.在表空间space中没有存储任何数据,现在删除该表,并同属删除其对应的数据文件,可使用下面哪条语句(C) A.DROP TABLESPACE space;

B.DROP TABLESPACE space INCLUDING DATAFILE;

C. .DROP TABLESPACE space INCLUDING CONTENTS AND DATAFILE; D. DROP TABLESPACE space AND DATAFILE; 4.使用下列语句创建一个临时空间表temp CREATE___TABLESPACE space

_____’‘F:\\oraclefile\\temp.dbf’ SIZE 10MB AUTOEXTEND ON NEXT 2M

MAXSIZE 20M;

从下面的选项中中选择正确的关键字补充上面的语句(C) A.(不填)、DATAFILE B.TEMP、TEMPFILE

C.TEMPORARY、DATAFILE D. .TEMP、DATAFILE

5.将临时表空间设置temp设置为临时表空间的正确语句为(B) A.ALTER DATASPACE DEFAULT TABLESAPCE temp;

B.ALTER DATASPACE DEFAULT TEMPORARY TABLESAPCE temp; C. ALTER DEFAULT TEMPORARY TABLESAPCE TO temp; D. ALTER DEFAULT TABLESAPCE TO temp;

6.如果当前数据库实例中有一个临时表空间里组group1,该组中有一个临时表空间temp1,先使用下列语句修改temp1表空间所在组为 group2: ALTER TABLESPACE temp1 TABLESPACE GROUP group2; 对执行上述语句说法正确的是(BD)

A.由于数据中不存在group2组,因此执行将失败

B.上属语句执行成功,temp2表空间将被移动到group2组中

C.执行上述语句后,数据库实例中将存在两个临时表空间组:group1和group2 D. .执行上述语句后,数据库实例中将只存在一个临时表空间组:group2 三、简答题

1.表空间的状态有哪几种,它们分别表示什么意思? 答:

表空间的状态分别有如下几种:

1) 在线(ONLINE):当表空间的状态为ONLINE时,才允许访问该表空间中的数据。

2) 离线(OFFLINE):当表空间状态为OFFLINE时,不允许访问该表空间中的数据。

3) 只读(READ ONLY):当表空间的状态为READ ONLY时,虽然可以访问表空间中的数据,但访问仅仅限于阅读,而不能进行任何更新或删除操作。 4) 读写(READ WRITE):当表空间的状态为READ WRITE时,可以对表空间进行正常访问,包括对表空间中的数据进行查询、更新和删除等操作。

2.如果初始化参数为db_block_size的值为16KB,那么还能设置

db_16k_cache_size的参数的值么?请结合本章的学习内容,创建一个非标准数据块表空间,并简述其步骤。 答: 不能。

(1) 使用SHOW PARAMWTER 语句查看数据缓冲区参数db_16k_cache_size

的值: SHOW PARAMWTER db_16k_cache_size

(2) 使用ALTER SYSTEM 语句修改参数db_16k_cache_size 的值: ALTER SYSTEM SET db_16k_cache_size=20M; (3) 创建表空间 non,指定其数据块大小为16KB:

CREATE TABLESPACE non

DATAFILE ‘F:\\ORACLE\\non.dbf’ SIZE 5M

BLOCKSIZE 16K;

3在实际应用中,需要临时创建一个表来使用,那么是否可以将该表创建在临时表空间中? 答:不需要,如果是创建临时表的话,一般如果内容部是很大不会有很明显的影响,而且使用完之后系统会自动删除临时表。

4在oracle中,对表空间的使用与管理非常重要。请创建一个表空间,然后对表空间的数据文件进行增加,删除和移动等管理,巩固本章所学的知识。 答:

创建表空间:(创建永久性表空间 myspace) CREATE TABLESPACE myspace

DATAFILE ‘E:\\myspace.dbf’ SIZE 20M

AUTOEXTEND ON NEXT 50M MAXSIZE 100M;

在表空间中增加数文件:(myspace表空间中在增加E:\\目录下增加一个数据文件,名为myspace01.dbf) ALTER TABLESPACE myspace ADD DATAFILE

‘E:\\myspace01.dbf’ SIZE 10M

AUTOEXTEND ON NEXT 5M MAXSIZE 70;

删除表空间中数据文件:(删除myspace表空间数据文件E:\\myspace01.dbf) ALTER TABLESPACE myspace

DROP DATAFILE ‘E:\\myspace01.dbf’;

移动表空间中数据文件:(将myspace01.dbf从目录‘E:\\’移到目录‘F:\\’) ALTER TABLESPACE myspace

RENAME DATAFILE ‘E:\\myspace01.dbf’ TO ‘F:\\myspace01.dbf’

一、 填空题:

1. 按照约束的用途,主要可以将表的完整性约束分为NOT NULL约束、_____UNIQUE约束_______、__PRIMARY KEY约束__________、___CHECK约束_________和__FOREIGN KEY约束__________。

2. 使用____TRUNCATE________关键字,可以快速删除表中的所有记录,并且不在撤销表空间中记录撤销数据。

3. ___NOT NULL_________约束用于定义列中不能出现NULL值,___UNIQUE_________约束用于定义列中不能出现重复值,而PRIMARY KEY约束则可以定义列中既不予许出现NULL值,也不允许出现重复值。

4. 如果要清除索引中的存储碎片,可以对索引进行合并或___重建_________。 视图中的列并不都支持DML操作,通过数据字典

__user_updatable_columns__________可以了解视图中那些列是可更新的。 5. 使用__currval__________可以获取序列的当前值,使用____nextval________可以获取下一个值。 二、 选择题:

1. 存储数据123.45,可以使用下面哪种数据类型?____AD________ A. NUMBER B. NUMBER(5) C. NUMBER(5,3) D. NUMBER(5,2)

2. 如果某列定义了UNIQUE约束,则____AD________ A. 该列不允许出现重复值。 B. 该列不允许出现NULL值。

C. 该列内允许出现一个NULL值。 D. 该列允许出现多个NULL值。

3. 为定义一个CHECK约束,希望该约束能对表中已存储的数据,以及以后向表中添加或修改的数据都进行检查,则应该将该约束设置为如下哪种状态?____A________ A.ENABLE VALIDATE B.ENABLE NOVALIDATE C.DISABLE VALIDATE D.DISABLE NOVALIDATE

4. 使用如下语句创建一个视图: CREATE VIEW test_view AS

SELECT stu.studname,stu.stuage+1 newage,cla.claname

FROM student stu LEFT JOIN class cla ON stu.claid=cla.claid; 请问test_view视图中那些列是可更新的?____A________ A.stuname

B.stuname、newage C.stuname、claname

D.stuname、newage、claname 5.如果创建一个序列,用于为表的主键列生成主键值,则创建该序列时不应该指定以下哪种参数?___D_________ A.MAXVALUE 1000 B.MINVALUE 10 C.CACHE 10 D.CYCLE

6.如果在创建序列时指定其CACHE参数值为10,当序列的当前值为5时,数据库突然关闭,再次运行数据库后,序列将从以下哪个值开始?__C________ A.5 B.6 C.11 D.16 三、简答题:

1.比较VARCHAR2与CHAR两种数据类型的区别,并举例说明分别在什么情况下使用这两种数据类型。

答:CHAR的长度是固定的,VARCHAR2的长度是可以变化的, VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些

2.创建一个表后,为表中的某列添加CHECK约束,并分别设置该约束的状态为4中不同的状态,比较这4中状态下的约束检查效果。 答:

3.如果经常需要使用如下语句查询employee表中的员工信息: SELECT * FROM WHERE SUBSTRB(ename,0,2)=’李’; 那么应该为ename创建什么索引,如何创建?

答:创建一个带有SUBSTRB函数的基于函数的索引 create index emp_ename_SUBSTRB on eemp ( SUBSTRB(ename,0,2) );

这样在执行上面的查询语句时,这个基于函数的索引将排上用场,执行计划将是(INDEX RANGE SCAN)。

4.如果对视图的基表进行结构上的改动,将会影响视图的可用性。请基于一个表创建一个视图,在视图的子查询语句中使用*查询基表的所有列,然后对该表进行结构修改,例如增加列、删除列、修改列名等,测试不同情况下视图的可用性,并思考其中的原因。 答:

5. 思考在实际应用中使用同义词的好处:

答:一:应用程序开发可以不管数据库的具体对象名

二:避免应用程序直接访问数据库对象,提高数据库安全性 三:简化数据库对象的访问。

一、 填空题

1.备份控制文件主要有两种方式: 和备份成脚本文件。

2.通过数据字典v$datafile可以产看数据文件信息,通过数据字典 可以查看控制文件信息,通过数据字典 可以产看日志文件信息。 3.Oracle数据库的运行模式有归档模式和 模式两种,Oracle数据库默认为非归档模式,数据库管理员可以执行 语句,将数据库的运行模式的运行模式设置为归档模式。

4.如果在创建控制文件时使用了RESRTLOGS选项,则应该执行 语句打开数据库。

5.使用ALTER SYSTEM语句修改参数值时,可以使用SCPOE选项, 该选项有

MEMORY、 和 3个可选值。 二、选择题

1.下面对日志文件及其成员叙述正确的是 。 A.日志文件组中可以没有日志成员 B.日志文件组中的日志成员大小一致

C.在创建日志文件组时,其日志成员可以是已经存在的日志文件 D.在创建日志文件组时,如果日志成员已经存在,则使用REUSE关键字就一定可以成功替换该文件

2.当日志文件组处于哪种情况时,无法清空该日志文件组? A.ACTIVE B.INACTIVE C.CURRENT D.UNUSED

3.下面哪条语句用于切换日志文件组? A.ALTER DATABASE SWITCH LOGFILE; B.ALTER SYSTEM SWITCH LOGFILE; C.ALTER STSTEM ARCHIVELOG; D.ALTER DATABASE ARCHIVELOG;

4.删除日志文件组5种的日志文件E:\\orcl\\datafile\\redo05.log,其中正确的语句是 。

A.ALTER DATABASE DROP LOGFIL’E:\\orcl\\datafile\\redo05.log’;

B.ALTER DATABASE DROP LOGFILE GROUP 5’E:\\orcl\\datafile\\redo05.log’; C.ALTER DATABASE DROP KOGFILE MEMBER’E:\\orcl\\datafile\\redo05.log’; D.ALTER GROUP 5DROP LOGFILE’E:\\orcl\\datafile\\redo05.log’; 5.修改系统中的参数值时,如果只修改服务器参数文件中的设置,则SCOPE选项的值应该为 。

A.SPFILE B.MEMORY C.BOTH D.以上都不对 三、简答题

1.控制文件在数据库中有什么作用?在创建控制文件时应该注意哪些问题? 2.日志文件组中的日志成员大小应该一致吗?为什么? 3.日志文件组有哪几种状态,它们分别表示什么含义?

4.简述清空日志文件组以及删除日志文件组或日志成员时应该注意哪些问题。 5.件数归档模式与非归档模式的区别。 答案:

一、填空题

1.备份为二进制文件

2.v$controlfile、v$logfile 3.ALTER DATABASE ARCHIVELOG

4.ALTER DATABASE OPEN RSEETLOGS 5.SPFILE、BOTH 二、选择题

1.B 2.C 3.B 4.C 5.A

1. 如果需要在SELECT 子句包括一个表的所有列, 可以使用符号 * 。

2.WHERE子句可以接收FROM子句输出的数据;而HAVINGZ子句可以接收来FROM,WHERE或ORDER BY子句的输出的数据。

3.在SELECT语句中,分组条件的子句是GROUP BY,对显示的数据进行排序的子句ORDER BY。

4.在DML语句中,INSERT语句可以实现插入记录,UPDATE语句可以实现更新记录,DELETE语句和TRUNCATE语句可以实现删除记录。

5.CHR函数可以返回某个数值的ASCII值,ASCII函数可以反悔某个ASCII值对应的十进制数。

6.使用TO_CHAR函数,可以把数字或日期类型的数据转换成字符串;使用TO_DATE函数,可以把字符串转换成日期数据,默认的日期格式为DD-MON-YY。 二、选择题

1.查询scott用户的emp表中的总记录数,可以使用下列哪个语句?BD A.SELECT MAX(empno) FROM scott.emp; B.SELECT COUNT(empno) FROM scott.emp; C.SELECT COUNT(comm) FROM scott.emp; D.SELECT COUNT(*) FROM scott.emp;

2.为了取出结果集中的重复行,可以再SELECT语句中使用下列哪个关键字?B A.ALL

B.DISTINCT C.UPDATE D.MERGE

3.在SELECT语句中,HAVING子句的作用是。B A.查询结果的分组条件 B.组的筛选条件

C.限定返回的行的判断条件 D.对结果集进行排序

4.下列哪个聚合函数可以把一个列中的所有值相加求和?D A.MAX函数 B.MIN函数 C.COUNT函数 D.SUM函数

5.如果要统计表中有多少行记录,应该使用下列哪个聚合函数?C A.SUM函数 B.AVG函数 C.COUNT函数 D.MAX函数 三、简答题

1.标准SQL语言的语句类型可以分为哪三大类,每种语句类型分别用来操纵哪些语句?

2.列举几个在WHERE条件中可以使用的操作符。

3.如果要按照降序对数据进行排序,应该在ORDER BY子句中使用哪个关键字? 4.下面这个SELECT语句能否输出查询结果?如果不能,该如何修改? SELECT empno , ename . deptno , COUNT(*) FROM scott.emp0 GROUP BY deptno ; 5.指定一个日期值,例如 08-8 月 -2008,获得这个日期与系统当前日期之间相隔的月份数和天数。

8.5习题

一.填空题

1.在SELECT语句的WHERE子句中可以使用子查询,表示将 子查询返回的结果 作为外部的WHERE条件。 2.在子查询的SELECT语句中,可以指定FROM子句、 WHERE 子句、 GROUP BY 子句和HAVING子句等,但是有些情况下不能指定 ORDER BY 子句。 3.使用IN操作符实现指定匹配查询;使用 ANY 操作符实现任意匹配查询;使用 ALL 操作符实现全部匹配查询。

4.在关联子查询中可以使用 EXISTS 或 NOT EXISTS 关键字。

5.常用的表的链接类型有 INNER JOIN (内连接)、 OUTER JOIN (外连接) CROSS JOIN (交叉连接)。

6.集合运算符 UNION 实现了集合的并运算;集合运算符INTERSECT实现了对集合的交运算;而集合运算符 MINUS 则实现了集合的减运算。

二.选择题

1.下面哪些语句在执行时不会返回错误信息,而显示检索结果? BD

A. SELECT empno , ename FROM scott.emp WHERE deptno = ( SELECT deptno FROM scott.dept WHERE dname NOT IN (‘SALES’) );

B. SELECT empno , ename FROM scott.emp WHERE deptno = ( SELECT deptno FROM scott.dept WHERE dname IN (‘SALES’) ) ;

C. SELECT empno , e.deptno , dname FROM scott.emp e , scott.dept d ; D. SELECT empno , deptno, dname FROM scott.emp , scott.dept ;

2.使用关键字进行子查询时, D 关键字只注重子查询是否返回行。如果子查询返回一个或多个行,那么将返回真,否则为假。

A. IN B. ANY C. ALL D. EXISTS

3.使用简单链接查询两个表,其中一个表有5行记录,另一个表有28行记录。如果未使用WHERE子句,则将返回多少行? D

A. 33 B. 23 C. 28 D. 140

4. C 为具有相同名称的列字段进行记录匹配,不必指定任何同等链接条件。

A. 等值连接 B. 不等连接 C. 自然连接 D. 交叉连接 5.SQL/92标准可以使用USING关键字来简化连接查询,但是 只有在查询满足下面的 AB 条件时,才能使用USING关键字来简化。 A.查询必须是等值连接

B.等值连接中的列必须具有相同的名称和数据类型 C.FROM子句应当包括所有的表名

D.如果在连接查询时使用了两个表中相同的多个列,那么就可以再USING子句中指定多个列名

三.简答题

1.子查询有哪3种子类型? 答:子查询有下面3种子类型:

1多列子查询:向外部的SQL语句返回多列。 ○

2关联子查询:引用外部的SQL语句中的一列或多列。 ○

3嵌套子查询:在子查询中包含有子查询。 ○

2.对scott用户的emp进行操作,在SELECT语句中使用子查询,获得每个部门中工资最高的员工信息。 答:

SQL>SELECT empno , ename , sal , deptno , dname FROM scott.emp outer 2 WHERE sal = (SELECT MAX(sal) FROM scott.emp inner 3 WHERE inner.deptno = outer.deptno);

3.外连接(OUTER JOIN)可以分为哪3种类型? 1左外连接 ○

2右外连接 ○

3全外连接 ○

4对scott用户的emp表和dept表进行操作,使用内连接(INNER JOIN)方式,检索sales部门的员工信息。 答:

SQL>SELECT empno , ename , sal , d.deptno , dname

2 FROM scott.emp e INNER JOIN scott.dept d ON e.deptno = d.deptno 3 WHERE dname = ‘sales’;

5.在进行集合操作时,使用哪些操作符,分别获取两个结果集的并集、交集和差集?

答:分别是UNION,INTERSECT,MINUS.

9.8 习 题

一、 填空题

1. PL/SQL程序块一般包括DECLARE部分、BEGIN?END部分和 部分。 2. PL/SQL程序块中的赋值符号位 。

3. 在声明常量时需要使用 关键字,并且必须为常量赋初始值。 4. 使用游标一般分为声明游标、 、 和关闭游标这几个步骤。 5. 如果程序的执行部分出现异常,那么程序将跳转到 部分对异常进行处理。

二、选择题

1. 下面哪些是合法的变量名?

A. _number01 B. number01 C. number-01 D. number 2. 使用下列哪条语句可以正确地声明一个常量? A. name CONSTANT VARCHAR2(8); B. name VARCHAR2(8) :=’CANDY’;

C. name VARCHAR2(8) DEFAULT ‘CANDY’; D. name CONSTANT VARCHAR2(8) :=’CANDY’; 3. 有如下PL/SQL程序块:

SQL> DECLARE

2 a NUMBER := 10 ; 3 b NUMBER := 0 ; 4 BEGIN

5 IF a > 2 THEN 6 b :=1;

7 ELSIF a > 4 THEN

8 b := 2 ; 9 ELSE

10 b := 3 ; 11 END IF ;

12 DBMS_OUTPUT.PUT_LINE (b) ; 13 END ;

执行上述PL/SQL块后的输出结果为

A. 0 B. 1 C. 2 D. 3 4. 有如下PL/SQL程序块:

SQL> DECLARE

2 i BINARY_INTEGER := 1 ; 3 BEGIN ;

4 WHILE i >= 1 ; 5 LOOP

6 i := i + 1 ;

7 DBMS_OUTPUT.PUT_LINE (i) ; 8 END LOOP ; 9 END ;

执行上述PL/SQL 块,结果为 A. 输出从1开始,每次递增1的数 B. 输出从2开始,每次递增1的数 C. 输出2

D. 该循环将陷入死循环

5. 使用游标的什么属性可以获取SELECT语句当前检索到的行数? A. %FOUND B. %NOTFOUND C. %ISOPEN D. %ROWCOUNT 6. 下列不属于IF条件语句中的关键字是

A. ELSEIF B. ELSE IF C. OTHERS D. THEN 三、简答题

1. 简述常量与变量在创建与使用时的区别。

2. 假设 student表中有如下字段:sid(主键列)、sname(姓名)和sscore(成绩),请问使用SELECT语句查询student 表中的学生信息时,如何显示每个学生的成绩所属的级别?示例查询结果如下:

Sid sname sscore 级别

------------- ------------- ------------- ------------ 1 李云 91 优秀 2 王小静 87 良好 ···

3. 使用%ROWTYPE与自定义记录类型,都可以定义存储一行数据的变量,请比较它们的区别。

4. 条件语句与循环语句都可以多层嵌套,请编写一段PL/SQL程序,实现如下输出效果:

* *** ***** ******* *********

5. 假设表test中只有一个id 列,其数据如下: SQL> SELECT * FROM test ;

ID

---------------- ` ` ` 800 800 1000 1000 500 ` ` `

现在需要将id 列中800的值修改为1000,1000的值修改为800。请问,使用普通的UPDATE语句能实现吗(提示:使用rowid列,它是Oracle提供的唯一标识数据行的列)?如果使用游标,又应该怎样实现?

6. 自定义异常主要用于实现业务逻辑规范,请列举部分在实际应用中需要创建自定义异常的情况,并思考如何在PL/SQL中处理该异常。

答案

一、填空题 1.EXCEPTION 2.:=

3.CONSTANT

4.打开游标、检索游标 5.EXCEPTION

二、选择题

1. B 2. D 3. B 4. D 5. D 6. ABC

三、简答题 略。

第十章习题

一、填空题

1.创建存储过程需要使用CREATE PROCEDURE语句,使用存储过程可以使用________________或者EXECUTE命令。 2.存储过程中有3种参数模式,分别为IN、_____________和________________。 3.下面是创建存储过程的语句,该过程用于根据某学生ID(studentid)返回学生姓名(studentname):

CREATE PROCEDURE stu_pro

( stu_id IN NUMBER,stu_name OUT VARCHAR2) AS BEGIN

SELECT studentname INTO__________________

FROM student WHERE studentid =_____________________; END stu_pro;

请将上述的语句补充完整,并完成下面的过程调用等语句: VARIABLE stu_name VARCHAR2(10); EXEC stu_pro(1003,____________); SELECT _______________FROM student;

4.Oracle 中触发器主要有___________________、__________________、系统触发器和______________________。

5.如果要创建行级触发器,则应该在创建触发器的语句中使用_____________子句。

6创建包规范需要使用CREATE PACKAGE 语句,创建包体需要使用___________________语句。

二、选择题

1.假设有存储过程add_student,其创建语句的头部内容如下: CREATE POCEDURE add_student(stu_id IN BUMBER,stu_name IN VARCHAR2???)

请问下列调用该存储过程的语句中,正确的是__________。 A. EXEC add_student(1001,’CANDY’); B. EXEC add_student(’CANDY,1001);

C. EXEC add_student(stu_id=>1001,stu_name=>’CANDY’); D. EXEC add_student(stu_name=>’CANDY’, stu_id=>1001);

2.下面对BEFORE触发器与INSTEAD OF 触发器叙述正确的是_____________。 A.BEFORE 触发器在触发事件执行之前被触发,触发器事件本事将不会被执行 B.BEFORE 触发器在触发事件执行之前被触发,触发器本身仍然执行。

C.INSTEAD OF触发器在触发事件发生时被触发,触发器事件本事将不会被执行 D.INSTEAD OF触发器在触发事件发生时被触发,触发器本身仍然执行。 3.下面关于 :NEW与:OLD的理解正确的是____________________. A.:NEW与:OLD可发分别用于捕获新的数据与旧的数据。

B.:NEW与:OLD可以分别用于INSERT触发器、UPDATE触发器和DELETE触发器中

C.INSERT 触发器中只能使用:NEW D.UPDATE触发器中只能使用:NEW

4.修改触发器应该使用下列那种语句_____________. A.ALTER TRIGGER语句

B.DROP TRIGGER语句 C.CREATE TRIGGER语句

D.CREATE OF REPLACE TRIGGER语句

5.如果在包规范mypackage中没有申明某个过程myprocedure,而在创建包体时包含了该过程,那么对该过程叙述正确的是__________。

A.包体将无法创建成功,因为在包体中包含有包规范中没有申明的元素。 B.该过程不影响包体的创建,它属于包的私有元素。 C.可以通过mypackage.myproduce调用该过程。 D.无法在包体外使用该过程

三、简答题

1.简述带参数的存储过程的使用,并概括说明在创建与调用时都应该主意哪些问题。

2.简述存储过程与函数的区别。

3.在表中使用CHECK约束也是为了保证数据的完整性,请举例说明使用触发器与使用CHECK约束的优缺点。 4.在调用存储过程时,如果存储过程中有多个输入参数,则在调用该过程时需要为这些参数赋值,本书介绍了两种为多个参数赋值的形式,一种是指定参数名,另一种是不指定参数名。在实际应用中,有些用户喜欢将上述两种形式混在一起用,如下:

SQL>EXEC test(name =>’李云’,23,sex=>’女’); 请指出在使用这种形式赋值时有什么限制。 5.简述INSTEAD OF 触发器的作用。

答案:

一.第一题 1. CALL

2. OUT ,IN OUT

3. stu_name、stu_id、 :stu_name、 :stu_name 4. DML触发器,INSTEAD OF触发器,DDL触发器 5. FOR EACH ROW 6. CREATE PACKAGE BODY

二.选择题

1.ACD 2.BC 3.AC 4.D 5.BD

三:简答题 略

第十一章习题

一、 填空题

1. 由于临时表中存储的数据只在当前事务处理或者会话进行期间有效,因此临时表主

要分为两种: 事务级别临时表 和 会话级别临时表 。

2. 穿件外部表,可以在ORGANIZATION EXTERNAL子句中,通过LOCATION选项用来指

定源数据文件; DEFAULT DIRECTORY 选项用来指定所使用的目录对象,该目录对象指向外部数据文件所在目录。

3. 创建外部表时,可以使用 REJECT LIMIT 子句指定允许出现的数据转

换错误个数。

4. Oracle数据库提供对表或索引的分区方法有5种: 范围分区 , 散列分区 , 列表分区 ,组合范围散列分区和组合范围列表分区。

5. 为分区表增加一个新的分区时,需要使用 ADD PARTITION 或者

SPLIT PARTITION 子句。

6. 在创建分区表或者为分区表增加分区时,指定分区值可以是一个具体的数据,也可

以是MAXVALUE或DEFAULT。其中, MAXVALUE 表示分区中可能的最大值; DEFAULT 表示分区中的其他值。

二、 选择题

1. 创建临时表时,如果指定 A 子句,则表示创建的临时表是事务级别的临时表。

A.ON COMMIT DELETE ROWS B.ON COMMIT PRESERVE ROWS C.ORGANIZATION EXTERNAL D.PARTITION BY

2. 在创建外部表时,使用 B 子句指定记录错误数据的文件

A.REJECT LIMIT C.LOGFILE B.BADFILE D.FILE

3. 创建范围分区表需要指定 D 关键字,创建散列分区表需要使用

关键字,创建列分区表需要使用 关键字。

A.LIST、HASH、RANGE C.RANGE、LIST、HASH B.HASH、LIST、RANGE D.RANGE、HSAH、LIST

4. 为分区表怎家分区时,如果当前存在MAXVALUE或DEFULT值的分区,那么在增加

分区时会出现错误。这时,需要使用 D ,采用分隔分区的方法来解决。

5. 根据下列语句,一下说法正确的是 C 。 ALTER TABLE range book

MERGE PARTITIONS part2,parts3 INTO PARTITION part1;

A. 将分区表range_book中的part1分区分隔成part2和part3分区 B. 将分区表range_book添加part2、part3和part1分区

C. 将分区表range_book中的part2和part3分区合并成part1分区 D. 删除分区表range_book中的part2和part3分区,只保留part1分区

三、 简答题

1. 简述临时表的两种类型。

A. ADD PARTITION子句 C. DROP PARTITION子句 B.MERGEPARTITION子句 D.SPLIT PARTITION 子

2. 创建一个会话级别的临时表和一个事务级别的临时表,想这两个表中分别添加一些

记录数据,然后重新连接数据库,观察两个表中数据的变化。

3. 创建一个外部数据文件,然后用CREATE TABLE…ORGANIZATION EXTERNAL语句创建

一个外部表,读取外部数据文件中的内容。 4. 简述分区表的5种类型。

5. 指出下列语句实现的功能(其中,sid表示学生编号;stuname表示学生姓名stusex

表示学生性别;stubirthday表示学生生日): CREATE TABLE student(

sid NUMBER(4),

stuname VARCHAR(30), stusex VARCHAR(4), stubirthday DATE

)PARTITION BY LIST(stusex)(

PARTITION part1 VALUES(‘男’),

PARTITION part2 VALUES(‘女’), );

6. 使用ADD PARTITION语句,为前面所创建的表student增加一个分区part3,指定

VALUES值为“保密”。

12.6 习题 一、填空题

1.创建用户时,要求创建者具有__CREATE USER__系统权限。 2.向用户授予系统权限时,使用__WITH ADMIN OPTION_选项表示该用户可以将此系统权限再授予其他用户,向用户授予对象权限时,使用_WITH GRANT OPTION_选项表示该用户可以将此对象权限再授予其他用户。

3.Oracle数据库中的权限主要有__系统权限__和_对象权限_两类。 4.___角色____是具有名称的一组相关权限的组合。

5.一个用户想要在其他模式创建表,则该用户至少需要具有___CREATE ANY TABLE___系统权限。

6.禁用与启用角色应该使用___SET ROLE_____语句。

二、选择题

1.如果某个用户仅仅具有scott.emp表上的SELECT和UPDATE权限,则下面对该用户所能执行的操作叙述正确的是___D________。

A.该用户能查询scott.emp表中的记录 B.该用户能修改scott.emp表中的记录

C. 该用户能删除scott.emp表中的记录 D.该用户无法执行任何操作 2.下面对系统权限和对象权限叙述正确的是___D________。 A.系统权限是针对某个数据库对象操作的权限,对象权限不与数据库中的具体对象相关联。

B.系统权限与对象权限都是针对某个数据库对象操作的权限 C.系统权限与对象权限都不与数据库中的具体对象相关联 D.系统权限不与数据库中的具体对象相关联,对象权限是针对某个数据库对象操作的权限

3.启用所有角色应该使用下面哪条语句? D

A.ALTER ROLE ALL ENABLE B.ALTER ROLE ALL C.SET ROLE ALL ENABLE D.SET ROLE ALL 4.在用户配置文件中不能限定如下哪种资源? B

A.单个用户的会话数 B.数据库的会话数 C.用户的密码有效期 D.用户的空闲时长

5.如果用户user1创建了数据库对象,删除该用户需要下列哪条语句? B A.DROP USER user1; B.DROP USER user1 CASCADE; C.DELETE USER user1; D.DELETE USER user1 CASCADE; 6.修改用户时,用户的什么属性不能修改? A A.名称 B.密码

C.表空间 D.临时表空间 三、简答题

1.简述系统权限与对象权限的区别。

答:系统权限是指对整个Oracle系统的操作权限,例如连接数据库、创建和

管理表或视图等。而对象权限是指用户对数据库中对象的操作权限。

2.简述权限和角色的关系,以及使用角色有哪些好处。

答:在Oracle数据库中,可以将一组相关的权限授予某个角色。 使用角色的

好处:使用角色可以简化授权操作,能进行动态管理和便于编程。当这类用户的权限需求发生改变时,只需要把角色的权限进行改动,而不必修改每一位用户的权限。角色可以被禁用或激活。当角色被禁止使用时,拥有该角色的用户不再拥有授予改角色的权限了。这样就可以对多个用户的权限进行动态控制了。角色是存储在数据字典中的,并且可以为角色设置口令。这样就能够在应用程序中对角色进行控制。比如禁用或者激活等操作。

3.简述使用WITH ADMIN OPTION选项与使用WITH GRANT OPTION选项的区别。 答:WITH ADMIN OPTION只能在赋予系统权限时使用,WITH GRANT OPTION

只能在赋予对象权限时使用。撤消带有ADMIN OPTION 的系统权限时,连带的权限将保留,而撤消带有GRANT OPTION 的对象权限时,连带的权限也将撤消。

4.在一个学生管理系统中,教师teacher01可以查询学生(student表)的所有信息,并可以修改学生的成绩(score 列)、学生student01可以查看学生的信息,主任director01可以添加和删除学生,请问该如何为teacher01、student01和director01授予相应的权限。

答:grant select, update(score) on student to teacher01; grant select on student to student01;

grant insert,delete on student to director1

5.简述修改用户的默认角色与禁用启用角色的区别。

答:修改用户的默认角色是对某个用户的操作,禁用启用用户涉及所有拥有该角色的用户。

角色被禁用后,用户也可以自己开启该角色,有时要提供口令。

(简答题答案仅供参考)

本文来源:https://www.bwwdw.com/article/ud2o.html

Top