• 有关MYSQL的22年最新部分面试题汇总


    数据库的三范式是什么?

    1. 第一范式:列不可再分 。

    2. 第二范式:行可以唯一区分,主键约束

    3. 第三范式:表的非主属性不能依赖与 其他表的非主属性 外键约束 。

    且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式 建立第一第二范式上。

    MYISAM、Innodb的区别有哪些?

    1. InnoDB支持事务,MyISAM不支持。

    2. InnoDB支持外键,而MyISAM不支持。

    3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。而MyISAM是非聚集索引,数据文件是分离的, 索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

    4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用 一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快。

    5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高。

    什么是事务?

    多条sql语句,要么全部成功,要么全部失败。

    事务的特性(ACID)?

    1. 原子性:组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成功, 整个事务才会提交。任何一个操作失败,已经执行的任何操作都必须撤销,让数据库返回初始 状态。

    2. 一致性:事务操作成功后,数据库所处的状态和它的业务规则是一致的。即数据不会被破坏。 如A转账100元给B,不管操作是否成功,A和B的账户总额是不变的。

    3. 隔离性:在并发数据操作时,不同的事务拥有各自的数据空间,它们的操作不会对彼此产生干扰 .

    4. 持久性:一旦事务提交成功,事务中的所有操作都必须持久化到数据库中。

    索引是什么?

    索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书 前面的目录,能加快数据库的查询速度。

    常见的索引有哪些?

    1. 普通索引:主要以B+树和哈希索引为主,任务是加快对数据的访问速度,常用于查询和排序的条件,值可以为空并没有唯一性的限制。

    2. 唯一性索引:与普通索引类似,不同的是唯一性索引,索引列的值必须是唯一的,但可以为空。

    3. 主键索引:主键索引是一种特殊的唯一性索引,在定义主键是自动创建,是创建在主键上的索引,所有属性列唯一而且不能为空。

    4. 全文索引:MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。

    InnoDB中常见的索引?

    1. B+树索引

    2. 聚簇索引

    3. 非聚簇索引

    4. 联合索引

    5. 全文索引

    6. 哈希索引

    索引有什么优缺点?

    优点:

    1. 提高查询数据的速度,降低数据库的IO成本。

    2. 降低数据排序的成本,降低CPU的消耗,索引已经将数据排序好

    缺点:

    1. 占用多余存储空间

    2. 降低数据更新时候的速度,更新数据也需要去更新索引的数据

    什么是聚簇索引?

    叶子节点存放的是该行完整的行记录,这个特性决定了索引组织表中数据也是索引的一部分,每张表只能拥有一个聚簇索引。

    优点:

    • 数据访问更快,因为聚簇索引将索引和数据保存在同一个B+树中,因此从聚簇索引中获取数据比非聚簇索引更快。

    • 聚簇索引对于主键的排序查找和范围查找速度非常快。

    缺点:

    • 插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现页分裂,严重影响性能。

    • 更新主键的代价很高,因为将会导致被更新的行移动。因此,对于InnoDB表,我们一般定义主键为不可更新。

    • 二级索引访问需要两次索引查找,第一次找到主键值,第二次根据主键值找到行数据。

    什么是非聚簇索引?

    叶子节点上存放的只有索引列和主键数据,查询的列不在索引列中需要回表进行查询。

    什么是前缀索引?

    语法:index(field(10)),使用字段值的前10个字符建立索引,默认是使用字段的全部内容建立索引。

    前提:前缀的标识度高。比如密码就适合建立前缀索引,因为密码几乎各不相同。

    索引原则?

    1. 索引不是越多越好。

    2. 不要对经常变动的数据加索引。

    3. 小数据量的表不需要加索引。

    4. 索引一般加在常用来查询的字段上。

    为什么索引是使用B+树&#x

  • 相关阅读:
    【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-统一处理异常
    【元胞自动机】基于元胞自动机模拟社会力因素下的灾害人员疏散应急仿真附matlab代码
    LeetCode54题:螺旋矩阵(python3)
    STL算法
    基于eXosip2实现的客户端和服务端
    【18】c++设计模式——>适配器模式
    FirmAFL
    20.单例模式进阶
    SSM+健身房管理系统 毕业设计-附源码191656
    matlab自定义添加设置工具箱
  • 原文地址:https://blog.csdn.net/Java_LingFeng/article/details/127596307