首页 > 数据库 >【面试宝藏】MySQL 面试题解析

【面试宝藏】MySQL 面试题解析

时间:2024-06-05 22:58:14浏览次数:14  
标签:存储 面试题 支持 索引 InnoDB MyISAM MySQL 宝藏

MySQL 面试题解析

1. 数据库三大范式是什么?
  • 第一范式(1NF):确保每列的原子性,即每列不能再分。
  • 第二范式(2NF):在满足 1NF 的基础上,每个非主属性完全依赖于主键,即消除部分依赖。
  • 第三范式(3NF):在满足 2NF 的基础上,任何非主属性不依赖于其他非主属性,即消除传递依赖。
2. MySQL 有关权限的表都有哪几个?

MySQL 的权限系统主要依赖以下系统表:

  • user:存储用户的全局权限。
  • db:存储特定数据库的权限。
  • tables_priv:存储特定表的权限。
  • columns_priv:存储特定列的权限。
  • procs_priv:存储存储过程和函数的权限。
3. MySQL 的 Binlog 有几种录入格式?分别有什么区别?

MySQL 的 Binlog 有三种格式:

  • Statement(语句):记录执行的 SQL 语句。优点是日志量小,但在某些情况下可能无法精确重放。
  • Row(行):记录每行数据的变化。优点是可以精确重放,但日志量大。
  • Mixed(混合):结合了 Statement 和 Row 的优点。MySQL 会根据具体情况选择最合适的格式。
4. MySQL 存储引擎 MyISAM 与 InnoDB 的区别?
  • 事务支持:InnoDB 支持事务,MyISAM 不支持。
  • 外键:InnoDB 支持外键,MyISAM 不支持。
  • 表锁和行锁:InnoDB 支持行级锁,MyISAM 只支持表级锁。
  • 崩溃恢复:InnoDB 有自动崩溃恢复功能,MyISAM 需要手动修复。
  • 全文索引:MyISAM 支持全文索引,InnoDB 从 MySQL 5.6 开始支持。
5. 什么是索引?

索引是一种用于提高数据库查询速度的数据结构。它类似于书籍的目录,可以快速找到所需的数据。

6. 索引有哪些优缺点?

优点

  • 提高数据检索速度。
  • 加速表连接操作。
  • 加速排序和分组操作。
  • 在条件查询中,提高检索效率。

缺点

  • 占用磁盘空间。
  • 在插入、删除和更新数据时,可能需要重建索引,影响写入性能。
7. 存储引擎有哪几种类型?

MySQL 支持多种存储引擎,常见的有:

  • InnoDB:支持事务和外键,使用广泛。
  • MyISAM:不支持事务,但速度较快。
  • MEMORY:数据存储在内存中,速度快,但断电数据丢失。
  • ARCHIVE:用于存储大批量的历史数据,支持高效的插入操作,不支持索引。
  • CSV:数据以 CSV 格式存储,便于与外部程序交互。
8. MySQL 中有哪几种锁?
  • 表锁:锁住整张表。分为读锁和写锁。
  • 行锁:锁住单行数据。InnoDB 支持行级锁。
  • 页锁:锁住数据页。InnoDB 也支持页锁,但不常用。
9. MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
  • 读未提交(Read Uncommitted):最低隔离级别,事务中的修改即使未提交,对其他事务也是可见的。
  • 读已提交(Read Committed):一个事务在提交前的修改对其他事务不可见。
  • 可重复读(Repeatable Read):事务在执行期间,看到的数据是一致的,即使其他事务进行了修改(默认隔离级别)。
  • 串行化(Serializable):最高隔离级别,事务完全串行化执行,避免了幻读。
10. CHAR 和 VARCHAR 的区别?
  • CHAR:定长字符类型,不足长度时会用空格补齐。适合存储定长数据。
  • VARCHAR:变长字符类型,存储的数据长度可变。适合存储可变长度的数据。
11. 主键和候选键有什么区别?
  • 主键(Primary Key):用于唯一标识表中的记录,每个表只能有一个主键,不能为空。
  • 候选键(Candidate Key):是唯一标识表中记录的属性集合,可以有多个候选键,其中一个可以作为主键。
12. 如何在 Unix 和 MySQL 时间戳之间进行转换?
  • Unix 时间戳转换为 MySQL 日期时间
    FROM_UNIXTIME(unix_timestamp)
    
  • MySQL 日期时间转换为 Unix 时间戳
    UNIX_TIMESTAMP(datetime)
    
13. MyISAM 表类型将在哪里存储,并且还提供其存储格式?

MyISAM 表的存储格式:

  • .frm 文件:存储表结构。
  • .MYD 文件:存储表数据。
  • .MYI 文件:存储表索引。
14. MySQL 里记录货币用什么字段类型好?

