数据库面试题(MySQL、Oracle)

数据库

数据库的四大特性

原子性:

事务中的所有操作要么全部执行成功,要么全部执行失败,不存在部分执行的情况;成功必须要完全应用到数据库,失败则不能对数据库产生影响;

一致性:

事务在执行前后,数据库的状态必须保持一致性,即从一个一致性状态转移到另一个一致性状态,中间不会处于不一致状态。

隔离性:

当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不被其他事务的操作所干扰,多个并发事务之间要相互隔离。

持久性:

一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便在数据库系统遇到故障的情况下也不会丢失事务的操作。

脏读

脏读是指一个事务读取了未提交事务执行过程中(包换了多次的dml,但是未提交事务,随时可能回滚)的数据。当一个事务的操作正在多次修改数据,而在事务还未提交的时候,另外一个并发事务来读取了数据,就会导致读取到的数据并非是最终持久化之后的数据,这个数据就是脏读的数据。

不可重复读

不可重复读是一个事务执行过程中,另一事务提交并修改了当前事务正在读取的数据,导致当前事务读取到了不同的数据。(乐观锁实现原理,靠不可重复读触发数据不一致,来数据回滚)

幻读

幻读和不可重复读都是读取了已经提交的事务(这点同脏读不同),不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)

数据库的隔离等级

READ UNCOMMITTED (未提交读)

这是最低的隔离级别,它允许读取尚未提交的数据。这种隔离级别可能会导致脏读、不可重复读和幻读。

READ COMMITTED (提交读)

这是大多数数据库的默认隔离级别。它只允许读取已经提交的数据。可以避免脏读,但可能会导致不可重复读和幻读。

REPEATABLE READ (可重复读)

这种隔离级别保证了在事务处理过程中,对同一字段的多次读取结果是一致的。但它可能导致幻读(当新数据行被添加到查询结果集中时)。

SERIALIZABLE (序列化)

这是最高的隔离级别。通过对事务进行串行化执行来避免脏读、不可重复读和幻读的问题,但会降低数据库的并发性能

索引

优点:

  1. 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
  2. 可以加速表和表之间的连接
  3. 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
  4. 创建唯一性索引,保证数据库表中每一行数据的唯一性;

缺点:

  1. 索引需要占物理空间
  2. 创建索引时需要较长时间
  3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
普通索引
sql 复制代码
create index 索引名 on 表(列);
alter table 表 add index 索引名(列);
唯一索引

不允许其中任何两行具有相同索引值的索引

sql 复制代码
alter table 表 add unique index 索引名(列);
主键索引
sql 复制代码
ALTER TABLE 表名 ADD CONSTRAINT 索引名 PRIMARY KEY (列名);

以上为Oracle和MySQL数据库共有索引

Oracle数据库独有索引
B树索引

Oracle中一般新建索引类型均为,通常用于该列值较多的情况

sql 复制代码
CREATE INDEX 索引名 ON 表名(列名);
位图索引

该索引适用于一些值较少列(例如表示状态、分类)

sql 复制代码
CREATE BITMAP INDEX 索引名 ON 表名 (列名);
相关推荐
测试199812 小时前
2026最新软件测试面试八股文【附文档】
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
zmsofts12 小时前
java面试必问13:MyBatis 一级缓存、二级缓存:从原理到脏数据,一篇讲透
java·面试·mybatis
maqr_11012 小时前
MySQL数据库迁移到云端如何保障安全_数据加密与SSL连接配置
jvm·数据库·python
我叫黑大帅12 小时前
为什么map查找时间复杂度是O(1)?
后端·算法·面试
u01091476012 小时前
MySQL如何限制触发器递归调用的深度_防止触发器死循环方法
jvm·数据库·python
weixin_3812881812 小时前
MySQL中如何使用HEX函数转换十六进制_MySQL进制转换函数
jvm·数据库·python
Deitymoon13 小时前
嵌入式数据库——SQLite基础
数据库·sqlite
YMatrix 官方技术社区13 小时前
美国·硅谷|YMatrix 即将亮相 Postgres Conference 2026,前瞻 AI 时代的数据基座
数据库·数据仓库·postgresql·时序数据库·ymatrix
bKYP953cL13 小时前
构建自己的AI编程助手:基于RAG的上下文感知实现方案
数据库·人工智能·ai编程
Bert.Cai13 小时前
MySQL DML简介
数据库·mysql