Java面经——数据库Mysql篇(持续更新中......)
1、说说数据库的三大范式?第一范式:每个列都不可以在拆分第二范式:在第一范式的基础上,非主键列完全依赖于主键列mysql数据表,而不是一部分第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键2、什么是Mysql? Mysql是一个开源免费的关系型数据库管理系统 3、Mysql有关的权限表都有哪些? user权限表:记录允许连接到服务器的用户账号信息,里面的权限是全局级的 db权限表:记录各个账号在各个数据库上的操作权限 table_priv权限表:记录数据表级的操作权限 columns_priv权限表:记录数据列级的操作权限 host权限表:与db权限表对给定主机上数据库级操作权限更细致的控制 4、数据库中经常使用的聚合函数有哪些? count: 返回行数 max:返回列中的最大值 min: 返回列中的最小值 sum: 返回列和 avg:平均值 date: 返回日期值 5、Mysql的binlog有几种录入的格式?区别是什么?6、MySQL有哪些数据类型?整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT实数类型:FLOAT、DOUBLE、DECIMAL字符串类型:VARCHAR、CHAR、TEXT、BLOB枚举类型:ENUM日期和时间类型:timestamp、datetime等等7、说说存储引擎MyISAM与InnoDB的区别?8、知道索引吗?如何创建?都有哪些常见索引? 索引是一种特殊的数据结构,可以提高数据的检索效率,因此在数据库数据存储的同时,我们也经常会创建索引。 创建索引的语法:
常见的索引有: 9、说说索引的数据结构? 索引的数据结构和具体的存储引擎有关,InnoDB默认索引数据结构为B+树。 10、说说事务的四大特性?四大特性靠什么保证? 事务的四大特性就是ACID A原子性由undo log日志保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的语句 C一致性由其他三大特性保证、业务代码要保证业务上的一致性 I隔离性由MVCC保证 D持久性由内存和redo log来保证,mysql修改数据的时候在内存和redo log记录这次操作,宕机的时候可以从redo log恢复 11、什么是脏读、幻读、不可重复读? 脏读:一个事务读取到另一个事务提交的数据 幻读:一个事务多次读取数据的笔数不一致 不可重复读:一个事务两次查询数据不一致 12、说说事务的隔离级别,MySQL默认的隔离级别是什么? MySQL默认的隔离级别是可重复读 13、说说对慢查询可以怎么优化? 1.检查是否走了索引,没有则看是否能优化索引 2.检查查询的所有字段是否必须 3.检查表中的数据是否过多了 4.检查数据库所在的机器性能配置是否太低了 14、说说InnoDB是怎么实现事务的? InnoDB是通过Buffer Pool, LogBuffer, Redo Log, Undo Log来实现事务,用一个update语句分析如下: 1.InnoDB收到一个update语句后,根据条件找到数据所在的页,并将该页缓存在Buffer Pool中 2.执行语句,修改Buffer Pool中的数据,也就是内存中的数据 3.对update语句生成一个RedoLog对象,并存入LogBuffer中 4.对update语句生成undolog日志,用于事务回滚 5.如果事务提交,那么则把RedoLog对象进行持久化 6.如果事务发生回滚,则根据undolog日志进行回滚 (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |