1. MyISAM 和 InnoDB 引擎的区别是什么?

InnoDB 支持事务,MyISAM 不支持;InnoDB 支持行级锁,MyISAM 只支持表级锁;InnoDB 支持外键约束,MyISAM 不支持。

2. 什么是索引?

索引是一种数据结构,可以帮助数据库快速定位和检索数据。

3. 解释 ACID 属性。

  • 原子性(Atomicity):一个事务中的所有操作要么全部成功,要么全部失败。
  • 一致性(Consistency):数据库在事务执行前后都保持一致性状态。
  • 隔离性(Isolation):多个事务并发执行时,彼此之间互不影响。
  • 持久性(Durability):事务完成后,其对数据库的修改是永久性的。

4. 什么是死锁?如何避免死锁?

死锁是指两个或多个事务相互等待对方释放资源,导致所有事务都无法继续执行的情况。

避免死锁的方法包括:

  • 保持事务简短,尽量减少锁定资源的时间。
  • 按照相同的顺序访问资源。
  • 使用超时机制,避免事务无限期等待。

5. 什么是存储过程?

存储过程是一组预编译的 SQL 语句,可以被应用程序调用执行。

6. 什么是触发器?

触发器是一种特殊的存储过程,在特定事件发生时自动执行。

7. 如何优化 MySQL 查询?

  • 使用索引。
  • 避免使用 SELECT *,只查询需要的列。
  • 使用 LIMIT 限制查询结果集的大小。
  • 优化 WHERE 子句,使用合适的运算符。

8. 什么是数据库范式?

数据库范式是一组设计数据库的规则,用于减少数据冗余和提高数据完整性。

9. MySQL 中有哪些不同的数据类型?

数值类型、日期和时间类型、字符串类型、空间类型等。

10. 什么是连接查询?

连接查询用于组合来自多个表的数。