50 个最热门 MySQL 面试问题及答案 (2025)

针对新手和有经验者的 MySQL 面试问题

以下是 MySQL 面试问题和答案,可以帮助新手和经验丰富的应聘者获得理想的工作。

免费 PDF 下载:MySQL 面试题

1)什么是 MySQL?

MySQL 是一个开源数据库管理系统 (DBMS),用于以表格格式管理和组织数据,这些数据可以使用 MySQL 编程语言进行操作。它由 MySQL AB(现已被收购)支持和分发 神谕)


2)MySQL的技术特点是什么?

MySQL 数据库软件是一个客户端或服务器系统,其中包括

  • 多线程 SQL服务器 支持各种客户端程序和库
  • 不同的后端
  • 广泛的应用程序编程接口和
  • 管理工具。

3)为什么使用MySQL?

MySQL 数据库服务器可靠、快速且非常易于使用。该软件可以作为免费软件下载,也可以从互联网上下载。


4)什么是堆表?

HEAP 表存在于内存中,用于临时高速存储

基础。

• 不允许使用 BLOB 或 TEXT 字段

• 只能使用比较运算符 =、<、>、= >、=

• HEAP 表不支持 AUTO_INCREMENT

• 索引不应为空


5)MySQL 服务器的默认端口是什么?

MySQL 服务器的默认端口是 3306。

MySQL面试问题

6)MySQL与Oracle相比有哪些优势?

  • MySQL 是开源软件,可随时使用且无需付费。
  • MySQL 是可移植的
  • 带有命令提示符的 GUI。
  • 使用 MySQL 查询浏览器支持管理

7)区分FLOAT和DOUBLE?

以下是 FLOAT 和 DOUBLE 的区别:

• 浮点数存储在 FLOAT 中,精度为八位,有四个字节。

• 浮点数以 DOUBLE 形式存储,精度为 18 位,占用八个字节。


 8)区分CHAR_LENGTH和LENGTH?

CHAR_LENGTH 是字符数,而 LENGTH 是字节数。拉丁字符的数字相同,但 Unicode 和其他编码的数字不同。


9)如何在内部表示 ENUM 和 SET?

由于存储优化,ENUM 和 SET 用于表示 2 的幂。


10)MySQL 中 ENUM 的用途是什么?

ENUM 是一个字符串对象,用于指定一组预定义值,可以在创建表时使用。

Create table size(name ENUM('Small', 'Medium','Large');

MySQL.svg


11)定义 REGEXP?

REGEXP 是一种模式匹配,其中在搜索值的任何位置都匹配模式。


12)CHAR 和 VARCHAR 之间的区别?

以下是CHAR和VARCHAR之间的区别:

  • CHAR 和 VARCHAR 类型在存储和检索方面有所不同
  • CHAR 列长度固定为创建表时声明的长度。长度值范围为 1 到 255
  • 存储 CHAR 值时,会使用空格向右填充,直至达到指定长度。检索 CHAR 值时,会删除尾随空格。

 13) 给出列可用的字符串类型?

字符串类型包括:

  • 设置
  • BLOB
  • 枚举
  • CHAR
  • 文字
  • 变量

14)如何获取当前 MySQL 版本?

SELECT VERSION ();

用于获取MySQL当前版本。


 15)MySQL 使用什么存储引擎?

存储引擎称为表类型,数据使用各种技术存储在文件中。

技术涉及:

  • 储存机制
  • 锁定级别
  • 索引
  • 能力和功能。

16)MySQL 中的驱动程序有哪些?

以下是 MySQL 中可用的驱动程序:

  • PHP 驱动程序
  • 数据库连接 驱动器
  • ODBC 驱动程序
  • C 包装器
  • PYTHON 驱动程序
  • PERL 驱动程序
  • RUBY 驱动程序
  • CAP11PHP 驱动程序
  • ado.net5.mxj

17)TIMESTAMP 对 UPDATE CURRENT_TIMESTAMP 数据类型有何作用?

创建表时,TIMESTAMP 列将更新为零。每当表的其他字段发生变化时,UPDATE CURRENT_TIMESTAMP 修饰符就会将时间戳字段更新为当前时间。


18)主键和候选键有什么区别?

表的每一行都由主键唯一标识。一个表有且仅有一个主键。

主键也是候选键。按照惯例,候选键可以被指定为主键,并可用于任何外键引用。


19) 如何使用 Unix shell 登录 MySql?

我们可以通过这个命令登录:

# [mysql dir]/bin/mysql -h hostname -u <UserName> -p <password>

20)myisamchk 做什么?

它压缩 MyISAM 表,从而减少其磁盘或内存使用量。


21)如何控制HEAP表的最大大小?

Heal 表的最大大小可以通过 MySQL 配置变量 max_heap_table_size 控制。


22)MyISAM 静态和 MyISAM 动态有什么区别?

在静态 MyISAM 中,所有字段都具有固定宽度。动态 MyISAM 表将具有 TEXT、BLOB 等字段,以适应不同长度的数据类型。

如果发生损坏,MyISAM Static 会更容易恢复。


23)什么是联合表?

联合表允许访问位于其他服务器上的其他数据库上的表。


24) 如果表中有一列定义为 TIMESTAMP,会怎么样?

每当行发生改变时,时间戳字段就会获取当前时间戳。


25)当列设置为 AUTO INCREMENT 并且达到表中的最大值时会发生什么?

它停止递增。任何进一步的插入都将产生错误,因为该键已被使用。


26) 我们如何找出上次插入时分配了哪个自动增量?

LAST_INSERT_ID 将返回 Auto_increment 分配的最后一个值,并且不需要指定表名。


27) 如何查看表定义的所有索引?

表的索引定义如下:

SHOW INDEX FROM <tablename>;

28)LIKE 语句中的 % 和 _ 是什么意思?

% 对应 0 个或多个字符,而 _ 在 LIKE 语句中恰好是一个字符。


29) 如何在 Unix 和 MySQL 时间戳之间进行转换?

UNIX_TIMESTAMP 是将 MySQL 时间戳转换为 Unix 时间戳的命令

FROM_UNIXTIME 是将 Unix 时间戳转换为 MySQL 时间戳的命令。


30)什么是列比较运算符?

=、<>、<=、<、>=、>、<<、>>、<=>、AND、OR 或 LIKE 运算符用于 SELECT 语句中的列比较。


 31)如何获取查询影响的行数?

行数可以通过以下方式获得

SELECT COUNT (user_id) FROM users;

32)Mysql 查询区分大小写吗?

序号

SELECT VERSION(), CURRENT_DATE;
SeLect version(), current_date;
seleCt vErSiOn(), current_DATE;

所有这些示例都相同。不区分大小写。


33)LIKE 和 REGEXP 运算符之间有什么区别?

LIKE 和 REGEXP 运算符用于以 ^ 和 % 来表达。

SELECT * FROM employee WHERE emp_name REGEXP "^b";
SELECT * FROM employee WHERE emp_name LIKE "%b";

34)BLOB 和 TEXT 有什么区别?

BLOB 是二进制大对象,可以保存可变数量的数据。BLOB 有四种类型 -

  • 小斑点
  • BLOB
  • MEDIUMBLOB 和
  • 长斑

它们的区别仅在于它们可以保存的值的最大长度。

TEXT 是不区分大小写的 BLOB。四种 TEXT 类型

  • 小文本
  • 文字
  • MEDIUMTEXT 和
  • 长文

它们都对应四种 BLOB 类型,并且具有相同的最大长度和存储要求。

BLOB 和 TEXT 类型之间的唯一区别是,排序和比较是根据以下情况进行的:敏感 对于 BLOB 值和大小写麻木不仁 对于 TEXT 值。


35)mysql_fetch_array 和 mysql_fetch_object 有什么区别?

以下是mysql_fetch_array和mysql_fetch_object之间的区别:

mysql_fetch_array() -返回结果行作为关联 排列 或来自数据库的常规数组。

mysql_fetch_object – 从数据库中返回结果行作为对象。


36) 如何在 mysql 中运行批处理模式?

以下命令用于以批处理模式运行:

mysql ;
mysql mysql.out

37) MyISAM 表将存储在哪里?并给出其存储格式?

每个 MyISAM 表以三种格式存储在磁盘上:

  • '.frm'文件存储表定义
  • 数据文件的扩展名为“.MYD”(MYData)
  • 索引文件的扩展名为“.MYI”(MYIndex)

38) MySQL 中有哪些不同的表?

总共有 5 种类型的表:

  • 我的ISAM
  • 合并
  • 创新数据库

MyISAM 是 MySQL 的默认存储引擎。


39)什么是 ISAM?

ISAM 是索引顺序访问方法的缩写,它由 IBM 开发,用于在磁带等二级存储系统上存储和检索数据。


40)什么是 InnoDB?

lnnoDB 是由 Innobase Oy(现为 Oracle 公司)开发的事务安全存储引擎。


41)MySQL 如何优化 DISTINCT?

DISTINCT 在所有列上转换为 GROUP BY,并且它将与 ORDER BY 子句结合。

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

42) 如何将字符输入为十六进制数字?

如果要输入字符作为十六进制数字,您可以输入带有单引号和 (X) 前缀的十六进制数字,或者仅在十六进制数字前加上 (Ox) 前缀。

如果表达式上下文是字符串,则十六进制数字字符串将自动转换为字符串。


43) 如何显示前 50 行?

在 MySql 中,使用以下查询显示前 50 行:

SELECT * FROM
LIMIT 0,50;

44)创建索引可以使用多少列?

任何标准表最多可以创建 16 个索引列。


45) NOW() 和 CURRENT_DATE() 有什么区别?

NOW()命令用于显示当前年、月、日,以及时、分、秒。

CURRENT_DATE() 仅显示当前年份、月份和日期。


46) 使用 CREATE 语句可以创建哪些对象?

使用 CREATE 语句创建以下对象:

  • 数据库
  • EVENT
  • 功能
  • 指数
  • 程序
  • 触发系统
  • USER
  • 查看

47) MySql 表中允许有多少个 TRIGGERS?

MySql 表中允许使用六个触发器。它们如下:

  • 插入前
  • 插入后
  • 更新前
  • 更新后
  • 删除前和
  • 删除后

48) 非标准字符串类型有哪些?

以下是非标准字符串类型:

  • 小文本
  • 文字
  • 中文本
  • 长文

49) 所有常见的 SQL 函数有哪些?

CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。

FORMAT(X, D) – 将数字 X 格式化为 D 个有效数字。

CURRDATE()、CURRTIME() — 返回当前日期或时间。

NOW() — 将当前日期和时间作为一个值返回。

MONTH()、DAY()、YEAR()、WEEK()、WEEKDAY() — 从日期值中提取给定的数据。

HOUR()、MINUTE()、SECOND() — 从时间值中提取给定的数据。

DATEDIFF(A, B) – 确定两个日期之间的差异,通常用于计算年龄

SUBTIMES(A, B) – 确定两个时间之间的差值。

FROMDAYS(INT) – 将整数天数转换为日期值。


50)解释访问控制列表。

ACL(访问控制列表)是与对象关联的权限列表。此列表是 MySQL 服务器安全模型的基础,它有助于解决用户无法连接等问题。

MySQL 将 ACL(也称为授权表)缓存在内存中。当用户尝试进行身份验证或运行命令时,MySQL 会按照预定顺序根据 ACL 检查身份验证信息和权限。

这些面试问题也会对你的口试有帮助

分享

13条评论

  1. 头像 拉梅什蒂瓦里 说:

    非常好...收藏...但请立即更新为 Innodb 中的默认引擎

  2. 头像 沙伊斯塔 说:

    Pdf 文件只有一页

  3. 苏丹舒特瓦里 说:

    非常好的问题,适合用来练习破解面试。谢谢

  4. 头像 舒布哈姆·桑尼 说:

    信息量很大的帖子。大多数问题我面试时都问过。谢谢

  5. 头像 巴比塔 说:

    这对面试很有帮助

  6. 好文章。继续分享

  7. 头像 肖恩 - 说:

    我可以关闭 Gui 工具添加到每个 select 语句末尾的 d; 吗?

  8. 头像 拉希德·乌尔·拉赫曼 说:

    好文章。但缺少非常重要的加入查询问题

  9. 头像 穆罕默德·阿尔绍巴基 说:

    非常感谢

  10. 头像 新年五日节 说:

    如何发现 MySQL 重要性?*
    你的答案

  11. 头像 玛诺·库玛(Manoj Kumar) 说:

    连接和聚类问题是面试中最常见的问题

  12. 头像 MD 丹麦语 说:

    很好的采访内容……
    但是这里缺少 join 和 case 语句 que...几乎是非常好的内容...

发表评论

您的电邮地址不会被公开。 必填项 *