数据库小记

时间:2019-01-19
本文章向大家介绍数据库小记,主要包括数据库小记使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

查询的执行顺序
1)from : 表名
2)where:条件过滤
3)group by : 分组
4)having : 分组之后进行过滤。
5)select :执行完毕之后,显示内容。
6)order by : 根据查询的内容进行排序输出.

数据库范式
1NF 原子性:表中每列不可再拆分。
2NF 不产生局部依赖,一张表只描述一件事情。表中的每一列是完全依赖于主键的。
3NF 不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其它列间接依赖于主键。

事务的特性(ACID)
隔离性:每个事务都是独立的互相隔离互不影响的
持久性:指一个事务一旦被提交,它对数据库的改变将是永久性的,哪怕数据库发生异常,重启之后数据亦然存在。
原子性:表中每列不可再拆分。原子性是指事务包装的一组sql(一组业务逻辑)是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性:一个事务在执行之前和执行之后 数据库都必须处于一致性状态。
如果事务成功的完成,那么数据库的所有变化将生效。
如果事务执行出现错误,那么数据库的所有变化将会被回滚(撤销),返回到原始状态。
事务的成功与失败,最终数据库的数据都是符合实际生活的业务逻辑。一致性绝大多数依赖业务逻辑和原子性。

事务问题
事务的隔离级别
脏读:指一个事务读取了另外一个事务未提交的数据。(非常危险) 注意脏读的前提是没有事务的隔离性
不可重复读:在一个事务内多次读取表中的数据,多次读取的结果不同。(update)
虚读:在一个事务内多次读取表中的数据,多次读取的结果不同。(insert/delete)
隔离级别安全和性能对比
安全性:serializable > repeatable read > read committed > read uncommitted
性能 : serializable < repeatable read < read committed < read uncommitted
常见数据库的默认隔离级别
MySql:repeatable read。
Oracle:read committed。