首页 oracle常见面试题及答案

oracle常见面试题及答案

举报
开通vip

oracle常见面试题及答案需求:写一个邮件系统,采用oracle+jsp+servlet来完成.1.创建一个表空间。2.创建一个用户,将用户赋到表空间上.3.给用户赋权限.4.以新建用户登录,创建一个程序包.5.在表空间上建表,两个表用户表IdintUnamevarcharUpassvarchar邮件表eIdintTitlevarcharContentsvarcharUid外键int附件表IdintFilepathvarcharEidint外键6.作增,删,改,查的操作,全部封装到存储过程中7.写一个java程序来调用.1.解释FUNCTI...

oracle常见面试题及答案
需求:写一个邮件系统,采用oracle+jsp+servlet来完成.1.创建一个表空间。2.创建一个用户,将用户赋到表空间上.3.给用户赋权限.4.以新建用户登录,创建一个程序包.5.在表空间上建表,两个表用户表IdintUnamevarcharUpassvarchar邮件表eIdintTitlevarcharContentsvarcharUid外键int附件表IdintFilepathvarcharEidint外键6.作增,删,改,查的操作,全部封装到存储过程中7.写一个java程序来调用.1.解释FUNCTION,PROCEDURE和PACKAGE区别答:function和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure不需要返回任何值,而function将返回一个值.在另一方面,Package是为了完成一个商业功能的一组function和procedure的集合。2.取某个序列的当前值的PL/SQL语句怎么写?答:SELECT序列名.CURRVALFROM;DUALCreatesequence名字startwithxincrementbyymaxvalueznocycle3.说明ORACLE数据库实例与ORACLE用户的关系?答:实例可以包含多个用户,一个用户只能在一个实例下4.创建用户时,需要赋予新用户什么权限才能使它连上数据库?答:grantCONNECT表名][onto用户名5.比较truncate和delete命令?答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL(datadefininglanguage数据定义语言),它移动HWK,不需要rollbacksegment(处理事务回滚操作)而Delete是DML(datamanufacturinglanguage数据操作语言)操作,需要rollbacksegment(处理事务回滚操作)且花费较长时间6.给出数据的相关约束类型?答:主键约束,外键约束,非空约束,唯一约束,检查约束。7.说明索引的类型与作用?答:索引类型上分为聚集索引,非聚集索引.其作用是加快查询速度。8.获取某个字符字段的最后3个字符的函数是什么?答:selectsubstr(字段,(length(字段)-3))from表9.取当前系统时间点日期(不包括年月)的SQL写法是怎样的?答:Selectsubstr(to_char(sysdate,’YYYYMMDDh24hh:MM:SS’),5)fromdual;to_char(sysdate,’YYYYMMDDh24hh:MM:SS’)10.返回大于等于N的最小整数值?答:selectceil(1.5)fromdual;floor(1.5)11.将根据字符查询转换后结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。答:selectdecode(字符,’A’,’男’,’B’,’女’,’未知’)fromdual;12.如何搜索出前N条记录?答:select*from表whereRownum<=N;13.如何搜索出第N~M条记录?答:select表*wherefromRownum<=100Minus表whereselect*fromRownum<=90;Select*from(Selectrownum表名rn,)t.*tfrom(Select*fromwhererownum<=大值)where小值rn>=14.有一个数据表(TEST),字段如下:IDnumberPARENT_IDnumberNAMEVarchar(20)请使用PL/SQL来按父子层次关系查询出该表的所有数据答:Select*fromtesta,testbWherea.parent_id=b.id;15.怎样用SQL语句实现查找一列中的第N大值?答:select*from(select表order列名*byDesc)fromwhereRownum<=NMinusselect*from表order(select列名byDesc)*fromwhereRownum<=N-1;select*from表orderby列名Desc12345678998789请按要求写出下列 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目的答案:表结构EMP表DEPT表列名称定义列名称定义EmpnoNUMBER(4),PKDeptnoNUMBER(2)EnameVARCHAR2(10)DnameVARCHAR2(14)JobVARCHAR2(9)LocVARCHAR2(13)MgrNUMBER(4)HiredateDATESalNUMBER(7,2)CommNUMBER(7,2)DeptnoNUMBER(2),FKEmpno—-雇员编号Ename—-雇员名Job—-工作类型Mgr—-雇员的经理Hiredate—-雇用日期Sal—-每月工资Comm—-销售奖金Deptno—-部门编号Dname—-部门名Loc—-地址17.下面哪两个查询可以用来确定员工Blake所在部门的名称?BCEa.SELECTdnameFROMdeptWHEREename=(„BLAKE‟);b.SELECTd.dnameFROMdeptdNATURALJOINempeWHEREe.ename=„BLAKE‟;(主健和外键的名称和类型必须完全相等)c.SELECTdnameFROMdeptd,empeWHEREe.ename=(„BLAKE‟)ANDd.deptno=e.deptno;d.SELECTdnameFROMdeptJOINempUSING(dname)WHEREename=„BLAKE‟;e.SELECTdnameFROMdeptJOINempONdept.deptno=emp.deptnoWHEREename=„BLAKE‟;18.如果Sal包含各个员工的月薪,那么下面哪一个查询将显示EMP表中的各个员工的年薪?(d)a.SELECTsal*12„AnnualSalary‟FROMemp;b.SELECTsalary*12„annualFROMemp;c.SELECTannualsal*12FROMemp;d.SELECTsal*12FROMemp;19.下面哪一个查询将显示存储在EMP表中的所有数据?Aa.SELECT*FROMemp;b.SELECT%FROMemp;c.SELECT^FROMemp;d.SELECT_FROMemp;20.在执行下面的查询时,下面哪能一种说法反映了将会发生的情况?BSELECTenamefROMempe,empmWHEREe.mgr=m.empno;a.这个查询将产生一个自我联接,显示各个员工的经理的姓名b.将显示一个多义性错误,并且不会执行这个语句c.这个查询将执行一个完全外部联接,并显示没有为其指定经理的员工的姓名d.这个查询将执行一个右外部联接,显示不是经理的员工的姓名21.下面哪些关键字可以用来创建一个不等连接?选出所有正确的选项.Ea.NATURALJOINb.JOIN…USINGc.OUTERJOINd.JOIN…ONe.以上都不可以—-使用任何JOIN关键字都不能创建不等连接22.下面哪一个查询只返回包含DEPT表中而没有在EMP表中列出的部门号?Ca.SELECTdeptnoFROMdeptNATURALJOINempWHEREdeptnoNOTINemp;b.SELECTdeptnoFROMdeptMINUSdeptnoFROMemp;c.SELECTdeptnoFROMdeptMINUSSELECTdeptnoFROMemp;d.SELECTdeptnoFROMdeptJOINempONdept.deptno<>emp.deptno;e.SELECTdeptnoFROMempMINUSSELECTdeptnoFROMdept;23.下面哪一个查询将显示名为King的员工的工号?Aa.SELECTempnoFROMempWHEREename=„%KING‟;b.SELECTempnoFROMempWHEREename=„_ING‟;c.SELECTempnoFROMempWHEREenameLIKEKING;d.SELECTempnoFROMempWHEREename=KING;e.以上查询都不对24.下面哪一个查询将显示销售部在1981年聘用的所有员工?Ba.SELECT*FROMempWHEREdname=‟SALES‟ANDhiredateLIKE‟%81′;b.SELECT*FROMempNATURALJOINdeptWHEREdname=‟SALES‟ANDhiredateLIKE‟%81′;c.SELECT*FROMempWHEREdname=‟SALES‟ORhiredateLIKE‟%81′;d.SELECT*FROMempNATURALJOINdeptWHEREdname=‟SALES‟ANDhiredateLIKE‟%1981′;25.下面哪一个查询将显示存储在EMP表中的各个员工的姓名和职务?选择所有正确的查询.Ca.SELECTename,jobAS”JobTitle”FROMemp;b.SELECTename,job“JobTitle”FROMemp;c.SELECTename,jobFROMemp;d.SELECTename,job„JobTITLE‟FROMemp;e.SELECTename,job„JobTitle‟FROMemp;26.下面哪一种说法最准确地说明了下面的SELECT语句的结果?ASELECTDISTINCTjob,enameFROMemp;a.结果中返回的每一行都是惟一的b.各个职务在结果中只显示一次c.各个职务将只显示一次,并随之显示具有该职务的各个员工的姓名d.结果将按照员工姓名排序27.下面哪一个子句用来选择表中的某些列?Aa.SELECTb.FROMc.WHEREd.ORDERBY28.下面哪一个查询将显示年薪至少为10000美元的所有员工的姓名?Da.SELECTenameFROMempWHEREsal*12>10,000;b.SELECTenameFROMempWHEREsal*12>‟10,000′;c.SELECTenameFROMempWHEREsal*12=>10000;d.SELECTenameFROMempWHEREsal*12>=10000.00;e.上面的语句都不正确29.下面哪些查询将按照员工姓名的顺序显示各个员工的号码?选出所有正确的查询.无a.SELECTename,enameFROMempORDERBYempno;b.SELECTename,enameFROMempORDERBYename;c.SELECTename,enameFROMempORDERBY1;d.SELECTename,enameFROMempORDERBY2;e.SELECTename,enameORDERBYename;30.下面哪一个查询将显示月薪至少为1200美元但是少于2000美元的各个员工的姓名?Da.SELECTenameFROMempWHEREsalBETWEEN(1200,2000);b.SELECTenameFROMempWHEREsalBETWEEN1200and2000;c.SELECTenameFROMempWHEREsal>=1200AND<2000;d.SELECTenameFROMempWHEREsal>=1200ANDsal<2000;e.SELECTenameFROMempWHEREsal>1200ANDsal<2000;31.下面哪一个子句用来限制查询返回的行?Ca.SELECTb.FROMc.WHEREd.ORDERBY32.下面哪一个运算符用来执行模式搜索?Da.INb.BETWEENc.ISNULLd.LIKE33.下面哪些查询在结果中不包括部门30中的任何员工?选出所有正确的答案.Ba.SELECT*FROMempWHEREdeptno!=30;b.SELECT*FROMempWHEREdeptno<>30;c.SELECT*FROMempWHEREdeptno^30;d.SELECT*FROMempWHEREdeptno=30;34.下面哪一个查询将显示没有佣金的所有员工?Ba.SELECTenameFROMempWHEREcomm=NULL;b.SELECTenameFROMempWHEREcommISNULL;c.SELECTenameFROMempWHEREcommLIKENULL;d.SELECTenameFROMempWHEREcommLIKE„NULL‟;35.下面哪一个查询将返回在销售部或会计部工作并且月薪至少为2000美元的所有员工的姓名?选出所有正确的答案.ABCDa.SELECTenameFROMempNATURALJOINdeptWHEREdnameIN(‟SALES‟,'ACCOUNTING‟)ANDsal>=2000;b.SELECTenameFROMempJOINdeptONemp.deptno=dept.deptnoWHEREsal>=2000ANDdname=„SALES‟ORdname=‟ACCOUNTING‟;c.SELECTenameFROMempJOINdeptUSING(deptno)WHEREsal>=2000AND(dname=„SALES‟ORdname=„ACCOUNTING‟);d.SELECTenameFROMempNATURALJOINdeptWHEREsal>=2000AND(dname=„SALES‟ORdname=„ACCOUNTING‟);36.下面哪一个子句用来按照某种顺序显示查询的结果?Da.SELECTb.FROMc.WHEREd.ORDERBY37.在PL/SQL块中,下面哪一部分是必需的?Ba.声明b.可执行c.异常处理d.结束38.下面哪一个参数”不”是过程接受的参数?Aa.INPUTb.OUTc.INOUTd.IN39.如果在PL/SQL块中使用NUMBER数据类型声明了一个变量,但是在创建时没有初始化它,那么将为这个变量指定什么值?Ca.0b.1c.NULLd.99940.下面哪一种循环不需要用户执行OPEN命令来打开显式游标?Da.基本循环b.WHILE循环c.IF循环d.游标FOR循环43.哪一个程序包可以用来显示PL/SQL块中的一个变量的内容?Ba.PUT_LINKb.DBMS_OUTPUT.put_linec.SERVEROUTPUTd.DISPLAY_OUT44.下面哪一个属性可以用来指定游标处理的行数?Aa.%ROWCOUNTb.%ISOPENc.%FOUNDd.%NOTFOUND45.下面哪一个属性可以用来为记录指定一行的结构?Da.%FOUNDb.%TYPEc.%STRUCTUREd.%ROWTYPE46.下面哪些属性可以用来控制循环的执行?选出所有正确的答案.CDa.%ROWCOUNTb.%ISOPENc.%FOOUNDd.%NOTFOUND47.下面哪些项目可以用来在PL/SQL块中初始化一个变量?选出所有正确的答案.Ca.DEFAULTb.=c.:=d.<>50.下面哪一个符号可以用来在Oracle9i中执行一个脚本文件?Ca.%b.$c.@d.!完成下列操作,写出相应的SQL语句51.创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data目录下,文件大小为200MB,设为自动增长,增量5MB,文件最大为500MB。(8分)答:createtablespaceneuspacedatafile‘d:\data\neudata.dbf’size200mautoextendonnext5mmaxsize500m;52.假设表空间neuspace已用尽500MB空间,现要求增加一个数据文件,存放在e:\appdata目录下,文件名为appneudata,大小为500MB,不自动增长。(5分)答:altertablespaceneuspaceadddatafile‘e:\appdata\appneudata.dbf’size500m;53.以系统管理员身份登录,创建账号tom,设置tom的默认表空间为neuspace。为tom分配connect和resource系统角色,获取基本的系统权限。然后为tom分配对用户scott的表emp的select权限和对SAL,MGR属性的update权限。(8分)答:createusertomidentifiedbyjackdefaulttablespaceneuspace;Grantconnect,resourcetotom;Grantselect,update(salary,mgr)onscott.emptotom;54.按如下要求创建表class和student。(15分)属性类型(长度)默认值约束含义CLASSNO数值(2)无主键班级编号CNAME变长字符(10)无非空班级名称属性类型(长度)默认值约束含义STUNO数值(8)无主键学号SNAME变长字符(12)无非空姓名SEX字符(2)男无性别BIRTHDAY日期无无生日EMAIL变长字符(20)无唯一电子邮件SCORE数值(5,2)无检查成绩CLASSNO数值(2)无外键,关联到表CLASS的班级编号CLASSNO主键答:createtableclass(classnonumber(2)constraintclass_classno_pkprimarykey,cnamevarchar2(10)notnull);createtablestudent(stunonumber(8)constraintstudent_stuno_pkprimarykey,snamevarchar2(12)notnull,sexchar(2)default‘男’,birthdaydate,emailvarchar2(20)constraintstudent_email_ukuni表结构说明:createtablemyemp(idnumber(10)notnull,salarynumber(10,2)default0notnull,namevarchar2(24)notnull);1.创建序列seq_employee,该序列每次取的时候它会自动增加,从1开始计数,不设最大值,并且一直累加,不循环。(10分)Createsequenceseq_employeeincrementby1startwith1nomaxvaluenocycle2.写一个PL/SQL块,插入表user.employee中100条数据。插入该表中字段id用序列seq_employee实现,薪水和姓名字段可以任意填写。(15分)declareinumber;beginforiin1..100loopinsertintoemployeevalues(seq_employee.nextval,1950+i,’王明’||to_char(i));commit;endloop;end;/6.写一个语句块,在语句块中定义一个显式游标,按id升序排列,打印表employee中前十条数据。(15分)declarecursorcisselectid,salary,namefrom(select*fromemployeeorderbyid)whererownum<11;v_recordc%rowtype;beginopenc;loopfetchcintov_record;exitwhenc%notfound;dbms_output.put_line(to_char(v_record.id)||’,'||to_char(v_record.salary)||’,'||v_record.name);endloop;closec;end;/7.创建存储过程p_employee,输入员工薪水范围,返回员工工号、姓名、薪水结果集,结果集按员工薪水升序排列。(15分)createorreplaceprocedurep_employee(iminsalaryinnumber,imaxsalaryinnumber)isbeginforxin(selectid,salary,namefrom(select*fromemployeewheresalarybetweeniminsalaryandimaxsalary)orderbysalary)loopdbms_output.put_line(to_char(x.id)||to_char(x.salary)||x.name);endloop;end;/8.创建函数f_employee实现更新员工薪水的功能,将薪水低于2000且姓wang的员工薪水加5%,其他不变,更新成功则返回0,否则返回1。(15分)答:createorreplacefunctionf_employeeReturnnumberisbeginupdateemployeesetsalary=salary+salary*0.05wheresalary<2000and‘王%’name;likecommit;ifSQL%rowcount=0thenreturn1;elsereturn0;endif;end;/问答题:1、写分页有哪些方法,你一般用什么方法?用SQL语句写一个分页?如何用存储过程写分页?select*from(selectn.*,row_number()over(orderbycolumnname)numfromtablenamen)wherenum>=10andnum<=20;使用过程时,只要将分页的范围用两个参数就可以实现。在ORACLE中,要将过程封装在包里,还要用动态游标变量才能实现数据集的返回。2、什么时候会用到触发器答:A安全管理、B日志管理、C复杂业务逻辑实现3、如何在数据库中显示树控制?答:用父ID与子ID来实现4、如何实现数据库的优化?答:A、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。B、调整应用程序结构设计。这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。C、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(OracleOptimizer)和行锁管理器(row-levelmanager)来调整优化SQL语句。D、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。E、调整硬盘I/O,这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。SCISCF、调整操作系统参数,例如:运行在UNIX操作系统上的ORACLE数据库,可以调整UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数。
本文档为【oracle常见面试题及答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
云匠
暂无简介~
格式:pdf
大小:596KB
软件:PDF阅读器
页数:17
分类:
上传时间:2022-12-22
浏览量:2