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:适用于存储大量数据的归档表。

相关推荐
Cosolar16 分钟前
QwenPaw 源码学习指南
人工智能·架构·github
暗冰ཏོ1 小时前
Go 语言从入门到后端项目实战完整指南
开发语言·后端·golang·go·go语言
霸道流氓气质1 小时前
Windows批处理脚本完整指南:可移植的交互式SpringBoot项目管理
windows·spring boot·后端
沉默王二1 小时前
每月13亿免费Token,14家AI大厂的API任你用,包括Gemini
github·claude·gemini
Raink老师1 小时前
【AI面试临阵磨枪-087】Skill 生命周期:注册、加载、调度、熔断、卸载、版本管理?
人工智能·面试·职场和发展
小杍随笔1 小时前
【Rust 工具链管理完全指南:rustup toolchain 命令实战详解】
开发语言·后端·rust
还是鼠鼠1 小时前
AI掘金头条新闻系统 (Toutiao News)-获取用户信息
后端·python·mysql·fastapi·web
BingoGo1 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内
后端·php
JaguarJack2 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内
后端·php·laravel
小张小张爱学习2 小时前
Spring Boot 多线程并发入门教程:ThreadPoolTaskExecutor + CompletableFuture
java·spring boot·后端