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. 什么是连接查询?
连接查询用于组合来自多个表的数。