关于MySQL 面试 (个人小结)

1.关于几个常用的连接查询的小结

left join,right join,inner join  full outer join,union,union all

left join(左连接) ——返回以左表为主的数据  右表中显示符合条件的数据 不符合的置为空
right join(右联接)——返回以右表为主的数据  左表中显示符合条件的数据 不符合的置为空
inner join(等值连接)—— 返回两个表中符合条件的数据

full join (全连接) —— 返回两个表中所有的数据 不符合的数据置为空

union操作符用于合并两个或多个select语句的结果集
注意,union内部的select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条select中的列顺序也必须相同,union只选取记录,而union all会列出所有记录

2. MySQL的存储引擎 myiasm 和innodb的区别
  • InnoDB支持事物,而MyISAM不支持事物
  • InnoDB支持行级锁,而MyISAM支持表级锁
  • InnoDB支持MVCC, 而MyISAM不支持
  • InnoDB支持外键,而MyISAM不支持
  • InnoDB不支持全文索引,而MyISAM支持。
3.什么事务

是对数据库操作的最小单位  要么全部提交 要么全部不提交

4.事务的并发问题

1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。(update)

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

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

5.事务的隔离级别 解决并发问题

Read uncommitted (读未提交):最低级别,任何情况都无法保证。

  第一隔离级别怕回滚,因为它能读取到别的事务未提交的数据。如果当前事务将这个数据当成真正的数据,那么如果别的事务回滚,那么就会数据错误,导致脏读。

Read committed (读已提交):可避免脏读的发生。

第二个隔离级别怕提交,因为提交会导致不可重复读。

Repeatable read (可重复读):可避免脏读、不可重复读的发生。*MySQL默认隔离级别

Serializable (串行化):可避免脏读、不可重复读、幻读的发生。

6.事务的四大特性是什么

atom 原子性 要么全部成功,要么全部失败

consistency 一致性 事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态(需进一步理解)

isolation 隔离型 事务对数据的修改其它事务不可见,事务与事务之间互不干扰

durability 持久性 事务提交完成之后,数据永久保存在磁盘中,不会因服务器宕机而丢失。

7.事务的四大特性是靠什么保证的
1.原子性  

原子性是基于undolog来实现的整个语句要么执行,要么不执行。一个原子性的事务 如果中间失败了,那么前面已经

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值