Oracle面试题及答案整理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Oracle面试题及答案整理1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。selectfclass,max(fscore)fromtable1groupbyfclass,fid2、有一个表table1有两个字段FID,Fno,字都非空,写一个SQL语句列出该表中一个FID对应多个不同的Fno的纪录。类如:101a1001101a1001102a1002102a1003103a1004104a1005104a1006105a1007105a1007105a1007结果:102a1002102a1003104a1005104a1006selectt2.*fromtable1t1,table1t2wheret1.fid=t2.fidandt1.fnot2.fno;3、有员工表empinfo(Fempnovarchar2(10)notnullpk,Fempnamevarchar2(20)notnull,Fagenumbernotnull,Fsalarynumbernotnull);假如数据量很大约1000万条;写一个你认为最高效的SQL,用一个SQL计算以下四种人:fsalary9999andfage35fsalary9999andfage35fsalary9999andfage35fsalary9999andfage35每种员工的数量;selectsum(casewhenfsalary9999andfage35then1else0end)asfsalary9999_fage35,sum(casewhenfsalary9999andfage35then1else0end)asfsalary9999_fage35,sum(casewhenfsalary9999andfage35then1else0end)asfsalary9999_fage35,sum(casewhenfsalary9999andfage35then1else0end)asfsalary9999_fage35fromempinfo;4、表A字段如下monthpersonincome月份人员收入要求用一个SQL语句(注意是一个)的处所有人(不区分人员)每个月及上月和下月的总收入要求列表输出为月份当月收入上月收入下月收入MONTHSPERSONINCOME------------------------------200807mantisXF5000200806mantisXF23500200806mantisXF33000200805mantisXF12000200805mantisXF62200200804mantisXF718002008038mantisXF40002008029mantisXF420020080210mantisXF330020080111mantisXF460020080911mantisXF680011rowsselectedselectmonths,max(incomes),max(prev_months),max(next_months)from(selectmonths,incomes,decode(lag(months)over(orderbymonths),to_char(add_months(to_date(months,'yyyymm'),-1),'yyyymm'),lag(incomes)over(orderbymonths),0)asprev_months,decode(lead(months)over(orderbymonths),to_char(add_months(to_date(months,'yyyymm'),1),'yyyymm'),lead(incomes)over(orderbymonths),0)asnext_monthsfrom(selectmonths,sum(income)asincomesfromagroupbymonths)aa)aaagroupbymonths;MONTHSMAX(INCOMES)MAX(PREV_MONTHS)MAX(NEXT_MONTHS)------------------------------------------------------2008014600075002008027500460040002008034000750018002008041800400042002008054200180065002008066500420050002008075000650002008096800005,表BC1c22005-01-0112005-01-0132005-01-025要求的处数据2005-01-0142005-01-025合计9试用一个Sql语句完成。selectnvl(to_char(t02,'yyyy-mm-dd'),'合计'),sum(t01)fromtestgroupbyrollup(t02)6,数据库1,2,3范式的概念与理解。7,简述oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。8、oracle临时表有几种。临时表和普通表的主要区别有哪些,使用临时表的主要原因是什么?9,怎么实现:使一个会话里面执行的多个过程函数或触发器里面都可以访问的全局变量的效果,并且要实现会话间隔离?10,aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引,请用SQL列出aa表里面存在的X在bb表不存在的X的值,请写出认为最快的语句,并解译原因。11,简述SGA主要组成结构和用途?12什么是分区表?简述范围分区和列表分区的区别,分区表的主要优势有哪些?13,背景:某数据运行在archivelog,且用rman作过全备份和数据库的冷备份,且所有的归档日志都有,现控制文件全部损坏,其他文件全部完好,请问该怎么恢复该数据库,说一两种方法。14,用rman写一个备份语句:备份表空间TSB,level为2的增量备份。15,有个表a(xnumber(20),ynumber(20))用最快速高效的SQL向该表插入从1开始的连续的1000万记录。1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。2、有一个表table1有两个字段FID,Fno,字都非空,写一个SQL语句列出该表中一个FID对应多个不同的Fno的纪录。类如:101a1001101a1001102a1002102a1003103a1004104a1005104a1006105a1007105a1007105a1007结果:102a1002102a1003104a1005104a10063、有员工表empinfo(Fempnovarchar2(10)notnullpk,Fempnamevarchar2(20)notnull,Fagenumbernotnull,Fsalarynumbernotnull);假如数据量很大约1000万条;写一个你认为最高效的SQL,用一个SQL计算以下四种人:fsalary9999andfage35fsalary9999andfage35fsalary9999andfage35fsalary9999andfage35每种员工的数量;4、表A字段如下monthpersonincome月份人员收入要求用一个SQL语句(注意是一个)的处所有人(不区分人员)每个月及上月和下月的总收入要求列表输出为月份当月收入上月收入下月收入5,表BC1c22005-01-0112005-01-0132005-01-025要求的处数据2005-01-0142005-01-025合计9试用一个Sql语句完成。6,数据库1,2,3范式的概念与理解。7,简述oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。8、oracle临时表有几种。临时表和普通表的主要区别有哪些,使用临时表的主要原因是什么?9,怎么实现:使一个会话里面执行的多个过程函数或触发器里面都可以访问的全局变量的效果,并且要实现会话间隔离?10,aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引,请用SQL列出aa表里面存在的X在bb表不存在的X的值,请写出认为最快的语句,并解译原因。11,简述SGA主要组成结构和用途?12什么是分区表?简述范围分区和列表分区的区别,分区表的主要优势有哪些?13,背景:某数据运行在archivelog,且用rman作过全备份和数据库的冷备份,且所有的归档日志都有,现控制文件全部损坏,其他文件全部完好,请问该怎么恢复该数据库,说一两种方法。14,用rman写一个备份语句:备份表空间TSB,level为2的增量备份。15,有个表a(xnumber(20),ynumber(20))用最快速高效的SQL向该表插入从1开始的连续的1000万记录。答案:1、selectFclass,max(Fscore)fromtable1groupbyFclass2、select*fromtable1whereFIDin(selectFIDfromtable1groupbyFIDhaving(count(DistinctFno))=2)3、selectsum(casewhenfsalary9999andfage35then1else0end),sum(casewhenfsalary9999andfage35then1else0end),sum(casewhenfsalary9999andfage35then1else0end),sum(casewhenfsalary9999andfage35then1else0end)fromempinfo4、Select(SelectMonthFromTableWhereMonth=To_Char(Sysdate,'mm'))月份,(SelectSum(Income)FromTableWhereMonth=To_Char(Sysdate,'mm'))当月收入,(SelectSum(Income)FromTableWhereTo_Number(Month)=To_Number(Extract(MonthFromSysdate))-1)上月收入,(SelectSum(Income)FromTableWhereTo_Number(Month)=To_Number(Extract(MonthFromSysdate))+1)下月收入FromDual5、selectnvl(c1,'合计'),sum(c2)fromBgroupbyrollup(c1)6.关系数据库设计之时是要遵守一定的规则的。尤其是数据库设计范式简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式),第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话和一个家里电话号码)规范成为1NF有三种方法:一是重复存储职工号和姓名。这样,关键字只能是电话号码。二是职工号为关键字,电话号码分为单位电话和住宅电话两个属性三是职工号为关键字,但强制每条记录只能有一个电话号码。以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。第二范式(2NF):如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R是属于第二范式的。例:选课关系SCI(SNO,CNO,GRADE,CREDIT)其中SNO为学号,CNO为课程号,GRADEGE为成绩,CREDIT为学分。由以上条件,关键字为组合关键字(SNO,CNO)在应用中使用以

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功