<>关系型数据库特点

将数据保存在不同的表中,再将这些表放入数据库中,而不是将所有数据统一放在数据库里

<>关系型数据库优点

(1)增加了Mysql的读取速度
(2)提高灵活性和可管理性
(3)访问以及管理Mysql数据库的最常用标准化语言为SQL结构化查询的语句,可让数据持久化存储在硬盘中
(4)复杂查询:可以用SQL语句方便地在一个表以及多个表之间做复杂的数据查询
(5)事务支持:使得对于安全性能很高的数据访问要求得以实现

<>关系图表

数据→表→数据库

<>关系型数据库的设计原则

遵循ER模型和三范式
ER模型
实体—联系----属性
实体:对现实生活中的抽象,实体与实体之间的信息传输通过联系来实现
属性:实体与联系共享的一个名片
三范式
第一范式:每个列都不可以再拆分
第二范式:非主键列完全依赖于主键,而不能是依赖于主键的一部分
第三范式: 非主键列只依赖于主键,不依赖于其他非主键

<>drop、truncate、delete区别

drop:直接删表(结构和数据)
truncat:删除表中数据,再插入时自增长id从1开始
delete:删除表中数据,可以加where子句,每次从表中删除一行

<>索引

是一种数据结构,可以帮助我们快速地进行数据的查找。
索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等,常使用的InnoDB存储引擎的默认索引实现为B+树索引

<>事务

是一系列的操作,要符合ACID特性。最常见的理解就是:事务中的操作要么全部成功,要么全部失败
ACID
A=Atomicity:原子性,要么全部成功,要么全部失败,不可能只执行一部分操作
C=Consistency:系统(数据库)总是从一个一致性的状态转移到另一个一致性的状态,不会存在中间状态
I=Isolation:隔离性。 通常来说,一个事务在完全提交之前,对其他事务是不可见的,但有例外情况
D=Durability:持久性。一旦事务提交,那么就永远是这样子了,哪怕系统崩溃也不会影响到这个事务的结果
事务的并发问题
(1)脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
(2)不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致

(3)幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读

<>事务隔离级别

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

<>字段为什么要求定义为not null

null值会占用更多的字节,且会在程序中造成很多与预期不符的情况

<>锁

从锁的类别上来讲,有共享锁和排他锁
共享锁: 即读锁。 当用户要进行数据的读取时,对数据加上共享锁,共享锁可以同时加上多个
排他锁: 即写锁。当用户要进行数据的写入时,对数据加上排他锁,排他锁只可以加一个,和其它的排他锁、共享锁都相斥
锁的粒度取决于具体的存储引擎,InnoDB实现了行级锁、页级锁、表级锁
加锁开销:行级锁>页级锁>表级锁
并发能力:行级锁>页级锁>表级锁
不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信