- 数据库的事务
在单个逻辑工作单元中执行的一系列操作,要么全部成功,要么全部失败;
- 事务的特性
原子性、一致性、隔离性、持久性
原子性:每个逻辑操作要么全部失败,要么全部成功;
一致性:事务在完成的时候,数据全部一致(例如转账,转账前两个人的钱是1000,那么转账结束后两个人的钱还是1000);
隔离性:数据库的四种隔离级别;
持久性:在事务结束后对系统的影响是永久性的(会写入到物理的硬盘中);
- 关系型数据库和非关系型数据库
关系型数据库:
采用关系型来存储数据,一般采用行来存储数据;
最大的特点是事务的一致性;
非关系型数据库:
采用键值对来存储数据,一般不支持ACID(数据库的四大特性);
- 严格来说不是一种数据库,而是一种数据结构的集合;
- 什么是视图
视图也称为虚拟的表,本质上一条select语句,结果被赋予了名称;
视图本身是不包含数据的,只是映射到表的一条查询语句,当表中的数据发生变化,其视图的数据也会发生变化;
优点:
1.视图对于机密的文件提供了一种保护;
2.用户可以从不同的角度来看待同一数据;
- 索引
为了提高查询的效率,是一种数据结构;
MyIsAM:采用的是b树作为索引;
innodb;非主键使用b键,主键使用的是b+树;
- b树和b+树的区别
b树:数据会保存在叶子结点中和非叶子节点中,索引可能会在非叶子结点就结束;
b+树:数据只能保存在叶子结点中,而且是按照数据的大小进行排序;
前一个叶子节点会保存下一个叶子结点的索引,所有的索引在叶子结点才会结束,适合范围查询;
- MyIsAM和innodb的特点
myisam是mysql5.1之前的默认引擎。不支持行锁,读取时会加入表锁,在写入是会加入排它锁;
不支持事务;
不支持外键;
不支持奔溃后的安全恢复;
myisam适合select比较多的表;
innodb
支持行锁;
支持事务;
支持奔溃后恢复;
innodb适合insert,update比较多的表;
- 存储过程
存储过程就是把常用,或者复杂的工作,预先用sql语句写好,并且用指定的名称保存起来,存储在数据库中;
优点:
存储过程只在创造时,进行编译即可,不用每次执行一次,编译一次;
调用execute命令;
- 数据库的三大范式
最小字段不可在分;
非主键完全依赖于主键,消除部分依赖;
消除传递依赖,非主键外属性必须互不依赖;