这是我关于之前学习数据库一些知识的总结 首先数据库分为两种,关系型数据库,如MySQL,还有非关系型数据库,如NoSQL。这里主要是对比较常用的关系型数据库进行的总结。
关系型数据库
关系型数据库是基于关系代数理论的,它的优缺点
优点:健壮性强,社区庞大
缺点:表结构不直观,实现复杂,速度慢
join和group by
join会做一个笛卡尔积,A✘B on会筛选出其中符合条件的记录,但是会把过程优化,以左边的外键,去寻找右边表的外键拼接。
inner join和left join,内连接和左外连接的区别?内连接不会实现null,但是外连接会显示,左外连接就是左边全选,右边拼接
事物和乐观锁
事务的特性:
ACID,原子性,一致性,隔离性,持久性。
英语为: Atomicity Consistency Isolation Durability
原子性是说要么执行完毕,要么不执行,比如银行转账,如果错误,必须回滚。
一致性是说数据库的数据必须是一致的,满足约束,比如外键,必须修改互相之间有约束的表。
隔离性是一个事务的执行不能被其它事务干扰。
持久性是服务器重启,数据不会丢失。
事务隔离级别:
- Read Uncommitted 读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据
- Read Committed 读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据
- Repeatable Reads 重复读,就是在开始读取数据(事务开启)时,不再允许修改操作
- Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
乐观锁
乐观锁:在执行SQL之前会检验数据是否正确。
时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
数据库索引
数据库索引有两个作用:
- 加快查找速度
- 约束数据的值
索引可用于数据库数据库优化,对常用的数据加上索引可大大加快数据的查找速度。
数据库连接池
数据库连接池的定义: 把数据库的连接先建立好,当需要使用的时候请求一个连接,不用的时候再放回去,如图
这些是我对数据库一些知识的总结,大家有什么问题可以留言。