您的位置:首页 > 职场人生

面试题五-- 数据库部分

2016-12-06 15:19 316 查看
3、存储过程与触发器必须讲,经常被面试到?
你发一个日志,自动通知好友,其实就是在增加日志时做一个后触发,再向通知表中写入条目。

5、说出一些数据库优化方面的经验?
用PreparedStatement 一般来说比Statement性能高
有外键约束会影响插入和删除性能
表中允许适当冗余
还有索引对查询性能的改进也是值得关注的。

7.分页语句
取出sql表中第31到40的记录(以自动增长ID为主键)

mysql方案:select * from t order by id limit 30,10

oracle方案:select * from (select rownum r,* from t where r<=40) where r>30

--------------------待整理进去的内容-------------------------------------
pageSize=20;
pageNo = 5;

1.分页技术1(直接利用sql语句进行分页,效率最高和最推荐的)

mysql:sql = "select * from articles limit " + (pageNo-1)*pageSize + "," + pageSize;
oracle: sql = "select * from " +
"(select rownum r,* from " +
"(select * from articles order by postime desc)" +
"where rownum<= " + pageNo*pageSize +") tmp " +
"where r>" + (pageNo-1)*pageSize;
注释:第7行保证rownum的顺序是确定的,因为oracle的索引会造成rownum返回不同的值
简洋提示:没有order by时,rownum按顺序输出,一旦有了order by,rownum不按顺序输出了,这说明rownum是排序前的编号。如果对order by从句中的字段建立了索引,那么,rownum也是按顺序输出的,因为这时候生成原始的查询结果集时会参照索引表的顺序来构建。

8.用一条SQL语句 查询出每门课都大于80分的学生姓名
name   kecheng   fenshu
张三     语文       81
张三     数学       75
李四     语文       76
李四     数学       90
王五     语文       81
王五     数学       100
王五     英语       90

提示:当百思不得其解时,请理想思维,把小变成大做,把大变成小做,

答案:
A: select distinct name from score  where  name not in (select distinct name from score where score<=80)

B:select distince name t1 from score where 80< all (select score from score where name=t1);

Class.forName的作用?为什么要用?
答:作用是动态加载类,使用配置文件时候不知道类名的情况使用比如依赖注入,加载jdbc驱动

有一个SQL题在面试中出现的概率极高,最近有学生出去面试仍然会遇到这样的题目,在这里跟大家分享一下。

题目:数据库中有一张如下所示的表,表名为sales。

年   季度  销售量
1991    1   11
1991    2   12
1991    3   13
1991    4   14
1992    1   21
1992    2   22
1992    3   23
1992    4   24

要求:写一个SQL语句查询出如下所示的结果。

年   一季度 二季度 三季度 四季度
1991    11  12  13  14
1992    21  22  23  24

我给出的答案是这样的:

select 年,
sum(case when 季度=1 then 销售量 else 0 end) as 一季度,
sum(case when 季度=2 then 销售量 else 0 end) as 二季度,
sum(case when 季度=3 then 销售量 else 0 end) as 三季度,
sum(case when 季度=4 then 销售量 else 0 end) as 四季度
from sales group by 年;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题