MySQL 面试题及详细解答(二)

​编辑

21. Federated 表是什么?

回答
Federated 表是一种特殊的 MySQL 表类型,它允许你从一个 MySQL 服务器访问另一个 MySQL 服务器上的表。这种表不会在本地存储数据,而是通过网络访问远程数据库来进行数据操作。这对于分布式数据库系统或跨服务器查询非常有用。

22. 如果一个表有一列定义为 TIMESTAMP,将发生什么?​编辑

回答

如果表中的列定义为 TIMESTAMP,则该列会自动存储当前的时间戳(当前时间)。当插入新记录时,TIMESTAMP 列会自动填充当前时间。如果有更新操作,TIMESTAMP 列会在每次更新时自动更新为当前时间,除非使用 DEFAULTON UPDATE 进行特定配置。

23. 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?​编辑

回答

如果 AUTO_INCREMENT 列达到了最大值(例如,对于 INT 类型,最大值为 2147483647),MySQL 会停止自动增量并发生错误。为了防止这种情况,可以使用更大的整数类型(如 BIGINT),或者手动调整 AUTO_INCREMENT 值。

24. 怎样才能找出最后一次插入时分配了哪个自动增量?

回答

可以通过 0 函数获取最后一次插入的 AUTO_INCREMENT 值。例如:

sql 复制代码
SELECT 0;  

该函数返回当前连接中最后一次插入的自增值。

25. 你怎么看到为表格定义的所有索引?

回答

可以使用 SHOW INDEX FROM 命令查看一个表上定义的所有索引。例如:

sql 复制代码
SHOW INDEX FROM table_name;  

此命令将返回表上所有索引的详细信息。

26. LIKE 声明中的 %_ 是什么意思?​编辑

回答

  • % :匹配零个或多个字符。例如,'a%' 可以匹配 a, abc, a123 等。
  • _ :匹配单个字符。例如,'a_' 可以匹配 ab, a1, a2 等。

27. 如何在 Unix 和 MySQL 时间戳之间进行转换?

回答

在 Unix 时间戳和 MySQL 的 DATETIMETIMESTAMP 类型之间进行转换,可以使用 FROM_UNIXTIME()UNIX_TIMESTAMP() 函数:

  • 将 Unix 时间戳转换为 MySQL 时间:
sql 复制代码
SELECT FROM_UNIXTIME(1632968400);  
  • 将 MySQL 时间转换为 Unix 时间戳:
sql 复制代码
SELECT UNIX_TIMESTAMP('2025-09-24 12:00:00');  

28. 列对比运算符是什么?

回答

列对比运算符用于比较列的值,常见的对比运算符有:

  • =(等于)
  • !=<>(不等于)
  • >(大于)
  • <(小于)
  • >=(大于或等于)
  • <=(小于或等于)

29. 我们如何得到受查询影响的行数?

回答

可以使用 ROW_COUNT() 函数来获取受最近执行的查询影响的行数。对于 INSERTUPDATEDELETE 等查询都可以使用该函数。例如:

sql 复制代码
SELECT ROW_COUNT();  

30. MySQL 查询是否区分大小写?

回答

MySQL 默认在 Linux 系统上对表名区分大小写,因为文件系统是区分大小写的。而在 Windows 系统上,表名默认不区分大小写。列名和别名默认不区分大小写,除非通过更改字符集或使用 BINARY 进行显式比较。

31. LIKE 和 REGEXP 操作有什么区别?

回答

  • LIKE :用于进行简单的模式匹配,支持 %_ 通配符。
  • REGEXP:用于进行更复杂的正则表达式匹配,支持更丰富的匹配模式,功能更强大。

例如:

sql 复制代码
SELECT * FROM users WHERE name LIKE 'A%';   -- 匹配以 A 开头的所有名字  
SELECT * FROM users WHERE name REGEXP '^A';  -- 匹配以 A 开头的所有名字,支持更多复杂模式  

32. BLOB 和 TEXT 有什么区别?

回答

  • BLOB(Binary Large Object)用于存储二进制数据(如图像、视频等)。
  • TEXT 用于存储大量文本数据(如文章、评论等)。

BLOB 数据类型不能进行字符集转换,而 TEXT 数据类型会根据字符集进行转换。

33. MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?

回答

  • mysql_fetch_array():返回一个包含查询结果的关联数组、索引数组或两者的数组。
  • mysql_fetch_object():返回一个包含查询结果的对象,每一列作为对象的属性。

例如:

php 复制代码
$row = mysql_fetch_array($result);  // $row['column_name']  
$row = mysql_fetch_object($result); // $row->column_name  

34. 我们如何在 MySQL 中运行批处理模式?

回答

批处理模式通常用于执行多个 SQL 查询。可以使用 mysql 命令行客户端中的 -e 选项来执行批处理命令。例如:

bash 复制代码
mysql -u username -p -e "USE db_name; SELECT * FROM table_name;"  

还可以将多条 SQL 语句写入脚本文件并使用 source 命令执行:

bash 复制代码
mysql -u username -p < script.sql  

35. MyISAM 表格将在哪里存储,并且还提供其存储格式?

回答

MyISAM 表格存储在数据库目录下,每个表通常会有三个文件:

  • .frm:存储表结构。
  • .MYD:存储数据。
  • .MYI:存储索引。

这些文件存储在数据库的文件系统中。

36. MySQL 中有哪些不同的表格?

回答

MySQL 支持多种类型的表格(存储引擎),常见的包括:

  • InnoDB:支持事务、外键和行级锁。
  • MyISAM:不支持事务,适用于读操作较多的场景。
  • MEMORY:数据存储在内存中,适用于临时数据存储。
  • CSV:将表存储为 CSV 文件。
  • FEDERATED:用于连接远程数据库的表。
  • ARCHIVE:适用于存储大量数据的归档表。

相关推荐
Y***h18716 小时前
第二章 Spring中的Bean
java·后端·spring
稚辉君.MCA_P8_Java17 小时前
DeepSeek 插入排序
linux·后端·算法·架构·排序算法
t***p93517 小时前
idea创建SpringBoot自动创建Lombok无效果(解决)
spring boot·后端·intellij-idea
d***817217 小时前
解决SpringBoot项目启动错误:找不到或无法加载主类
java·spring boot·后端
无限大618 小时前
RBAC模型:像电影院选座一样管理权限,告别"一个用户配一个权限"的噩梦
后端
han_18 小时前
前端高频面试题之CSS篇(一)
前端·css·面试
덕화18 小时前
【面试宝典】线上问题逆向分析1
面试·职场和发展
间彧18 小时前
在CI/CD流水线中如何集成自动化的发布验证和熔断机制?
后端
美团程序员18 小时前
一篇文章教你搞定:”xx 功能如何测试?“常见面试题型!
测试工具·面试·职场和发展·测试用例
间彧18 小时前
如何处理蓝绿部署中的数据迁移和数据库版本兼容性问题?
后端