1. 数据库连接查询
- 内联接(Inner Join):匹配2张表中相关联的记录。
- 左外联接(Left Outer Join):除了匹配2张表中相关联的记录外,还会匹配左表中剩余的记录,右表中未匹配到的字段用NULL表示。
- 右外联接(Right Outer Join):除了匹配2张表中相关联的记录外,还会匹配右表中剩余的记录,左表中未匹配到的字段用NULL表示。在判定左表和右表时,要根据表名出现在Outer Join的左右位置关系
2.数据库中的聚合函数
- COUNT:统计行数量
- SUM:获取单个列的合计值
- AVG:计算某个列的平均值
- MAX:计算列的最大值
- MIN:计算列的最小值
3 数据库三范式
- 第一范式:1NF原子性,列或者字段不能再分,要求属性具有原子性,不可再分解;
- 第二范式:2NF 唯一性,一张表只说一件事,是对记录的惟一性约束,要求记录有惟 一标识;
- 第三范式:3NF 直接性,数据不能存在传递关系,即每个属性都跟主键有直接关系, 而不是间接关系。
4 MySQL的默认隔离级别
MySQL InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ (可重读)。
5 数据库锁
5.1 行级锁和表级锁
- 主要是针对锁粒度划分的,一般分为:行锁、表锁、库锁
- 行锁:访问数据库的时候,锁定整个行数据,防止并发错误。
- 表锁:访问数据库的时候,锁定整个表数据,防止并发错误。
- 行锁 和 表锁 的区别
- 表锁: 开销小,加锁快,不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低
- 行锁: 开销大,加锁慢,会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高
5.2 悲观锁和乐观锁
- 悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会 block 直到这个锁被释放。
传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 - 乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据ÿ