关于Java208面试题答案MySQL

  1. 数据库的三范式是什么?
    第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。
    第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。
    第三范式:任何非主属性不依赖于其它非主属性。
  2. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 ID 是几?
    表类型如果是 MyISAM ,那 id 就是 8。
    表类型如果是 InnoDB,那 id 就是 6。
    InnoDB 表只会把自增主键的最大 id 记录在内存中,所以重启之后会导致最大 id 丢失。
  3. 如何获取当前数据库版本?
    1.打开mysql通过命令提示符上输入 select version(); 来获取;
    2.在cmd里输入 mysql -V 来获取;
  4. 说一下 ACID 是什么?
    Atomicity(原子性):一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复 (Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。
    Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等。
    Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
    Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
  5. Char 和 VarChar 的区别是什么?
    char(n) :固定长度类型,比如订阅 char(10),当你输入"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。
    chat 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。
    varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。
    所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。
  6. Float 和 Double 的区别是什么?
    1.float(4字节,有效数字是8位)单精度浮点数值,而double(8字节,有效数字16位)双精度浮点数值,(float和double都是浮点型,而decimal是定点型;)
  7. MySQL 的内连接、左连接、右连接有什么区别?
    内连接inner jojn on:返回俩张表中的一样的数据
    左连接left jojn on:返回俩张表中的一样的数据和左侧表的数据
    右连接right join on:返回俩张表中的一样的数据和右侧表的数据
  8. MySQL索引是怎么实现的?
    mysql的索引分为单列索引(主键索引,唯索引,普通索引)和组合索引.
    单列索引:一个索引只包含一个列,一个表可以有多个单列索引.
    组合索引:一个组合索引包含两个或两个以上的列,
  9. 怎么验证 MySQL的索引是否满足需求?
    explain 语法:explain select * from table where type=1。
    是否生效:在select语句前加上explain就可以了;
  10. 说一下数据库的事务隔离?
    Atomicity(原子性):事务不可被分割
    Consistency(一致性):事务的执行前后数据的完整性保持一致
    Isolation(隔离性):一个事务的执行过程中,不应该受到其他事务的干扰
    Durability(持久性):事务一旦提交就永久保存在数据中
  11. 说一下 MySQL常用的引擎?
    Innodb(I nan 脑 db)和MyIASM(my I sm )
  12. 说一下 MySQL的行锁和表锁?
    表级锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突的概率最高,并发度最低。
    (表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock))
    行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
    (页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般)
  13. 说一下乐观锁和悲观锁?
    悲观锁:每次去拿数据的时候认为别人会修改锁,所以每次拿到数据都会上锁
    乐观锁:每次去拿数据的时候都会认为别人不会上锁,所以不会上锁
  14. MySQL问题排查都有哪些手段?
  15. 如何做 MySQL的性能优化?

猜你喜欢

转载自blog.csdn.net/weixin_44100313/article/details/89884656