1. Mysql数据库的安装与介绍
(1) 概念介绍
数据库:
存储数据的仓库,按照数据结构,来组织,管理和存储数据,并提供了增、删、改、查的功能。
学查询 架构 优化
数据库的建模:是用来描述业务实体之间的关系
事务:
转账:A给B转账
第一步a的账户先把钱扣除
第二部 将b账户的钱更新
将一组增删改的操作看成一个独立的执行单元,要么都成功,如果有一个操作失败,那么数据库会执行回滚,一组操作都会不生效(事务定义)
事务的特性:
原子性:事务被当做一个不可分割的执行单元,要么全部成功,要么全部失败,成功则将数据应用到数据库,失败不会对数据产生影响
一致性:开始事务前的状态必须和事务执行之后的状态保持一致
隔离性:当用户并发访问数据库时,数据库会给每个用户线程开启一个事务,事务和事务之间相互隔离,互不影响
持久性:一旦事物提交,那么数据就会永久行的应用于数据库,就算机器出现故障,也不会将数据修改
事务的回滚:
事务作为一个独立不可分割的执行单元,要么都成功,只要这一组操作中有一个失败,事务会执行回滚,恢复到事务执行之前的状态
在不考虑事务的隔离性的情况下,会导致以下情况:
脏读:
当一个事务执行时,访问了另一个未提交事务的数据,并使用了这条数据
A给B 去转转账,
A账户扣钱 B账户增加钱
A事物并没有提交 通知B查看自己账户
B看到账户收到转账
A在后续的操作中出现失误,导致事物回滚
B 之后B在查看账户时发现账户的钱又不见了
不可重复读:
事务A多次读取一条数数据,事务B对这条数据做了修改,最终导致A事务两次读取的数据不一样
幻读:
事务A读取一张表中的所有数据,事务B在这个表中添加或者删除了一条数据,导致A的结果和实际结果不符,类似于出现了幻觉。
事务的四种隔离级别:
Read uncommit:读未提交 最低级别,可能会出现任何情况
Read commit:读已提交 可以避免脏读
Repeatable read:可重读 可以避免脏读和不可重复度
Serializable:串行化 可避免 脏读 不可重复读 幻读 最高的隔离级别
数据库的分类:
关系型数据库
是建立在数据模型的基础之上,借用集合、代数等数据概念,来去管理数据
非关系型数据库
Redis mongodb
{key:val}
Mysql引擎:
Myisam:在5.5版本之前 是默认引擎
不支持事务
数据查询速度快
相对数据安全性差
将数据存在三个文件当中
一个文件存表结构 一个文件存索引 一个文件存数据
Innodb:在5.5之后默认引擎
支持事务
相对于myisam 查询效率低
数据安全性高
将数据存在两个文件中
一个文件存表结构 一个文件存索引和数据