Mysql是最常用的数据库了。
1、什么是关系型数据库?
关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。
2、Mysql 的内连接、左连接、右连接有什么区别?
Inner join 内连接,在两张表进行连接查询时,只保留两张表中完全匹配的结果集
left join 在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。
right join 在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。
3、InnoDB与MyISAM的区别?
innodb是其引擎的名称。InnoDB支持许多MyISAM不支持的功能,比如事务、外键、MVCC等、
4、Mysql索引的原理?
Mysql使用B+树作为索引,B+树非叶子节点上是不存储数据的,仅存储键值。
5、读写分离是什么意思?
读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。 这样的话,就能够小幅提升写性能,大幅提升读性能。
读写分离基于主从复制,MySQL 主从复制是依赖于 binlog。用一些组件可以直接实现读写分离。
6、Navicat
Navicat是数据库管理工具,远程连接上后直接操作库表,不用使用命令行。
7、Mysql的主键和外键有什么区别?
主键是这张表的唯一标识,非空且不允许重复。外键是其他表的唯一标识。一个表可以有多个外键。
8、mybatis是什么?
MyBatis ORM 框架是一个持久层框架,用于简化数据库的操作。它通过 XML 或注解的方式将 Java 的接口方法和 SQL 语句关联起来,完成数据的持久化操作。通过java中操作对象,mybatis会解析为对应的sql语句,查到具体的内容。
9、Mysql的4种事物隔离级别。
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |
mysql默认的事务隔离级别为repeatable-read,可重复读。
设计上,我们业务基本上会避免使用事物。
1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
4、小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。