mysql数据库的常见面试题

MySQL 常见面试题完全指南

本文档整理了常见的 MySQL 面试题,按从浅到深的顺序讲解,特别适合新手准备面试或系统复习。每个问题都给出:

  • 问题
  • 思路
  • 标准/推荐回答
  • 必要时配合简单示例

你可以:

  • 先只看“问题+简答”,自己在脑子里回答一遍;
  • 然后对照“解析”补充自己的理解;
  • 对不熟的地方回到对应专题文档(如 基本操作、索引、事务 等)复习。

目录

  1. 基础概念与常规操作
  2. 数据类型与表设计
  3. SQL 与 CRUD
  4. 索引相关面试题
  5. 事务与隔离级别
  6. 锁机制
  7. 日志(binlog、redo log、undo log)
  8. 性能优化与慢查询
  9. 设计题与综合题
  10. 杂项与开放题

1. 基础概念与常规操作

1.1 什么是 MySQL?和“数据库”“数据库管理系统”有什么区别?

考点:基础概念、术语区分。

示例回答:

  • 数据库(Database):有结构地存放数据的仓库,可以有很多张表。
  • 数据库管理系统(DBMS):管理数据库的“软件”,负责存储、查询、备份、安全等。
  • MySQL:一个开源的 关系型数据库管理系统(RDBMS),用 SQL 操作数据,数据以表的形式组织。

可以加一句:MySQL 常用于 Web 应用后端,配合 PHP、Java、Python 等语言,是非常常见的数据库选型。


1.2 什么是表?什么是行和列?

考点:能否把“表结构”说清楚。

示例回答:

  • 表(Table):数据库中存放数据的基本结构,可以理解为一张带表头的表格。
  • 列(Column/字段):表中某一“属性”,如学生表里的姓名、年龄、班级。
  • 行(Row/记录):表中的一条具体数据记录,例如“张三,18,高一1班”就是一行。

补充一句:表的结构由列名和数据类型决定,数据则是一行一行的记录。


1.3 MySQL 中常见的约束有哪些?分别有什么作用?

考点:约束类型、作用场景。

关键点:

  • PRIMARY KEY:主键,唯一标识一行,不能重复、不能为 NULL。
  • UNIQUE:唯一约束,列值不能重复(可为 NULL)。
  • NOT NULL:非空,列值必须有,不允许 NULL。
  • DEFAULT:默认值,插入时未指定该列就用默认值。
  • CHECK(8.0.16+):检查约束,列值必须满足条件,如年龄 0~150。
  • FOREIGN KEY:外键,保证该列的取值必须在另一张表的主键或唯一键中存在。

可以举例学生-班级、订单-用户来说明外键约束的作用。


1.4 如何查看当前有哪些数据库?如何选择要使用的数据库?

考点:基本命令是否熟练。

关键命令:

  • 查看所有数据库:
SHOW DATABASES;
  • 选择(切换)数据库:
USE 库名;
  • 查看当前正在使用的数据库:
SELECT DATABASE();

1.5 MySQL 中如何查看某个表的结构?如何查看当前库下所有表?

命令:

  • 查看所有表:
SHOW TABLES;
  • 查看表结构:
DESC 表名;
-- 或
DESCRIBE 表名;

2. 数据类型与表设计

2.1 MySQL 中常见的数据类型有哪些?如何选择?

考点:能否说出主流类型并举例。

简要回答:

  • 数值:
    • INT / BIGINT:整数,如 id、数量。
    • DECIMAL(M,D):精确小数,如金额、分数。
    • FLOAT / DOUBLE:近似小数,如比例、统计值。
  • 字符串:
    • VARCHAR(n):可变长字符串,适合大部分文本,如姓名、标题。
    • CHAR(n):定长字符串,如固定长度编码。
    • TEXT / LONGTEXT:长文本,如文章内容。
  • 日期时间:
    • DATE:日期。
    • TIME:时间。
    • DATETIME / TIMESTAMP:日期 + 时间。

发表评论