有关数据库的基础知识就都在这里了

今天面试,数据库好多忘了,面试官还逮着问,尴尬得不行,准备好好整理一下相关基础的知识

一、表的基本构成

主键(primary key):表中某一个属性组合能唯一标识一条记录,该属性组就是一个主键

外键(foreign key):在一个表中存在的另一个表的主键为此表的外键

超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键

候选键(candidate key):不含有多余属性的超键称为候选键

增删改查就完事

四、数据库事务

数据库事务,即数据库执行的功能的过程,等同于操作系统当中的进程,为了让事务能够顺利准确的完成,需要实现四个特性

1.原子性

    原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,不可能停滞在中间环节。

2.一致性

    一致性指一个事务执行之前和执行之后都必须处于一致性状态,比如A向B转账,不可能A扣了钱,B却没收到。

3.隔离性

    同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。

4.持久性

    持久性是指一个事务对数据库中的数据的改变是永久性的,不能回滚。

事务存在的问题

1.脏读:一个事务处理过程里读取了另一个未提交的事务中的数据。

2.不可重复读:事务 A 读取一数据,事务 B 在事务A读取的过程中对数据作了更新,导致事务A多次读取数据时结果不一致。

3.虚读:事务 A 修改表数据,事务 B 在事务A修改的过程中插入一条新数据,导致事务A像是没有修改完一样。

解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

MySQL事务隔离级别

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
读提交(read-committed)
可重复读(repeatable-read)
串行化(serializable)

serializable:通过给每个数据行与表上锁,强行让事务的处理序列化,可以解决三大问题但也会导致大量超时与锁竞争现象,故而不常用。

repeatable-read:开始读取数据(事务开启)时,不再允许修改操作,可以解决不可重复读问题但还存在幻读现象。

read-committed:就是一个事务要等另一个事务提交后才能读取数据,只能解决脏读问题。

read-uncommitted:没用,啥也干不了。

MySQL数据库中默认的隔离级别为Repeatable read (可重复读)。

在MySQL数据库中查看当前和设置事务的隔离级别:

select @@tx_isolation;

set  [glogal | session]  transaction isolation level 隔离级别名称;
set tx_isolation=’隔离级别名称;’

 

Loading......

猜你喜欢

转载自blog.csdn.net/weixin_41328649/article/details/86101331
今日推荐