六、关系型数据库
1.事务的特性
原子性(Atomicity):事务是不可细分,要么全部完成,要么不执行。
一致性(Consistency):多个事务并行执行和串行执行结果一样。
隔离性(Isolation):事务的执行不受其他事务影响。
持久性(Durability):已提交的事务 产生的效果持久不变。
2 .Mysql的存储引擎
MyISAM
InnoDb
3 .union和union all的区别
union 不会产生数据重复的问题
4.表的连接
cross join交叉连接 t1,t2 或 t1 cross join t2
inner join 需要使用on指明连接条件
left join 保留左表中,不符合连接条件的行 右表的属性用NULL填充
5.客户端并发访问数据库
脏读:A事务操作B事务尚未提交的数据,B事务回滚,A事务无效
幻读:一个事务内,A事务读到了B事务更改的数据
不可重复读:A事务读取B事务提交的新增数据,会引发幻读问题。
第一类丢失更新:A事务撤销时,把已经提交的B事务的更新数据覆盖了。
第二类丢失更新:A事务覆盖B事务已经提交的数据,造成B事务所做的操作丢失
6.Mysql锁
不同的存储引擎支持不同的锁机制
共享锁S,只能读数据不能改数据。其他事务只能加S锁
排他锁X,不允许加锁 。其他事务不能读写
7.sql语句select group by order by where的执行顺序
执行顺序:from… where…group by… having… select … order by…
8 .三范式
所有字段值都是不可分解的原子值,比如地址为贵州省大方县....
消除部分依赖,比如,a和b是主属性,c只依赖于a
消除传递依赖,非主属性不传递依赖于主属性
9.事务并发带来的问题
第一类丢失更新-回滚丢失更新:A事务撤销时,把已经提交的B事务的更新数据覆盖了
第二类丢失更新-覆盖丢失/两次更新问题:A事务覆盖B事务已经提交的数据,造成B事务所做操作丢失
脏读(读取未提交数据)
不可重复读(前后多次读取,数据内容不一致)
幻读(前后多次读取,数据总量不一致)