数据库面试题(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 表名 (列名);
相关推荐
NiNg_1_2343 分钟前
Echarts连接数据库,实时绘制图表详解
前端·数据库·echarts
测试老哥11 分钟前
外包干了两年,技术退步明显。。。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
Azoner19 分钟前
postgresql安装部署(linux)
数据库·postgresql
追逐时光者42 分钟前
免费、简单、直观的数据库设计工具和 SQL 生成器
后端·mysql
PyAIGCMaster43 分钟前
文本模式下成功。ubuntu P104成功。
服务器·数据库·ubuntu
drebander1 小时前
MySQL 查询优化案例分享
数据库·mysql
初晴~1 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
盖世英雄酱581361 小时前
InnoDB 的页分裂和页合并
数据库·后端
ThisIsClark2 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
YashanDB3 小时前
【YashanDB知识库】XMLAGG方法的兼容
数据库·yashandb·崖山数据库