P3-DataBase
1. 数据库分类:
1.1关系型数据库:Mysql、Oracle、SqlServer(Windows环境运行);
1.2非关系型数据库:Redis、Memcache、Mogodb、Hadoop等;
2. 关系型数据库的三范式:(要想满足第二范式必须先满足第一范式,要想满足第三范式必须先满足第二范式)
范式(就是规范):关系型数据库在设计表时要遵循的三个规范;
第一范式(1NF):指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值;也就是说实体中的某个属性不能有多个值或者不能有多个重复的属性;列数据的不可分割;
第二范式(2NF):指数据库表中的每一行必须可以被唯一的区分,为实现区分,通常要为表加一个列,以存储各个实例的唯一标识;就是主键;
第三范式(3NF):指要求一个数据表中不包含已在其他表中已包含的非主关键字信息;就是外键;
反三范式:有的时候为了效率,可以设置重复的或者可以推导出的字段;(案列:订单(总价)和订单项(单价));
3. 什么是事务?
事务:是并发控制的单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位;
四大特性:
原子性(Atomicity):表示事务内操作不可分割,要么都成功,要么都失败;
一致性(Consistency):要么都成功,要么都失败,失败了要对前面的操作进行回滚;
隔离性(Isolation):一个事务开始后,不能使其他事务干扰;
持久性(Durability):表示事务开始了就不能终止;
4. Mysql数据库的默认最大连接数?
4.1 为什么需要最大连接数?
特定服务器上面的数据库只能支持一定数目同时连接,这时候需要我们设置最大连接数;(也就是最多同时服务多少连接),在数据库安装时,都会有一个默认值的最大连接数;
5. 说一下Mysql的分页?Oracle的分页?
需求:在有很多数据的时候,不可能完全显示数据,需要进行分段显示;
Mysql分页是使用关键字LIMIT来进行分页;
Oracle分页是使用三层嵌套查询,面试可简单回答思路......;
6. 简单说数据库的触发器的使用场景?
触发器需要有触发条件,当条件满足以后,去执行某些操作;(转载:https://www.cnblogs.com/phpper/p/7587031.html);
7. 简述数据库的存储过程:
优点:
7.1:存储过程只在创建时进行编译,以后每次执行存储过程都不需要再重新编译,而一般sql语句每执行一次就编译一次,因此,使用存储过程大大提高数据库的执行速度;
7.2:复杂的业务逻辑需要多条sql语句,这些语句要分别地从客户机发送到服务器,当客户机与服务器之间的操作很多时,将产生大量的网络传输,如果将这些操作放在一个存储过程中,那客户机与服务器之间的网络传输就会大大减少,降低了网络负载;
7.3:存储过程可以创建一次重复使用,减少开发人员的工作量;
7.4:安全性高;存储过程可以屏蔽对底层数据库对象的直接访问,使用EXECUTE权限调用存储过程,无需拥有访问底层数据库对象的显示权限;
目前常用的数据库都支持存储过程;
8. JDBC调用存储过程?
加载驱动、获取数据库连接、获取传输器、执行sql、遍历结果集、释放资源
9. PreparedStatement带有预编译的效果,比Statement速度快;
PreparedStatement代码的可读性和可维护性高;
PreparedStatement可以防止sql注入攻击;“or 1 = 1”
10. 数据库连接池的作用:
限定线程的个数,不会导致线程过多而导致系统运行缓慢或崩溃;
数据库连接不需要每次都去创建或者销毁,节约了资源;
数据库连接不需要每次都去创建,响应时间更快;