去BAT面试,面到原题!见者收藏这160道MySQL面试题!
内容提要
MySQL是一种开源免费的关系型数据库管理系统,适合Java企业级开发。它支持扩展,与Oracle和Sql Service相比,具有不同的系统支持、费用和性能。索引是一种特殊的文件,用于快速查询和更新数据库表中的数据,包括普通索引、唯一索引和复合索引。B树和B+树的区别在于节点存储方式。死锁是多个事务相互占用资源导致的循环现象,可以通过约定访问顺序、锁定资源和升级锁定颗粒度来解决。视图是一种虚拟表,提高了复杂SQL语句的复用性和表操作的安全性。SQL语句主要分为DDL、DQL、DML和DCL四类。
延伸解读
索引的适用场景与代价
文章指出,索引能加速查询,但增删改操作会先访问索引,从而降低写入速度。因此,增删改频繁而查询较少的表不宜建索引,更新频繁的字段也不适合。此外,普通索引不支持空值,唯一索引支持空值。这些细节提醒开发者,索引设计需权衡读写性能,不能盲目添加。
B树与B+树的结构差异
文章对比了B树和B+树:B树的内部节点和叶子节点都可存放键和值,而B+树的内部节点只存键,叶子节点才存放键和值。更重要的是,B+树的叶子节点通过链相连,B树的叶子节点各自独立。这种结构差异影响了数据库索引的查询效率和范围扫描能力。
死锁的预防与解决思路
死锁是多个事务相互占用资源并请求对方资源导致的循环等待。文章给出了几种解决方法:约定以相同顺序访问表、在事务中一次性锁定所需资源、对易死锁业务升级锁定颗粒度(如表级锁)。这些方法的核心是减少事务间的循环依赖,从而降低死锁概率。
视图的虚拟性与安全性
视图本质上是虚拟表,物理上不存在,其数据来自定义视图的查询所引用的基本表,并在引用时动态生成。视图能提高复杂SQL的复用性,同时让开发者只关注特定数据,看不到底层表的全部数据,从而增强数据安全性。这使视图成为权限控制和简化查询的实用工具。
Q&A
MySQL是什么?
MySQL是一个开源免费的关系型数据库管理系统,适合Java企业级开发。
MySQL与Oracle和Sql Service有什么区别?
MySQL开源免费,支持多平台,而Oracle和Sql Service需要付费且主要在特定系统上使用。
什么是索引,它的作用是什么?
索引是一种特殊的数据结构,用于快速查询和更新数据库表中的数据,类似于书籍的目录。
B树和B+树有什么区别?
B树的内部节点可以存放键和值,而B+树的内部节点只存放键,叶子节点相连。
什么是死锁,如何解决?
死锁是多个事务相互占用资源导致的循环现象,可以通过约定访问顺序和锁定资源来解决。
视图在MySQL中有什么用?
视图是一种虚拟表,提高了复杂SQL语句的复用性和表操作的安全性。