最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Oracle面试题汇总

来源:动视网 责编:小OO 时间:2025-09-27 08:26:20
文档

Oracle面试题汇总

尚学堂内部资料整理http://www.bjsxt.com严禁传播Database_JDBC面试题1.表1表1(Company)表2(Hire)CompanyNameIDLS6DG9GR19CompanyID(公司ID)NumHired(人数)FiscalQuater(财季)62392419412.A:找出表中的主键B:找出表之间的关系C:求第四财季招聘过员工的公司名称D:求从一到四财季从没有招聘过员工的公司名称E:从第一到第四财季之间招聘过员工的公司名称和他们各自招聘的员工总数答案:A:1:
推荐度:
导读尚学堂内部资料整理http://www.bjsxt.com严禁传播Database_JDBC面试题1.表1表1(Company)表2(Hire)CompanyNameIDLS6DG9GR19CompanyID(公司ID)NumHired(人数)FiscalQuater(财季)62392419412.A:找出表中的主键B:找出表之间的关系C:求第四财季招聘过员工的公司名称D:求从一到四财季从没有招聘过员工的公司名称E:从第一到第四财季之间招聘过员工的公司名称和他们各自招聘的员工总数答案:A:1:

尚学堂内部资料整理 

http://www.bjsxt.com 

严禁传播

Database_JDBC面试题

1.

表1 

表1(Company)

表2(Hire)

CompanyNameID
LS6
DG9
GR19
CompanyID(公司ID)

NumHired(人数)

FiscalQuater(财季)

623
924
1941
2.

A:找出表中的主键

B:找出表之间的关系

C:求第四财季招聘过员工的公司名称

D:求从一到四财季从没有招聘过员工的公司名称 

E: 从第一到第四财季之间招聘过员工的公司名称和他们各自招聘的员工总数 

答案:

A: 1:ID 2:CompanyID & FiscalQuater

B:2中CompanyID参考1中的ID

C:

select CompanyName from Company where ID in 

select distinct CompanyID from Hire h where FiscalQuater = 4 and NumHired > 0 

)

D: 

select CompanyName from Company where ID not in 

select distinct CompanyID from Hire

)

E:

select CompanyName, sum(NumHired) from Company c join Hire h on (c.ID = h.CompanyID) group by h.CompanyID 

3.

产品(productName)

颜色(color)

数量(num)

产品1

红色123
产品1

蓝色126
产品2

蓝色103
产品2

红色NULL
产品2

红色
产品1

红色203
1.按产品分类仅列出各类商品中红色多于蓝色的商品名称及差额数量 

2.按产品分类,将数据按下列方式进行统计显示 

产品     红色     蓝色

产品1   1500   1298 

... 

答案:(假设表的名字叫做p,使用Oracle的方言)

1: 

select red.productName from 

select productName, sum(nvl(num, 0)) totalNum from p where color='红色' group by productName 

) red

join 

select productName, sum(nvl(num, 0)) totalNum from p where color='蓝色' group by productName 

) blue 

on

red.productName = blue.productName and red.totalNum > blue.totalNum

2:

select red.productName as "产品", red.totalNum as "红色", blue.totalNum as "蓝色" from 

select productName, sum(nvl(num, 0)) totalNum from p where color='红色' group by productName 

) red

join 

select productName, sum(nvl(num, 0)) totalNum from p where color='蓝色' group by productName 

) blue 

on

red.productName = blue.productName 

4.

今天突然想起来很久以前的一个sql面试题,在同事的帮助下终于实现了.在此对vivianhu(MM)表示感谢. 

题目具体数据记不清了,但是大概意思一样,要求在查询分析器中完成,题目如下: 

表className中有如下分类: 

classID className 

1 衣服 

2 裤子 

5 帽子 

10 鞋子 

表productInfo有如下记录: 

productID productName parentID clickNum 

1 男士衣服 1 90 --衣服类别中这条记录的点击率最高 

2 女士衣服 1 80 

3 男士裤子 2 70 

4 女士裤子 2 90 --裤子类别中这条记录点击率最高 

5 男士帽子 5 15 

6 女士帽子 5 30 --帽子类别中这条点击率最高 

7 男士鞋子 10 65 --鞋子类别中这条点击率最高 

8 女士鞋子 10 52 

9 女士鞋子1 10 54 

现在要求分别把衣服,裤子,帽子,鞋子这些类别中点击率最高的一条记录找出来,然后再降序排列,结果应如下: 

productID productName clickNum 

1 男士衣服 90 

4 女士裤子 90 

7 男士鞋子 65 

6 女士帽子 30 

答案:

select pID, pName, clickNum from productInfo pi join 

(select parentId, max(clicknum) max_num from productInfo group by parentId) t

on (pi.parentId = t.parentId and pi.clickNum = t.max_num) order by clickNum desc;

5.

有3个表S,C,SC 

S(SNO,SNAME)代表(学号,姓名) 

C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) 

SC(SNO,CNO,SCGRADE)代表(学号,课号成绩) 

问题: 

1,找出没选过“黎明”老师的所有学生姓名。 

2,列出2门以上(含2门)不及格学生姓名及平均成绩。 

3,即学过1号课程有学过2号课所有学生的姓名。 

请用标准SQL语言写出答案,方言也行(请说明是使用什么方言)。 

答案:

select sname from s where sno not in 

(select sno from sc where cno in 

(select distinct cno from c where cteacher='黎明')

); 

select sname, avg_scgrade from s join

(select sno, avg(scgrade) avg_scgrade from sc where scgrade < 60 group by sno having count(*) >= 2) t

on (s.sno = t.sno);

select sname from s where sno in (select

sno from sc where cno = 1 and sno in (select distinct sno frm sc where cno = 2)

);

