oracle11g管理与应用实践教程(习题及答案)_第1页
oracle11g管理与应用实践教程(习题及答案)_第2页
oracle11g管理与应用实践教程(习题及答案)_第3页
oracle11g管理与应用实践教程(习题及答案)_第4页
oracle11g管理与应用实践教程(习题及答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.6习题oracle数据库基础一.填空题1、关系模型提供了3类完整性规则,分别是_、_、_。参考答案:实体完整性规则、参照完整性规则、用户定义的完整性规则2、rdbms由两部分组成,即_、_两部分。答案:数据库系统内核、数据字典3、关系数据库模型支持三种类型的表关联关系:_、_、_。答案:一对一、一对多以及多对多4、数据模型的种类有很多,例如_、_、_和_等。目前理论最成熟、使用最普及的是_。答案:层次模型、网状模型、关系数据模型、面向对象模型。关系数据模型二、选择题1、oracle 11g版本号中字母“g”的含义是()a产品类型的“代”( generation) b网格(gridding)

2、 c集成(integration)d无含义答案:b2、 设计性能较优的关系模式称为规范化,规范化主要的理论依据是()a关系规范化理论b关系运算理论c关系代数理论d数理逻辑答案:a3、消除了部分函数依赖的1nf的关系模式必定是()a1nfb2nfc3nfd4nf答案:b4、当b属于函数依赖于a属性时,属性b与a 的联系是()a1对多b多对1 c多对多d以上都不是答案:b5、根据关系数据库规范化理论,关系数据库中的关系要满足第一范式。下面“部门”关系中,因哪个属性而使它不满足第一范式?部门(部门号,部门名,部门成员,部门总经理)a部门总经理b部门成员c部门名d部门号答案:b6、下列不属于oracl

3、e数据库数据类型的是()anumberbfloatcclobdboolean答案:d三、简答题1、简述数据库与数据库管理系统的区别。参考答案:数据库是用来存储信息或数据的机制,是按照数据结构来组织、存储和管理数据的仓库。可以被定义为是在计算机存储设备上合理存放的,互相关联的数据集合。数据库管理系统,它是基于某种结构数据模型、以统一的方式管理和维护数据库,并提供访问数据库接口的通用软件。2、简述数据库规范化的概念及其作用。参考答案:数据库规范化,又称数据库或资料库正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。四、应用题1、设有一教学管理数据库,其属性

4、为:学号(s#),课程号(c#),成绩(g),任课教师(tn),教师所在的系(d)。这些数据有下列语义: 学号和课程号分别与其代表的学生和课程一一对应。 一个学生所修的每门课程都有一个成绩。 每门课程只有一位任课教师,但每位教师可以有多门课程。 教师中没有重名,每个教师只属于一个系。(1)试根据上述语义确定函数依赖集。(2)如果用上面所有属性组成一个关系模式,那么该关系模式为何模式?并举例说明在进行增、删操作时的异常现象。(3)分解为具有依赖保持和无损连接的3nf。参考答案:(1)f=(s#,c#)g,c#tn,tnd(2)关系模式为1nf,因为该关系模式的候选码为(s#,c#),则非主属性有

5、g,tn和d。又f中有c#tn,存在非主属性tn对候选码(s#,c#)的部分依赖,即:若新增设一门课程而暂时还没有学生选修时,则因缺少码s#值而不能进行插入操作。若某个教师调离学校要删除有关信息时,会将不该删除的课程(c#)信息删除。(3)fm=(s#,c#)g,c#tn,tnd=r1,r2,r3其中: r1=(s#,c#,g) r2=(c#,tn) r3=(tn,d)2.7习题oracle系统的安装一、填空题1、常用的oracle服务主要有如下四种,分别是_、_、_、_。参考答案:oracledbconsoleorcl、oraclejobscheduler、oracleservice、 or

6、acletnslistener2、oracle数据库启动的三个阶段是:_、_、_。参考答案:启动实例、打开控制文件、打开数据库3、oracle数据库关闭的四个选项是:_、_、_、_。参考答案:normal、immediate、transaction、abort二、选择题1、系统标识符(sid)是指唯一在网络域中区别于其他数据库的数据库实例名,下面合法的sid是()amy2orcl bmyoracletestcmy_orcldmyorcl参考答案:a2、安装oracle database 11g可以选择安装类型,下列不属于oracle database 11g的安装类型是()a企业版b个人版c定

7、制d免费版参考答案:d三、简答题1、简述oracle database 11g在windows系统下的安装步骤。参考答案:选择安装方法、选择安装类型、指定主目录详细信息、产品特定的先决条件检查、选择配置选项、安装、安装结束。2、简述oracle中用户和模式的关系。参考答案:用户是用连接数据库和访问数据库对象的。模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。通俗地说,模式是用来创建oracle中各种对象,而用户用来连接数据库并访问模式中对象,在oracle中模式与用户是一一对应关系。四、上机练习1、按照书中步骤,正确安装oracle database 11g,创建数据库,并且创建用户。

8、2、从操作系统提示符界面,采用上题创建的用户登录数据库,并创建employees表进行测试。(表结构如下图)3、客户端连接oracle数据库时,默认端口为1521。创建一个新的监听程序,其端口为1522。然后将orcl注册于该监听程序。3.5 习题sql*plus和sql developer一、填空题1查看表结构时,所使用的命令是_,该命令可以简写为_。参考答案:describe、desc2使用sql*plus语句快速编辑sql语句时,可以使用的命令有append(可以简写为a)命令、_ (可以简写为c)命令、_(可以简写为i)、_(可简写为l)命令,以及run(可以简写为r)命令。参考答案:

9、change、input、list3在sql*plus工具中,可以使用save命令将缓冲区内容保存到文件;可以使用_命令读取并运行文件内容;可以使用_命令编辑缓冲区内容或文件内容;还可以使用spool命令复制输出结果到文件。参考答案:start、edit4在sql语句中,如果在某个变量前面使用了&符号,那么就表示该变量是一个临时变量。定义变量,可以使用_或accept命令;删除变量,可以使用undefine命令。参考答案:define5在sql*plus中格式化查询结果时,column命令可以对列格式化显示效果,pagesize命令可以_,linesize命令可以_。参考答案:设置页的大小、设

10、置行宽度6创建简单报表时,使用_命令和_命令,分别为报表设置页眉和页脚信息。参考答案:ttitle、btitle二、选择题1在sql*plus中连接数据库时,可以使用connect命令。下面的4个选项中,哪个命令是正确的?其中,用户名为scott,密码为tiger,数据库名为orcl。()aconnect scott/tiger ;bconnect tiger/scott ;cconn scott/tiger as sysdba ;dconn scott/tigerorcl as sysdba ;参考答案:d2执行语句save scott_emp_query.sql append,执行结果表示

11、()。a如果scott emp_query.sql文件不存在,则出现错误b如果scott emp_query.sql文件已经存在,则出现错误c将缓冲区中的内容追加到scott_emp_query.sql文件中。如果该文件不存在,会创建该文件d将缓冲区中的內容替换掉scott_emp_query.sql文件的内容。如果该文件不存在,会创建该文件参考答案:c3使用sql*plus中的_,可以将文件中的内容检索到缓冲区,并且不执行。()asave命令bget命令cstart命令dspool命令参考答案:b4下面是有关变量的描述,请问哪些描述是正确的?()a临时变量是指仅在某个sql语句中有效的变量b

12、临时变量是在某个会话期间有效的变量c已定义变量是指明确定义,其生命期至显式地删除、重新定义或退出sql*plus为止d已定义的变量是不能被删除的参考答案:b、c5如果希望控制列的显式格式,那么可以使用下面的_命令()a.showb.definec. spoold. column参考答案:d三、简答题1使用describe命令,查看scott用户的dept表的结构信息。参考答案:descscott. dept2使用save命令将缓冲区内容写入到e:test.sql文件中;然后使用start命令将文件中的內容读入到缓冲区,并且进行执行。参考答案:savee:test.sqlstart e:test

13、.sql3执行下列语句,观察输出结果:define temp = 5000select empno , ename , mgrfrom scott.empwhere sal = &temp ;参考答案:略4对scott用户的emp表的输出信息进行格式设置。其中,empno列设置标题为“员工编号”,number格式为9999;ename列设置标题为“员工名称”,格式设置为25个字符;hiredate列设置标题为“受雇日期”,并且标题居中显示。参考答案:col empno heading员工编号 format 9999;col ename heading 员工名称 for a25;col hire

14、date heading受雇日期 justify center;5设置一页显示30行数据,并且设置一行显示130个字符,然后输出scott用户的emp表的全部信息。参考答案:set pagesize 30set linesize 130select * from scott.emp四、操作练习下载sql developer,建立oracle数据库的连接,按照书中所述步骤,操作熟悉sql developer的使用。4.5 习题简单的select语句一、填空题1如果需要在select子句中包括一个表的所有列,可以使用符号_。参考答案:*2where子句可以接收from子句输出的数据;而having

15、子句可以接收来自from、_或_子句的输出的数据。参考答案:where、group3在select语句中,分组条件的子句是_,对显示的数据进行排序的子句是_。参考答案:group by、order by4在dml语句中,insert语句可以实现插入记录,_语句可以实现更新记录,_语句和_语句可以实现删除记录。参考答案:update、delete、turncate5_函数可以返回某个数值的ascii值,_函数可以返回某个ascii值对应的十进制数。参考答案:ascii、chr6使用_函数,可以把数字或日期类型的数据转换成字符串;使用to_date函数,可以把_转换成_,默认的日期格式为_。参考答

16、案:to_char、字符串、日期型、yyyy-mm-dd hh:mm:ss二、选择题1查询scott用户的emp表中的总记录数,可以使用下列哪个语句?()aselect max(empno) from scott.emp;bselect count(empno) from scott.emp;cselect count(comm) from scott.emp;dselect count(*) from scott.emp;参考答案:d2为了去除结果集中的重复行,可以在select中使用下列哪个关键字?()aallbdistinctcupdatadmerge参考答案:b3在select语句中,

17、having子句的作用是()a查询结果的分组条件b组的筛选条件c限定返回的行的判断条件d对结果集进行排序参考答案:b4下列哪个聚合函数可以把一个列中的所有值相加求和?()amax函数bmin函数ccount函数dsum函数参考答案:d5如果要统计表中有多少行记录,应该使用下列哪个聚合函数?()asum函数bavg函数ccount函数dmax函数参考答案:c三、简答题1标准sql语言的语句类型可以分为哪三大类,每种语句类型分别用来操纵哪些语句?参考答案:数据操纵语言(dml):用来操纵数据库中数据的命令。包括:select、insert、update、delete。数据定义语言(ddl):用来建

18、立数据库、数据库对象和定义列的命令。包括:create、alter、drop。数据控制语言(dcl):用来控制数据库组件的存取许可、权限等的命令。包括:grant、deny、revoke。2列举几个在where条件中可以使用的操作符。参考答案:使用 = 、= 、= 、符号和 between 。and 。、in(set)、like、is null 。3如果要按照降序对数据进行排序,应该在order by子句中使用哪个关键字?参考答案:desc4下面这个select语句能否输出查询结果?如果不能,该如何修改?select empno , ename , deptno , count (*)from

19、 scott .empgroup by deptno参考答案:不能。select deptno , count (*)from scott .empgroup by deptno5指定一个日期值,例如08-8月-2008,获得这个日期与系统当前日期之间相隔的月份数和天数。参考答案:select months_between(08-8月-2008, sysdate) mon_betw from dual;5.8 习题表和完整性约束一、填空题1按照约束的用途,主要可以将表的完整性约束分为not null约束、_、_、_和_。参考答案:check、unique index、primary key、f

20、oreign key2使用_关键字,可以快速删除表中的所有记录,并且不在撤消表空间中记录撤消数据。参考答案:truncate3_约束用于定义列中不能出现null值,_约束用于定义列中不能出现重复值,而primary key约束则可以定义列中既不允许出现null值,也不允许出现重复值。参考答案:not null、unique二、选择题1存储数据123.45,可以使用下面哪种数据类型?()anumber bnumber(5) cnumber(5,3)dnumber(5,2)参考答案:d2如果某列定义了unique约束,则()a该列不允许出现重复值。 b该列不允许出现null值。c该列內允许出现一个

21、null值。 d该列允许出现多个null值。参考答案:a3为列定义一个check约束,希望该约束能对表中已存储的数据,以及以后向表中添加或修改的数据都进行检查,则应该将该约束设置为如下哪种状态?()aenable validate benable novalidatecdisable validate ddisable novalidate参考答案:a4使用如下语句创建一个临时表空间temp: creat _ tablespace temp _f:oraclefoletemp.dbf size 10m autoextent on next 2m maxsize 20m;请从下列选项中选择正确的

22、关键字补充上面的语句。()a(不填)、datafile btemp、tempfilectemporary、tempfile dtemp、datafile参考答案:c5下列关于约束与索引的说法中哪一项是不正确的?()a在字段上定义primary key约束时会自动创建b树惟一索引b在字段上定义unique约束时会自动创建b树惟一索引c在默认的情况下,禁用约束会删除对应的索引,而激活约束会自动重建相应的索引d在定义foreign key 约束时会创建b树唯一索引参考答案:d三、简答题1比较varchar2与char两种数据类型的区别,并举例说明分别在什么情况下使用这两种数据类型。参考答案:char

23、的长度是固定的,varchar2的长度是可以变化的,存储字符串“abc,对于char (10),表示存储的字符将占10个字节(包括7个空字符),而同样的varchar2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。varchar2比char节省空间,在效率上比char会稍微差一些。2创建一个表后,为表中的某列添加check约束,并分别设置该约束的状态为4种不同的状态,比较这4种状态下的约束检查效果。参考答案:略3建立一个学生表,表结构如下stu_info ( stuid number,name varchar(20),age number (2),

24、sex char(2),birthday date)(1)在数据库中建立stu_info表。(2)添加主键约束(stuid)(3)添加check约束(插入的年龄必须大于19岁)(4)添加非空约束(要求姓名不能为空值)(5)给上面的表添加唯一约束(要求姓名不可重复)参考答案:(1) create table stu_info(stuid number,name varchar(20),age number(2),sex char(2),birthday date);(2) alter table stu_infoadd constraint stu_info _pk primary key (s

25、tuid);(3) alter table stu_infoadd constraint age_checkcheck(age19);(4) alter table stu_info modify name not null;(5) alter table stu_infoadd constraint name_uniunique(name);6.8 习题使用sql进行数据操作一、填空题1为了保证在sql方式下进行insert、delete和update操作达到安全的目的,一般在sql下进行操作前,建议将环境设置成为非自动提交的方式,采用的命令是_,若想取消操作,采取的命令是_。参考答案:se

26、t autocommit off、rollback2对某步操作设置相应保存点的命令是_,当根据需要用命令_来实现撤消到这一步。参考答案:savepoint、rollback to3关系数据库中比较常用的sql中,采用命令_进行插入,采用_来进行数据更新,而同时具有更新和插入功能的命令式_。参考答案:insert、updata、merge二、选择题1pl/sql块中不能直接使用的sql命令是()。aselect binsert cupdate ddrop参考答案:d2以零作除数时会引发()异常。avalue_errorbzero_dividecstorage_error dself_is_nul

27、l参考答案:b3要更新游标结果集中的当前行,应使用()子句。awhere current ofbfor updatecfor deletedfor modify参考答案:a4下面不是常用的数据对象权限的是()adeletebrevokecinsert dupdate 参考答案:b5用于修改表中数据的语句是()aeditbmodifycupdate dalter 参考答案:d6在只读表空间上可以执行以下哪些操作?()acreate tablebalter tablecdrop tabledinsert参考答案: c 三、简答题1简述detele操作与truncate操作的异同。参考答案:trun

28、cate,可以删除表中的所有记录,释放表空间,只保留表结构。delete,如果没有where条件,也是删除表中的所有记录,但是它不释放空间。truncate在各种表上无论是大的还是小的都非常快。如果有rollback命令delete将被撤销,而truncate则不会被撤销。runcate将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过truncate操作后的表比delete操作后的表要快得多。2已有表文件teacher(教师代码(c),姓名(c),学院(c),职称(c),年龄(n),按照要求写出sql语句。1查询职称为副教授的教师代码,姓名,学院,职称信息;2查询学院为“电

29、信学院”并且职称为“讲师”的所有教师的信息,并将查询结果按年龄字段的降序排序。3将所有教师的年龄加1;4将表中年龄小于15岁的教师记录加上删除标记;参考答案:(1)select 教师代码,姓名,学院。职称 from teacher where 职称=副教授;(2)select * from teacher where 学院=电信学院 and 职称=讲师 order by 年龄 desc;(3)update teacher set 年龄=年龄+1;(4) delete from teacher where 年龄153有一个表t,有两个字段a,b,我们想在表t中做insert/update,如果存

30、在,则更新t中b的值,如果不存在,则插入一条记录。假设待insert/update的记录为(a=001,b=100)。请使用merge命令完成。参考答案:mergeintott1using(select1001asa,2asbfromdual)t2on(t1.a=t2.a)whenmatchedthenupdatesett1.b=t2.bwhennotmatchedtheninsert(a,b)values(t2.a,t2.b);7.5习题索引、视图和序列一.填空题1创建视图的命令是_。若要保证插入或修改的数据行必须满足视图定义的约束,创建时附带的参数是_;若要保证视图上不能进行任何dml操作

31、,创建时附带的参数是_。参考答案:create view、with check option、with read only2创建序列的命令是_。若要使序列的增量为5,创建时附带的参数是_;若要使序列开始值为10,创建时附带的参数是_。参考答案:create sequence、increment by 5、start with 103视图中的列并不都支持dml操作,通过数据字典_可以了解视图中哪些列是可更新的。参考答案:user_updatable_columns4使用_可以获取序列的当前值,使用_可以获取下一个值。参考答案:currval、nextval5如果要清除索引中的存储碎片,可以对索引

32、进行合并或_。参考答案:重建选择题1以下哪个视图可以查到用户具有使用权限的表的信息()auser_viewsbuser_tablescall_objectsduser_objects参考答案:c2要查看当前用户下有哪些数据表格,适用下列哪个视图()auser_tablebtabcuser_all_tablesdtables_user参考答案:c3可以使用()伪列来访问序列。acurrval和nextval bnextval和prevalccache和nocache dmaxvalue和minvalue参考答案:a4带有错误的视图可使用()选项来创建。aforcebwith check opti

33、onccreate view with errordcreate error view参考答案:a5在联接视图中,当()时,该基表被称为键保留表。a基表的主键不是结果集的主键b基表的主键是结果集的主键c基表的主键是结果集的外键d基表的主键不是结果集的外键参考答案:b6使用如下语句创建一个视图:create view test view asselect stu.stuname , stu.stuage + 1 newage , cla.clanamefrom student stu left join class cla on stu.claid = cla.claid;请问test view

34、视图中哪些列是可更新的?()astunamebstuname, newagecstuname, clanamedstuname, newage, claname参考答案:c7如果创建一个序列,用于为表的主键列生成主键值,则创建该序列时不应该指定以下哪种参数?()amaxvalue 1000bminvalue 10ccache 10dcycle参考答案:d8如果在创建序列时指定其cache参数值为10,当序列的当前值为5时,数据库突然关闭,再次运行数据库后,序列将从以下哪个值开始?()a5 b6c11d16参考答案:c9下列关于索引的描述哪一项是不正确的?()a表是否具有索引不会影响到所使用的s

35、ql的编写形式b为表创建索引后,所有的查询操作都会使用索引c为表创建索引后,可以提高查询的执行速度d为表创建索引后,oracle优化器将根据具体情况决定是否采用索引参考答案:b三、简答题1简述表与视图的关系。参考答案:联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。2表结构说明:create table employee(id number(10) not null, 员工工号salary number(10,2) d

36、efault 0 not null, 薪水name varchar2(24) not null 姓名);(1)创建序列seq_employee,该序列每次取的时候它会自动增加,从1开始计数,不设最大值,并且一直累加,不循环。参考答案:create sequence seq_employee2 increment by 13 start with 14 nomaxvalue5 nocycle 6 /(2)写一个pl/sql块,插入表user.employee中100条数据。插入该表中字段id用序列seq_employee实现,薪水和姓名字段可以任意填写。参考答案:略3如果对视图的基表进行结构上的

37、改动,将会影响视图的可用性。请基于一个表创建一个视图,在视图的子查询语句中使用*查询基表中的所有列,然后对该表进行结构修改,例如增加列、删除列,修改列名等,测试不同情况下视图的可用性,并思考其中的原因。参考答案:视图依赖于基础表的存在而存在,当基础表进行了结构上的修改后,有可能会对视图产生印象,如果要再次使用此试图,需要进行编译。4如果经常需要使用如下语句查询employee表中的员工信息:select * from employee where substrb(ename , 0 , 2) = 李;那么应该为ename创建什么索引,如何创建?参考答案:创建基于函数的索引create inde

38、x eanme_indexon employee (substrb(ename , 0 , 2)tablespace myspace8.6 习题pl/sql基础一.填空题1pl/sql程序由三个块组成,即_、_、_。参考答案:声明部分、执行部分、异常处理部分2oracle块根据应用模块功能,可以分为四种类型,分别是:_、_、_、_。参考答案:匿名块、命名块、子程序、触发器 3 oracle的游标分为_、_。参考答案:显示游标、隐式游标4 oracle 游标有4个属性,_判断游标是否被打开,如果打开等于true,否则等于false;_判断游标所在的行是否有效,如果有效,则等于true,否则等于f

39、alse,_属性与之相反;_返回当前位置为止游标读取的记录行数。参考答案:%isopen、%found、 %notfound、%rowcount 二、选择题1关于存储过程参数,正确的说法是()a存储过程的输出参数可以是标量类型,也可以是表类型b存储过程输入参数可以不输入信息而调用过程c可以指定字符参数的字符长度(函数的()或者过程的(number/varchar2))d以上说法都不对参考答案:b2下列说法,正确的说法是()a只要在存储过程中有增删改语句,一定加自治事务b在函数内可以修改表数据c函数不能递归调用d以上说法都不对参考答案:b3利用游标来修改数据时,for update充分利用了事务

40、的哪个特性?()a原子性b一致性c永久性d隔离性参考答案:d4下列哪个语句无需commit而自动提交( )acreate table t(t1 number,t2 number)bupdate t set t1=123cdelete from tdinsert into t values(1,3)参考答案:a5下列说法不正确的是()a在plsql自定义函数中如果包含update、delete、insert语句,不必在函数体内给出commit;b自定义函数可以在sql语句中调用、也可以在plsql块中调用c自定义函数可以返回表类型d自定义函数中的参数可以是out类型参考答案:d6下面定义pl/s

41、ql记录的语法正确的是()atype is record btype recordcrecord dtype record参考答案:a7在sql*plus环境中可以利用dbms_output包中的put_line方法来回显服务器端变量的值,但在此之前要利用一个命令打开服务器的回显功能,这一命令是()a set server onb set serverecho onc set servershow ond set serveroutput on参考答案:d三、简答题1简述no_data_found和%notfound两个保留字的用法。参考答案:select.into语句触发no_data_fo

42、und;当一个显示光标的 where 子句未找到时触发 %notfound;当update或delete 语句的where 子句未找到时触发 sql%notfound;在光标的提取(fetch)循环中要用 %notfound 或%found 来确定循环的退出条件,不要用 no_data_found。2简述pl/sql的异常处理机制。参考答案:当发生错误时,程序无条件转到异常处理部分,这就要求代码要非常干净并把错误处理部分和程序的其它部分分开。oracle允许声明其他异常条件类型以扩展错误/异常处理。这种扩展使pl/sql的异常处理非常灵活。当一个运行时错误发生时,称为一个异常被抛出。pl/sq

43、l程序编译时的错误不是能被处理得异常,只有在运行时的异常能被处理。在pl/sql程序设计中异常的抛出和处理是非常重要的内容。3查找出当前用户模式下,每张表的记录数,以scott用户为例,结果应如下:dept.4emp.14bonus.0salgrade.5请编写pl/sql程序块实现。参考答案:declare type tab_names is table of varchar2(20) index by binary_integer; tab_name tab_names; coun number; str varchar2(100);begin select table_name bulk

44、 collect into tab_name from user_tables;for i in tab_name.first.tab_name.last loop str:=select count(*) from |tab_name(i);execute immediate str into coun; dbms_output.put_line(tab_name(i)|.|coun);endloop;end;9.6 习题存储过程、函数、触发器和包一、填空题1_关键字标志着pl/sql程序中声明段的开始。参考答案: declare 2pl/sql的异常处理代码在_块中实现。参考答案: exc

45、eption 3触发器可以分为三类,分别是:_、_、_。参考答案:dml触发器、替代触发器、系统及触发器4 包中包含_和_,它们共享公共的变量,公共的局部函数和过程。参考答案:过程、函数5一个包由两个分开的部分组成_和_。参考答案:包说明( package soecification)、包主体( package body ) 二、选择题1关于触发器,下列说法正确的是()a可以在表上创建instead of 触发器b语句级触发器不能使用“:old”和“:new”c行级触发器不能用于审计功能d触发器可以显式调用参考答案:b2分析下面的pl/sql代码块:beginfor i in 1.5 loop

46、if i=1 then null;elseif i=3 then commit;elseif 1=5 then rollback;else insert into test(results) values(i);end if;end loop;commit;end;有多少个值,被永久地插入到test表中?()a0b1c2d3参考答案是: b 3在pl/sql循环中,需要测试当前的fetch是否成功,可以完成这个要求的游标属性是下列哪个()。asql%isopenbsql%rowcountcsql%foundd这一要求无法使用sql游标属性完成。参考答案是: d 4检查下面的pl / sql块:

47、declare type emplist is varray(2) of employees.employee_id%type not null; v_employees emplist := emplist(); begin dbms_output.put_line(v_employees.count); v_employees.extend; v_employees(1) := 30; end; /下列关于上述pl / sql块的结果的说法,正确的一项是:()。a它执行成功,并显示值为2b它执行成功,并显示值为0c它生成一个错误,因为数组不能扩展d它生成一个错误,因为该变长数组的声明是无效

48、的。参考答案是: b 三、简答题1 简述pl/sql程序包的作用。参考答案:把相关的过程和函数归类,按照功能的相关性存放在一起,并赋予一定的管理功能和使用的一组对象就叫做包。oracle系统把相关的模块归类成为包,可使开发人员利用面向对象的方法进行内嵌过程的开发,从而提高系统性能。2 简述存储过程和函数的区别。参考答案:本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量还有一些函数都不可用等等而存储过程的限制相对就比较少。3 思

49、考如何在pl/sql里避免重复编码的问题,请举例说明。参考答案:使用存储过程或函数,举例略。4 在pl/sql里如何使用绑定变量,为何使用绑定变量,请举例说明。参考答案:这是解决oracle应用程序可伸缩性的一个关键环节;而oracle的共享池就决定了开发人员必须使用绑定变量;如果想要oracle 运行减慢,甚至完全终止,那就可以不用绑定变量;这里举例说明上述问题;为了查询一个员工代号是123,你可以这样查询:select * from emp where empno=123;你也可以这样查询:select * from emp where empno=:empno;第一个查询使用的频率越高,所消耗的系统硬件资源越大,从而降低了用户的使用数量;它也会把优化好的其它查询语句从共享池中踢出,系统的整体性能降低; 而执行绑定变量,提交相同对象的完全相同的查询的用户,,一次性使用就可重复使用,提高效率。四、应用题1用pl/sql编写函数计算一个给定的正整数的阶乘,并编写调用程序对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论