数据库面试题

分类及常用数据库

数据库分为:关系型数据库和非关系型数据库。

关系型:mysql、oracle、sqlserver 等。

非关系型:redis、memcache、mogodb、hadoop 等。

三大范式

范式就是规范,就是关系型数据库在设计表时,要遵循的三个规范。

要想满足第二范式必须先满足第一范式,要满足第三范式必须先满足第二范式。

  1. 第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。即实体中的某个属性不能有多个值或者不能有重复的属性。(列数据的不可分割

  2. 第二范式(2NF)要求数据库表中的每个行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。(主键)

  3. 第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。满足第三范式(3NF)必须先满足第二范式(2NF)。(外键)

反三范式,有的时候为了效率,可以设置重复或者可以推导出的字段,如订单(总价)和订单项(单价)。

事务的四个基本特征或 ACID 特性

事务是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。

一个转账必须 A账号扣钱成功,B账号加钱成功,才算正真的转账成功。

事务必须满足的四大特征:

  1. 原子性:表示事务内操作不可分割。要么都成功、要么都是失败。
  2. 一致性:要么都成功、要么都是失败,后面的失败了要对前面的操作进行回滚
  3. 隔离性:一个事务开始后,不能受其他事务干扰。
  4. 持久性/持续性:表示事务开始了,就不能终止。

mysql数据库的默认的最大连接数

100

为什么需要最大连接数?特定服务器上面的数据库只能支持一定数目同时连接,这时候我们一般都会设置最大连接数(最多同时服务多少连接)。在数据库安装时都会有一个默认的最大连接数为100。

说一下msyql的分页?Oracle的分页?

为什么需要分页?在很多数据是,不可能完全显示数据。进行分段显示。

Mysql是使用关键字limit来进行分页的 limit offset,size 表示从多少索引去多少位。 Oracle的分页,大部分情况下,我们是记不住了。说思路,要使用三层嵌套查询。 Oracle的分页有点儿记不住了,只记得一些大概。是使用了三层嵌套查询。如果在工作中使用了,可以到原来的项目中拷贝或上网查询。

mysql:

String sql = 
"select * from students order by id limit " + pageSize*(pageNumber-1) + "," + pageSize;
1
2

oracle:

String sql = 
 "select * from " +  
 (select *,rownum rid from (select * from students order by postime desc) where rid<=" + pagesize*pagenumber + ") as t" + 
 "where t>" + pageSize*(pageNumber-1);
1
2
3
4