好久没有给大家发面试题了,最近收集了一套Oracle的面试题,特地整理出来分享给大家,希望对你有帮助。
1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。
2、有一个表table1有两个字段FID,Fno,字都非空,写一个SQL语句列出该表中一个FID对应多个不同的Fno的纪录。
结果:
3、有员工表empinfo
(
Fempno varchar2(10) not null pk,
Fempname varchar2(20) not null,
Fage number not null,
Fsalary number not null
);
假如数据量很大约1000万条;写一个你认为最高效的SQL,用一个SQL计算以下四种人:
4、表A字段如下
5,表B
要求的输出数据
试用一个Sql语句完成。
6,简述oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。
7、oracle临时表有几种。
8,aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引,
9,简述SGA主要组成结构和用途?
10、什么是分区表?简述范围分区和列表分区的区别,分区表的主要优势有哪些?
11,背景:某数据运行在archivelog,且用rman作过全备份和数据库的冷备份,
12,有个表a(x number(20),y number(20))用最快速高效的SQL向该表插入从1开始的连续的1000万记录。
参考答案
1、
select
Fclass,
max(Fscore)
from table1
group by Fclass
2、
select * from table1
where FID in
(
select FID from table1
group by FID
having
count(Distinct Fno)>=2
)
3、
select
sum(case when fsalary>9999 and fage>35 then 1 else 0 end),
sum(case when fsalary>9999 and fage<35 then 1 else 0 end),
sum(case when fsalary<9999 and="" fage="">35 then 1 else 0 end),
sum(case when fsalary<9999 and fage<35 then 1 else 0 end)
from empinfo
4、
Select
(Select Month From Table Where Month = To_Char(Sysdate, 'mm')) 月份,
(Select Sum(Income) From Table Where Month = To_Char(Sysdate, 'mm')) 当月收入,
(Select Sum(Income) From Table Where To_Number(Month) = To_Number(Extract(Month From Sysdate)) - 1) 上月收入,
(Select Sum(Income) From Table Where To_Number(Month) = To_Number(Extract(Month From Sysdate)) + 1) 下月收入
From Dual
5、
select
nvl(c1,'合计'),
sum(c2)
from B
group by rollup(c1)
6.
限制:对于Session本身,不能读取正在变化的表
限制表constraining table
限制:如果限制列正在被改变,那么读取或修改会触发错误,但是修改其它列是允许的。
7.
CREATE GLOBAL TEMPORARY ( )
ON COMMIT PRESERVE ROWS;
b、事务特有的临时表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的临时表虽然是存在的,但是你试一下insert 一条记录然后用别的连接登上去select,记录是空的,明白了吧。
8.
select aa.x from aa
where not exists
(
select 'x' from bb
where aa.x = bb.x
) ;
以上语句同时使用到了aa中x的索引和的bb中x的索引
9.
10.
范围分区
列表分区
分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务。通过分区,数据库设计人员和管理员能够解决前沿应用程序带来的一些难题。分区是构建千兆字节数据系统或超高可用性系统的关键工具。
11.
12.
drop index idx_a;
insert /*+ append no_logging */ into a values(x,y)
select 1 from dual connect by level<1000001;
create index idx_a on a(x,y);
End
往期精彩:
转载:https://blog.csdn.net/wujiandao/article/details/102480306