面试题总结——数据库

本文是关于数据库面试的总结,涵盖了不同存储引擎的特性,如InnoDB、MyISAM和MEMORY,以及数据库的三大范式。详细解释了char、varchar、text的区别和drop、delete操作的差异。此外,讨论了内外连接的使用场景,以及索引的分类、优缺点和底层实现,特别是B+树的优势。事务的ACID特性、并发问题、隔离级别和MVCC原理也有深入阐述。最后,介绍了MySQL的锁机制,包括表级锁、行级锁和页级锁,以及乐观锁和悲观锁的概念。
摘要由CSDN通过智能技术生成

面试题总结——数据库

 1.常见三种引擎的区别

  InnoDB:支持事务处理,支持外键,(支持行级锁和表级锁,默认为行级锁),有64TB的存储限制。若需要对事务的完整性要求比较高,需要实现并发控制,则选择InnoDB;
  MyISAM:不支持事务和外键,(仅支持表级锁),插入速度快,空间和内存使用比较低。若表主要用于数据的插入与读取,读操作远多于写操作,则选择MyISAM;
  MEMORY:不支持事务和外键,所有的数据都在内存中,数据处理速度快,但安全性不高。若表需要很快的读写速度,则需要选择MEMORY。

 2.数据库三大范式

  第一范式:列不可分;
  第二范式:有主键,保证完全依赖(若主键是多列则需要同时依赖这多列)
  第三范式:无传递依赖(非主键列A依赖非主键列B,而B依赖主键,这样属于传递依赖,不符合3NF)

 3.char,varchar,text的区别

  char:长度固定,最大长度255;
  varchar:可变长度,可设置最大长度(最大65535)
  text:不设置长度,存储可变长度的非Unicode数据(text一般存储长度比较大的字段)

 4.drop,delete的区别

  drop:从数据库中删除表,所有的数据行,索引,权限、触发器也会被删除,不能回滚。
  delete:删除表的全部或一部分数据行,每删除一行,都会在事务日志中记录一下,执行delete后用户需要提交(commit)或回滚(rollback)来执行删除或撤销删除。

 5.内外连接的区别

  内连接:驱动表中的记录在被驱动表中找不到匹配的记录,该记录不会被加入到最终的结果集。SELECT * FROM t1 [INNER | CROSS] JOIN t2 [ON 连接条件] [WHERE 普通过滤条件];
  外连接:驱动表中的记录即使被驱动表中没有匹配的记录,仍会被加入到最终的结果集,对应的列使用NULL填充
   左外连接:结果集包含左表的全部记录以及右表中符合连接条件的记录,如果左表的某行在右表中没有匹配行,则在左外连接的结果集中右表的这些行对应的所有列都为null。SELECT * FROM t1 LEFT [OUTER] JOIN t2 ON 连接条件 [WHERE 普通过滤条件];
   右外连接:结果集包含右表的全部记录以及左表中符合连接条件的记录,如果右表的某行在左表中没有匹配行,则在右外连接的结果集中左表的这些行对应的所有列都为null。SELECT * FROM t1 RIGHT [OUTER] JOIN t2 ON 连接条件 [WHERE 普通过滤条件];
  内外连接本质区别:在驱动表中的记录不符合ON子句中的连接条件时会不会把该记录加入到最终的结果集


                    索引


 1.索引简介

  索引是对数据库表中一列或多列的值进行排序的数据结构,以协助快速查询、更新数据库表中数据。

 2.索引分类

  ①主键索引:一个表中,最多有一个主键索引,主键索引的列不可重复也不能为null,效率较高;
  ②唯一索引:一个表中,可有多个唯一索引,唯一索引的列不可重复但可以为null,效率较高;
  ③普通索引:一个表中,可有多个普通索引,普通索引的列可以有重复的值;
  ④全文索引:文章字段或有大量文字的字段进行检索,可使用全文索引机制(存储引擎必须是MyISAM)

 3.索引优缺点

  3.1.为什么要使用索引(优点)

   ①提高数据查询效率。
   ②通过创建唯一性索引,保证数据库表中每一行数据的唯一性。

  3.2.怎么不在所有列上都添加索引(缺点)

   ①当对表中的数据进行增加、删除和修改时,索引需要动态维护,降低了数据的维护速度。
   ②索引需要占一定的物理空间,会需要更大的空间。
   ③创建和维护索引都需要耗费时间,且时间会随着数据量的增加而增加。

 4.索引的底层原理

  InnoDB底层使用B+树实现索引。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值