MySQL(1)

1.数据库三大范式

第一范式:1NF 原子性。列不可分,要确保数据库表字段的原子性。比如说有个字段 userInfo:北京12306,按照第一范式必须拆分成userInfo:北京 和userTel:12306两个字段
第二范式:2NF 唯一性。每列都依赖于主键列。首先要满足第一范式,另外包含两部分内容。一是表里必须且只能有一个主键,二是非主键列必须完全依赖于主键,而不能只依赖于主键的一部分。
第三范式:3NF 直接性。每列不可依赖于除主键列的其他列。首先要满足第二范式。另外非主键列必须直接依赖于主键,不能存在传递依赖。也就是不能出现非主键列A依赖于非主键列B,非主键列B依赖于主键的情况。若出现,则需要分表。
第二范式和第三范式的区别
2NF依据是非主键列是否完全依赖于主键,还是依赖于主键的一部分。
3NF依据是非主键列是直接依赖于主键,还是依赖于非主键。

2.数据库ACID特性

1.原子性(Atomicity):事务是一个原子操作单元,要么全都执行,要么都不执行
2.一致性(Consistent):在事务开始和完成时,数据必须保持一致状态
3.隔离性(Isolation):事务直接互不影响。事务处理过程中的中间状态对外部是不可见的。隔离级别越高,隔离效果越强。
4.持久性(Durable):事务完成时,他对于数据的修改是永久性的,即使出现故障也能继续保持。

3.并发事务带来的问题

1.更新丢失
多个事务同时选择同一行数据进行修改,最后提交的更新覆盖了之前其他事务提交的更新。
2.脏读
一个事务正在对一条记录进行修改,但未提交事务。
另一个事务来读取这条记录,如果没有做控制,就会读到没提交的数据,这种数据就是脏数据
3.不可重复读
一个事务内多次读同一个数据,在这个事务还没有结束时,另一个事务也访问该数据。此时第二个事务的修改导致第一次事务前后读取的数据可能不太一样。
4。幻读
一个事务按照条件查询数据,没有查到对应的数据。但是在插入数据时,却提示该数据已存在。

4.事务隔离级别

脏读不可重复读幻读
读未提交 READ-UNCOMMITTED最低的隔离级别,允许读取尚未提交的数据变更
读已提交 READ-COMMITTED×允许读取并发事务已经提交的数据
可重复读 REPEATABLE-READ××对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改
可串行化 SERIALIZABLE×××最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行

MySQL默认级别是可重复读

5.MySQL存储引擎对比

1.innodb存储引擎
支持事务,可靠性和性能高,适合高并发场景。作为MySQL的默认引擎。
但读写效率稍差,空间占用较大。
适合对事务的完整性有较高要求,在并发条件下要求数据的一致性,插入、查询、更新、删除操作都很多使用时用。
2.myisam存储引擎
不支持事务,是MySQL早期的默认存储引擎,不支持外键,不支持行锁,支持表锁
空间占用小,访问速度快。
适合以读操作和插入操作为主,且对事务的完整性、并发性要求不高时。
3.MEMORY
将所有数据存在内存中,访问速度快,通常用于临时表及缓存。但它对表的大小有限制,太大的表不能存在内存中,且无法保证数据的安全性。

6.drop、delete、truncate区别

drop:drop table 表名。直接将表都删除。
truncate:truncate table 表名。只清空表里数据。
delete:delete from 表名 where 列名=值。删除某一列的数据,要是不加where子句的话,效果和truncate table类似
truncate 和delete只删除数据不删除表的结构。drop会删除表的结构。

7. drop、delete、truncate在什么场景下使用?

不需要一张表时,用drop
想删除部分数据行时,用delete,并带上where语句
保留表而删除所有数据时用truncate

8.varchar和char的区别,varchar(50)中的50在表的涵义

varchar是可变长度,最多可存放65532个字符。char是不可变长度,占用固定空间,要是插入的长度小于定义的长度,剩下的就用空格代替,最多可存放255个字符。
varchar(50)中的50,表示最多存放50个字符。
varchar(50)和varchar(200)存储hello所占空间一样,但是后者在排序时会消耗更多内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值