您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > Oracle面试题目
Oracle测试试题1.解释FUNCTION,PROCEDURE和PACKAGE区别A:从参数的返回情况来看:FUNCTION一定要有返回值,而且只能返回一个;PROCEDURE可以有返回值,也可以无返回值B:从调用方式来看:如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,你可以参考《ORACLE9IPL\SQL程序设计》(机械工业出版社);C:从实现功能上来看;函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等),所以虽然他们的语法上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的Package是为了完成一个逻辑功能的一组function或procedure的集合。2.解释冷备份和热备份的不同点以及各自的优点?3.简述Oracle的存储结构(物理结构、逻辑结构)?物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件数据文件:存储数据的文件重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件参数文件:定义Oracle例程的特性,例如它包含调整SGA中一些内存结构大小的参数归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。密码文件:认证哪些用户有权限启动和关闭Oracle例程逻辑结构(表空间、段、区、块)表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。段:是对象在数据库中占用的空间区:是为数据一次性预留的一个较大的存储空间块:ORACLE最基本的存储单位,在建立数据库的时候指定4.比较truncate、delete和drop命令?truncate和delete两者都可以用来删除表中所有的记录。区别在于:truncate是DDL(datadefininglanguage数据定义语言),它移动HWK,不需要rollbacksegment(处理事务回滚操作)而Delete是DML(datamanufacturinglanguage数据操作语言)操作,需要rollbacksegment(处理事务回滚操作)且花费较长时间。而drop是DDL语言,用于对表的操作5.给出表中数据的相关约束类型。约束分为:表级约束和列级约束。列级约束:列级约束是行级约束的一部分,只能够应用在一行上。表级约束:表级约束的定义独立于列的定义,可以应用在一个表中的多列上。PRIMARYKEY主键约束:唯一的确定表中的每一条记录,保证数据的完整性。创建主键约束:CONSTRAINT约束名PRIMARYKEY[索引类型(CLUSTERED|NOCLUSTERED)](列名)注:主键最多由16个列组成。FOREIGNKEY外键约束:主要是将一个表(表A)中的主键所在列包含在另一张表(表B)中,这些列就是表B的外键。外键约束只要用来维护两个表之间数据的一致性,实现表之间的参照完整性。创建外键约束:CONSTRAINT约束名FOREIGNKEY(列名)REFERENCES要关联的表名(列名)注:外键最多由16个列组成。修改外键约束:ALTERTABLE表名ADDCONSTRAINT约束名FOREIGNKEY(列名)REFERENCES要关联的表名(列名)UNIQUE唯一约束:用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。创建唯一性约束:CONSTRAINT约束名UNIQUE(索引类型(CLUSTERED|NOCLUSTERED))(列名)修改唯一约束:ALTERTABLE表名ADDCONSTRAINT约束名UNIQUE(列名)CHECK检查约束:对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。创建检查约束:CONSTRAINT约束名CHECK(NOTFORREPLICATION)(条件)注:NOTFORREPLICATION指定在把表中复制的数据插入到表中时检查约束对其不发生作用。DEFAULT默认约束:指在插入操作中没有提供输入值时,系统自动指定值,默认约束可以包括常量、函数、不带变元的内建函数或者空值。6.如何搜索表中前N条记录?select*from表whereRownum=N7.如何搜索表中第N~M(N=M)条记录。select*from(selectt.*,rownumrfromyour_tablet)wherer30andr608.如何搜索表中某列的第N大的值?select*from(selectt.*,dense_rank()over(orderbyid)rankfrom表名t)whererank=N;例:select*from(selectt.*,dense_rank()over(orderbyid)rankfromempt)whererank=4;9.如何判断谁往表里增加了一条纪录。10.简述数据库1,2,3范式的概念与理解。11.解释归档和非归档模式之间的不同和它们各自的优缺点归档模式是指你可以备份所有的数据库transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高12.如何加密PL/SQL程序?setnls_lang=uswrapiname=proc_01.sqloname=proc_02.sql13.什么是分区表?简述范围分区和列表分区的区别,分区表的主要优势有哪些?使用分区的优点:·增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;·维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;·均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;·改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据业务记录的创建日期进行分区等。散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。有时候我们需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法。14..请说明实例与数据库的关系;表空间和数据文件的关系?Oracle的内存结构和后台进程合在一起,构成了Oracle数据库运行时的系统,也就是Oracle实例,数据库实例也称服务器,是用来访问数据库文件集的存储结构及后台进程的集合,这些后台进程紧密地一起运行,共同访问系统全局区(SGA)。数据库指的是文件集合,这些文件用来存储和管理相关数据,术语数据库仅仅指的是文件。一个数据库可以被一个或多个实例访问表空间是数据库的逻辑划分,每个数据库至少有一个表空间。每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。15.列举几种常用的关系型数据库?Oracle9i、DB28.1、Sybase12.5、SQLSERVER200016.请阐述同义词的作用.你认为什么情况下要使用同义词一个同义词(Synonym)就是一个数据库对象的别名,在创建一个同义词时,就指定了一个同义词名字和同义词所引用的对象。当引用同义词名字时。Oracle服务器会自动用同义词定义的对象来替代同义词的名字。通过掩盖了其他对象的名字和拥有者,同义词实现了一定的保护层,而且同义词是分布式数据库的远程对象的存储位置看起来是透明的,如同本地对象一样;使用同义词便于其他对象的使用,简化了命名,减少了数据库用户的SQL句法的复杂程度。使用同义词能够掩盖一些数据库对象的变化(如改名、移动等),只需重新定义同义词,而无须修改基于同义词的应用程序。同义词分为:公有同义词(publicSynonym)和私有同义词(privateSynonym)公有同义词:数据库的所有用户都可访问。私有同义词:只能包括在一个特定用户的模式里,只能为该用户和该用户授权的用户使用。17.请阐述触发器的作用.你认为什么情况下要使用触发器触发器:是一些过程,当发生一个特定的数据库事件时就执行这些过程。触发器能扩充引用完整性,实施附加的安全性或增强可用的审计选项。触发器可以用于下列情况下:(一)维护在表创建阶段通过声明限制无法实现的复杂完整性限制。(二)通过记录修改内容和修改者来审计表中的信息。(三)在表内容发生变更时,自动通知其他程序采取相应的处理。(四)在订阅发布环境下,发布有关各种事件的信息。触发器分为:(一)DML触发器:由DML语句激发的触发器,并且由该语句的类型决定DML触发器的类型。触发事件包括INSERT(插入)、UPDATE(更新)、DELETE(删除)。每一种触发事件类型都可以创建BEFORE触发器及AFTER触发器。每种触发器都可以作用于行或语句上。(二)替代触发器:又叫INSTEAD_OF触发器,执行一个替代操作来代替触发器的操作。替代触发器是行一级的,可以作用于视图。它与DML触发器的不同在于,DML触发器是在DML操作之外运行的,而替代触发器则代替激发它的DML语句运行。(三)系统事件触发器:在发生如数据库启动或关闭等事件时激发。它可以触发五中系统事件:a)SERVERERROR:当服务器发生错误的时候,可以生成触发器b)LOGON:当用户对数据库登录后,可以生成触发器c)LOGOFF:当用户数据库注销前,可以生成触发器d)STARTUP:数据库打开后,马上生成触发器e)SHUTDOWN:不论实例在任何时候被关闭时,都生成触发器。DDL触发器:针对于对模式对象有影响的CREATE、ALTER或DELETE等语句的。可以在这些操作之前或之后来定义DDL触发器。18.请阐述游标的作用.你认为什么情况下要使用游标游标:是用来管理SQL的SELECT语句而分配的一大堆内存。游标是一个对象,能够提供行级的SQL语句控制。游标可以返回一条或多条记录,或一条也不返回,通常的操作顺序是:(1)声明游标,使用查询来定义游标的列和行CURSOR游标名称IS查询语句(SELECT语句)(2)打开游标,使用PL/SQL命令OPEN来打开一个声明的游标OPEN游标名称(3)提取数据,从游标中重复提取每条记录到数据结构中,直到数据集合被提空FETCH游标名称INTO{变量1[,变量2,…]}例:FETCHNEXTFROM游标名称将游标指针指向下一条记录FETCHRELATIVEFROM游标名称RELATIVE相对位置将游标指向相对位置(4)关闭游标CLOSE游标名称19.varchar2,char两种数据类型有什么区别,如果表中某字段输入ABC后储存,该字段数()((((区别:1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的,比如,存储字符串“abc,对于CHAR(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2(20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。2.CHAR的效率比VARCHAR2的效率稍高。3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。4.何时该用CHAR,何时该用
本文标题:Oracle面试题目
链接地址:https://www.777doc.com/doc-2884948 .html