货币一般使用 DECIMAL 类型来存储,确保精度和防止舍入误差。例如:

DECIMAL(10, 2)
15. 创建索引时需要注意什么?
  • 选择合适的列:经常用于查询条件、排序和分组的列。
  • 避免过多的索引:每个索引都会占用空间和影响写入性能。
  • 复合索引:考虑创建复合索引,而不是多个单列索引。
  • 索引选择性:高选择性的列更适合作为索引。

版权声明

本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。

原文链接:CSDN

标签:存储,面试题,支持,索引,InnoDB,MyISAM,MySQL,宝藏
From: https://blog.csdn.net/gygkhd/article/details/139484203

相关文章

  • 【面试宝藏】Redis 常见面试题解析其二
    Redis高级面试题解析20.说说Redis哈希槽的机制?Redis集群采用哈希槽(HashSlot)机制来分布和管理数据。整个哈希空间被划分为16384个槽,每个键通过CRC16校验后取模映射到一个哈希槽。每个节点负责一部分哈希槽,从而实现数据分片和负载均衡。21.Redis集群的主从复制......
  • MyBatis的JdbcType与MySQL数据类型之间的对应关系
    MyBatis的JdbcType与MySQL数据类型之间存在一定的对应关系,这些映射帮助MyBatis在处理SQL查询时正确地将数据库中的数据类型转换为Java对象。以下是一些常用的MyBatisJdbcType与MySQL数据类型的对应关系:BIGINT-对应MySQL的BIGINT类型,用于存储大整数值。INTEGER -对应MySQL的......
  • 使用Python实现MySQL数据库备份
    数据库备份的重要性数据库备份是一项至关重要的任务,它可以帮助我们应对各种意外情况,如硬件故障、数据损坏、误操作等。通过定期备份数据库,我们可以保证数据的安全性,同时在发生意外时能够快速恢复数据,最大限度地减少业务影响和数据丢失。使用Python实现MySQL数据库备份使......
  • mysql阶段02 数据库基本操作, 误删用户案例解决, 数据库体系结构, mysql服务构成, mys
    一、数据库基本操作1.设置数据库密码[root@db03~]#mysqladmin-urootpassword'123456'2.使用密码登录#1.正确的登录方式[root@db03~]#mysql-uroot-p123456[root@db03~]#mysql-uroot-p123456#2.错误的登录方式[root@db03~]#mysql-uroot-p123456#3......
  • 【Android面试题】请你分别采用递归和非递归对二叉树进行遍历?
    请你分别采用递归和非递归对二叉树进行遍历?这道题想考察什么?1、二叉树的基本原理和遍历的方法?考察的知识点二叉树遍历的基本概念、二叉树的基本原理考生如何回答二叉树的基本概念当然可以!二叉树是一种常见的数据结构,它由一组称为节点的元素构成。每个节点可以有零个......
  • node.js + mysql实现基本的增删改查功能(保姆级教程---1)
    node.js+mysql实现基本的增删改查(保姆级教程---1)工具:sqlyog可视化工具,vscode,nodejs环境(我的node.js版本号是18.16.0)前提条件:电脑上要有node.js、npm、mysql服务器、可视化工具(navicat或sqlyog都行)步骤:新建文件夹node-mysql-cruid(根目录),终端打开该目录初始化项目:npm......
  • node.js + mysql实现基本的增删改查功能(保姆级教程---2优化版)
    node.js+mysql实现基本的增删改查(保姆级教程---2优化版)上一个实现对增删改查功能都写在同一个文件里,代码过于冗余,我认为可以优化,分开写在不同文件里面,使得更加直观。废话不多说,直接进入主题:对之前的代码进行抽离:db.js文件(用于数据库的连接,并导出连接供其他模块使用):......
  • Oracle数据库面试题-6
    1.请解释Oracle数据库中的SGA和PGA的区别。Oracle数据库中的SGA和PGAOracle数据库中的SGA(SystemGlobalArea)和PGA(ProgramGlobalArea)是数据库内存管理的两个核心区域,它们在数据库性能和资源分配方面扮演着不同的角色。SGA(SystemGlobalArea)全局内存区域:SGA......
  • Oracle数据库面试题-5
    81.请解释Oracle数据库中的自动空间重新压缩(AutomaticSpaceRecompression)的概念。Oracle数据库中的自动空间重新压缩(AutomaticSpaceRecompression)自动空间重新压缩是Oracle数据库中的另一个重要特性,它用于减少数据文件的大小,回收未使用的存储空间。这个过程通过压......
  • JavaWeb_MySQL数据库
    数据库:MySQL数据模型:    MySQL是关系型数据库。SQL:简介分类:数据库设计-DDL对数据库操作:表操作:小练习:    创建下表SQL代码:createtabletb_user(idintprimarykeyauto_incrementcomment'ID,唯一标识',usernameva......