文档介绍:数据库 SQL面试题
谈一下数据库的索引的原理,如何发挥作用的?针对插入操作索引会起正面作用么?
索引类似于书的目录,主要用于提高查询效率,也就是按条件查询的时候,先查询索引,再通过索引找到相关的数据,索引相当于记录了对某个关键词,指定到不同的文件,或者文件里的不同位置的结构
索引会降低数据更新的效率,当插入、修改、删除时会引起索引结构的更新
2) 数据库表里如果数据行数很多,做分页查询,SQL如何书写?针对不同的数据库。
Oracle:
Select * from
(select a.*, rownum rn from
(select * from tablename) a where rownum<=30)
Where rn>20
3) 说说group by, having是做什么的,举一个group by的例子
Group by 是分组查询,一般group by是和聚合函数配合使用,group by有一个重要的原则,就是select后面的所有列中,没有使用聚合函数的列,必须出现在group by后面。
Having子句的作用是筛选满足条件的组,即对分组后的数据进行过滤,条件中经常包含聚合函数。
与where的区别,where的作用:在分组之前过滤数据,条件中不能包含聚合函数,使用where条件显示特定的行。
select className ,count(stuNo) from student group by className having count(stuNo) >20
4) 说说外连接和内连接的区别
5) 为什么有时用exists, not exists比用in,not in效率要高
  select * from quyu_t a where not exists(select 'x' from quyu_t_his b where =);
select * from quyu_t where username not in (select username from quyu_t_his)
in适合内外表都很大的情况,exists适合外表结果集很小的情况
6) 事务是什么概念,举例说明
事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单元。
例如银行转账操作。
事务的特性:acid
7) 一个表:emp(姓名,性别,年龄,工作类型,领导姓名,工资,部门)
a) 列出每个部门的最高工资和最低工资
Select 部门,max(工资),min(工资) from emp group by 部门
b) 列出各部门’工作类型’为’普通职员’的最低和最高工资
Select 部门,max(工资),min(工资) from emp where 工作类型=’普通员工’ group by 部门
c) 列出高于本部门平均工资的员工姓名,工资,部门
select 姓名,工资,部门 from emp B ,
(select 部门,avg(工资) from emp group by 部门)A
Where = and >
存储过程和函数的区别是什么?
答:存储过程是用