面试MySQL基础20题(一)

MySQL 基础面试题及详细解答​编辑

1. 一张表里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15、16、17 条记录,再把 MySQL 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15?​编辑

回答

自增主键的值并不会因删除记录而回退。即使删除了 ID 为 15、16、17 的记录,在 MySQL 重启之后,新插入的记录的 ID 会是 18,而不是 15,因为自增值是按插入的顺序递增的。

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

回答

  • 高性能:MySQL 支持多种存储引擎(如 InnoDB、MyISAM),并且通过查询缓存、索引等技术优化查询性能。
  • 易用性:MySQL 提供了简单易用的接口,支持广泛的编程语言。
  • 开源:MySQL 是开源的,可以根据需要进行定制化修改。
  • 支持事务:支持 ACID(原子性、一致性、隔离性、持久性)事务特性,保证数据的一致性和可靠性。
  • 支持高可用性:提供主从复制、故障恢复等高可用特性。
  • 跨平台支持 :支持在不同操作系统(Windows、Linux、macOS)上的部署。编辑

3. Heap 表是什么?

回答

Heap 表(也叫内存表)是 MySQL 中的一种存储引擎。它的数据存储在内存中,因此查询速度非常快。Heap 表适用于临时存储和高性能的查询场景,但它的数据在服务器重启后会丢失。

4. MySQL 服务器默认端口是什么?

回答

MySQL 默认的端口号是 3306。

5. 与 Oracle 相比,MySQL 有什么优势?

回答

  • 开源免费:MySQL 是完全开源的,适合中小型企业或开发人员免费使用,而 Oracle 是收费的。
  • 轻量级:MySQL 通常比 Oracle 更轻量,适合大多数 Web 应用。
  • 易于使用:MySQL 的安装和配置相对较简单,社区文档和支持也非常丰富。
  • 速度更快:对于简单的查询,MySQL 的性能通常优于 Oracle。

6. 如何区分 FLOAT 和 DOUBLE?

回答

  • FLOAT:用于存储精度较低的浮动小数,通常占用 4 个字节,范围较小。
  • DOUBLE:用于存储精度更高的浮动小数,通常占用 8 个字节,具有更大的范围和更高的精度。

7. 区分 CHAR_LENGTH 和 LENGTH

回答

  • CHAR_LENGTH:返回字符串的字符数(考虑字符集,如 UTF-8)。
  • LENGTH:返回字符串的字节数(考虑字符的字节表示,如 UTF-8 中一个字符可能占多个字节)。

8. 在 MySQL 中 ENUM 的用法是什么?

回答
ENUM 是一种字符串类型,可以定义一组预设的值,列只能包含这些预设值中的一个。例如:

sql 复制代码
CREATE TABLE users (  
    id INT,  
    gender ENUM('Male', 'Female', 'Other')  
);  

ENUM 可以提高数据的完整性和查询效率。

9. 如何定义 REGEXP?

回答

在 MySQL 中,REGEXP 是用来进行正则表达式匹配的操作符。例如:

sql 复制代码
SELECT * FROM users WHERE name REGEXP '^A';  

这会查找所有名字以字母 A 开头的用户。

10. CHAR 和 VARCHAR 的区别?

回答

  • CHAR:固定长度的字符串类型,不论实际存储多少字符,都会占用定义的长度空间。如果存储的字符少于定义的长度,会用空格填充。
  • VARCHAR:可变长度的字符串类型,只会占用实际存储的字符长度,不会浪费空间。

11. 列的字符串类型可以是什么?

回答

MySQL 中常见的字符串类型包括:

  • CHAR
  • VARCHAR
  • TEXTTINYTEXTMEDIUMTEXTLONGTEXT
  • BLOBTINYBLOBMEDIUMBLOBLONGBLOB
  • ENUM
  • SET

12. 如何获取当前的 MySQL 版本?

回答

可以通过以下命令获取当前 MySQL 的版本:

sql 复制代码
SELECT VERSION();  

13. MySQL 中使用什么存储引擎?

回答

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

  • InnoDB:支持事务、外键和行级锁。
  • MyISAM:不支持事务,适用于只读或较低并发的应用。
  • MEMORY:存储在内存中,数据丢失。
  • CSV:将数据存储为 CSV 文件。

14. MySQL 驱动程序是什么?

回答

MySQL 驱动程序是应用程序和 MySQL 服务器之间的接口,常见的驱动程序有:

  • MySQL Connector/J(Java 驱动)
  • MySQL Connector/ODBC(ODBC 驱动)
  • MySQL Connector/Python(Python 驱动)

15. TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?

回答

在 MySQL 中,TIMESTAMP 数据类型可以自动记录行的最后修改时间。使用 CURRENT_TIMESTAMP 可以在每次更新时自动更新字段的时间戳。

16. 主键和候选键有什么区别?

回答

  • 主键(Primary Key):唯一标识一行数据的列或组合,主键列不能有空值。
  • 候选键(Candidate Key):可以唯一标识一行数据的列,候选键可以有多个,其中一个被选为主键。

17. 如何使用 Unix shell 登录 MySQL?

回答

可以通过以下命令使用 Unix shell 登录 MySQL:

bash 复制代码
mysql -u username -p  

然后输入密码即可。

18. myisamchk 是用来做什么的?

回答
myisamchk 是用于修复、优化、检查 MyISAM 表的命令行工具。可以用于修复损坏的 MyISAM 表,或对表进行优化操作。

19. 如何控制 HEAP 表的最大尺寸?

回答

在创建 HEAP 表时,可以使用 MAX_ROWS 选项来限制表的最大尺寸,例如:

sql 复制代码
CREATE TABLE heap_table (  
    id INT,  
    name VARCHAR(100)  
) ENGINE=HEAP MAX_ROWS=10000;  

20. MyISAM Static 和 MyISAM Dynamic 有什么区别?

回答

  • MyISAM Static :静态 MyISAM 表,所有列的长度固定,不支持 NULL 值。
  • MyISAM Dynamic :动态 MyISAM 表,列的长度可以变化,支持 NULL 值。

这些问题涵盖了 MySQL 的基础知识,了解并掌握它们有助于面试的准备以及在实际开发中的应用。

相关推荐
百锦再2 小时前
一文掌握Flask:从基础使用到高级应用
后端·python·django·flask·virtualenv·scikit-learn·pygame
IT_陈寒3 小时前
3年Java老手:我用这5个Spring Boot优化技巧将系统吞吐量提升了200%!🚀
前端·人工智能·后端
杨杨杨大侠3 小时前
手把手教你写 httpclient 框架(八)- 实战案例集锦
java·http·github
白露与泡影5 小时前
2025年高质量Java面试真题汇总
java·python·面试
꒰ঌ 安卓开发໒꒱5 小时前
Java 面试 -Java基础
java·开发语言·面试
做运维的阿瑞8 小时前
Linux 企业级备份体系实战:cron/anacron/restic/rclone 对比与脚本总结
linux·运维·服务器·后端·学习·系统架构·centos
keep_di10 小时前
06-django中配置接口文档coreapi
后端·python·django
讨厌吃蛋黄酥12 小时前
🔥 面试必考题:手写数组扁平化,5种方法全解析(附代码+图解)
前端·javascript·面试
麦当_12 小时前
Cloudflare Workers 环境下的数据库死锁问题及解决方案
javascript·数据库·后端