6.比较难的面试题,保留网上的评论(5.html) 

7.(6.html) 

8.(7.html) 

9.(8.html) 

10.(9.html) 

11.(10.html) 

12.

现在有这样一个数据表student 

name object score 

a EN  

a CH 78 

a HO 99 

b EN 34 

b CH 88 

b HO 66 

要求生成下面样式 

name EN CH HO 

a  78 99 

b 34 88 66

这个叫做行转列,我们的练习也做了,上面也有类似的,如果作不出来,问老师:) 

13.

表一 

学生编号 学生姓名 科别 分数 

1083 张三 语文 75 

1083 张三 数学 84 

1083 张三 英语 92 

1084 李四 语文 84 

1084 李四 数学 93 

1084 李四 英语 87 

怎么得出如下的表 

学生编号 学生姓名 语文 数学 英语 

1083 张三 75 84 92 

1084 李四 84 93 87 

跟上一道题类似,自己建一张类似的表试试 

14.(13.html) 

15.(14.html) 

16.(15.html) 

17.(16.html)这个很难很麻烦,写不出来的时候应该用程序完成 

18.删掉重复的值

id name age

1 a 23

...

1 a 23

....

1 a 23 

create table xxx

select distinct (id, name, age);

id productname salescount

1 a 23

...

15 a 23

...

30 a 23

create table xxx

(id, productname, salescount); sequence 

select distinct (name, count)

如果要求id号和原来一样怎么办?

delete from t where id not in (select min(id) from t group by (productname, salescount));

(如果是Oracle,可以使用rowid来删除)

19.Class.forName的作用?为什么要用? 

  答:调用该访问返回一个以字符串指定类名的类的对象。

20.JDO是什么?

   答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额 外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它 可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对 象数据库(ODBMS)等等,使得应用可移植性更强。

21.说出数据连接池的工作机制是什么?

J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果 当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用 就可以使用这个连接。

22.可能会让你写一段Jdbc连Oracle的程序,并实现数据查询(这个非常重要,面试的时候经常考,注意格式和周全考虑,以及try/catch/finally) 

23.ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。 

  答:一种分页方法:(不推荐使用,效率太低)

<%

  int i=1;

  int numPages=14;

  String pages = request.getParameter("page") ;

  int currentPage = 1;

  currentPage=(pages==null)?(1):{Integer.parseInt(pages)}

  sql = "select count(*) from tables";

  ResultSet rs = DBLink.executeQuery(sql) ;

  while(rs.next()) i = rs.getInt(1) ;

  int intPageCount=1;

  intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);

  int nextPage ;

  int upPage;

  nextPage = currentPage+1;

  if (nextPage>=intPageCount) nextPage=intPageCount;

  upPage = currentPage-1;

  if (upPage<=1) upPage=1;

  rs.close();

  sql="select * from tables";

  rs=DBLink.executeQuery(sql);

  i=0;

  while((i%>

  输出内容:

//输出翻页连接

合 计:<%=currentPage%>/<%=intPageCount%>首页">上页

<%

  for(int j=1;j<=intPageCount;j++){

  if(currentPage!=j){

%>

  ">[<%=j%>] 

<%

  }else{ 

   out.println(j);

  }

  }

%>

">下页">末页

24.JDBC调用数据库的基本步骤导入必要的类,装入JDBC驱动程序,识别数据源,分配一个Connection对象,分配一个Statement对象,使 用Statement执行一个查询,从返回的ResultSet对象中检索数据,关闭ResultSet,关闭Statement对象,关闭 Connection对象

25.动态查询如何实现?表的结构变化后,如果不需要修改程序,如何设计和实现查询?

答:讲查询封装进存储过程中,通过调用存储过程实现动态调用;表结构发生变化后修改相应的存储过程即可再不修改程序的情况下实现查询。

老师评语:上面的答案不够好,如果可以,还可以在程序中根据表结构动态生成SQL语句 

26.如何优化数据库,如何提高数据库的性能?

答:优化数据库主要是优化查询语句,通过高性能的查询语句提高数据库的性能。

老师评语:还有优化表的结构,比如说树。正确地使用索引、缓存等技巧也可以优化性能 

27.设计数据库应注意那些问题答:首先应尽量满足三范式的要求,在一定程度上打破3范式的要求以提高数据库的性能。 

28.表与表之间的关联关系答:分为3种:一对一、一对多、多对多。 

29.主键和外键的区别答:主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。 

30.写出从数据库表Custom中查询No、Name、Num1、Num2并将Name以姓名显示、计算出的和以总和显示的SQL。SELECT  No ,  Name  AS  ‘姓名' ,Num1 ,Num2,(Num1+Num2) AS  ‘总和'

FROM Custom 

31.锁 是在多用户环境中对数据访问的封锁就是事务 T 在对某个数据对象(如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。(锁蕴含的基本概念是用户需要对表的排它访问)?从程序员的角度 看:分为乐观锁和悲观锁。乐观锁:完全依靠数据库来管理锁的工作。悲观锁:程序员自己管理数据或对象上的锁处理。

老师评语:到Hibernate之后再回来看这个问题。 

  

文档

Oracle面试题汇总

尚学堂内部资料整理http://www.bjsxt.com严禁传播Database_JDBC面试题1.表1表1(Company)表2(Hire)CompanyNameIDLS6DG9GR19CompanyID(公司ID)NumHired(人数)FiscalQuater(财季)62392419412.A:找出表中的主键B:找出表之间的关系C:求第四财季招聘过员工的公司名称D:求从一到四财季从没有招聘过员工的公司名称E:从第一到第四财季之间招聘过员工的公司名称和他们各自招聘的员工总数答案:A:1:
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top