查缺补漏
ss_user表

ss_user_role_rel表
内连接:
SELECT * from ss_user su INNER JOIN ss_user_role_rel sur on su.id = sur.uid;

可知,内连接查的是左表右表都有的内容,即交集
左连接
SELECT * from ss_user su LEFT JOIN ss_user_role_rel sur on su.id = sur.uid;

可知,左连接查的是保留左表的内容,右表若没有则null补上。
右连接
SELECT * from ss_user su right JOIN ss_user_role_rel sur on su.id = sur.uid;

可知,右连接查的是保留右表的内容,右表若没有则null补上。
场景:若父节点和子节点在同一个表中,可以将自身作为父表和子表关联即可,即自连接的场景,可以用上述三种连接都可以,可以采取给自身表取别名的方式,来区分父表和子表,然后在on关联字段,son.parentId = parent.id。
MySQL事务的四大特性
原子性(a):通过undolog来实现的,undolog就当于是可以进行版本回溯
一致性(c):通过aid一起兜底实现的,可以这么说aid是手段,而c是目的
隔离性(i):通过锁来实现的,同时还可以控制并发修改,行锁、间隙锁等
持久性(d):通过redolog来实现的,不论是宕机或者崩溃,都可以通过重放日志就能恢复
MVCC:多版本并发控制,就是每个事务读到的不是同一个正在被修改的数据,而是每个事务自己对应的历史版本快照,通过undolog记录反向操作,实现自己的版本链,readview决定谁能看哪个版本。简单来说呢就是,通过undolog来实现版本链,然后通过隐藏字段和readview来判断数据的可见性。它可以让你不用加锁也能读,既能读已提交,也能做到可重复读,多个事务既能同时读,又能同时写,读写互不阻塞,提高了并发性能,也实现了隔离性。
MySQL的隔离级别

浙公网安备 33010602011771号