2025 年 Top 50 个数据库面试问题及答案

这里有面向初学者和有经验的候选人的数据库面试题及答案,助您找到心仪的工作。

 

初学者数据库面试基础问题及答案

1) 定义数据库。

预先组织好的、可被计算机识别的数据集合称为数据库。


2) 什么是DBMS?

数据库管理系统 (DBMS) 是专门设计的应用程序,它使用户能够与其他应用程序进行交互。

👉 免费PDF下载:数据库(DBMS)面试题及答案>>


3) DBMS能够处理哪些类型的交互?

DBMS可以处理的各种交互类型包括:

  • 数据定义
  • 更新
  • 检索
  • 管理

Database (DBMS) Interview Questions


4) 区分数据库技术的发展。

数据库技术的发展可以分为:

  • 结构或数据模型
  • 导航模型
  • SQL/关系模型

5) 谁提出了关系模型?

Edgar F. Codd 于1970年提出了关系模型。


6) 数据库语言的特点是什么?

数据库语言还可以包含以下特性:
DBMS特定的存储引擎配置和管理
通过计算(如求和、计数、平均、分组、排序和交叉引用)来修改查询结果的计算约束执行应用程序编程接口


7) 数据库语言的作用是什么?

作为专用语言,它们包含:

  • 数据定义语言
  • 数据操纵语言
  • 查询语言

8) 定义数据库模型。

确定数据如何存储、操作和组织的根本方法,以及数据库逻辑结构的称为数据库模型。


9) 什么是SQL?

结构化查询语言 (SQL) 是一种ANSI标准语言,用于更新和访问数据库。

SQL


10) 列出数据库的各种关系。

数据库的各种关系包括:

  • 一对一:一张表与另一张具有相同列的表建立关系。
  • 一对多:两张表具有主键和外键关系。
  • 多对多:中间表与多个表相关联。

11) 定义范式化(Normalization)。

数据库中组织好的、避免了不一致的依赖和冗余的数据称为范式化


12) 列出数据库范式化的优点。

数据库范式化的优点包括:

  • 无重复条目
  • 节省存储空间
  • 提高查询性能。

13) 定义反范式化(Denormalization)。

通过添加冗余数据来提高数据库性能,从而消除复杂数据,这称为反范式化。


14) 定义 DDL 和 DML。

管理数据库的属性和特征称为数据定义语言 (DDL)。

在数据库中操作数据,如插入、更新、删除,称为数据操纵语言 (DML)。


15) 列出一些 DDL 命令。

它们是

CREATE

Create 用于 CREATE TABLE 语句。语法是:

CREATE TABLE [column name] ( [column definitions] ) [ table parameters]

ALTER

它有助于修改现有的数据库对象。其语法是:

ALTER objecttype objectname parameters.

DROP

它会销毁现有的数据库、索引、表或视图。其语法是:

DROP objecttype objectname.

16) 定义 Union All 操作符和 Union。

Union All 操作符返回两个表的全部记录。Union 返回两个表的不重复记录。


17) 定义游标(cursor)。

一个数据库对象,用于逐行操作数据,代表一个结果集,称为游标。


18) 列出游标类型。

它们是

  • 动态:在滚动时反映更改。
  • 静态:在滚动时不会反映更改,而是使用快照记录。
  • 键集:数据修改时看不到新数据的反映。

19) 列出游标的类型。

游标的类型包括:

  • 隐式游标:一旦 SQL 执行,会自动声明,用户无感知。
  • 显式游标:PL/SQL定义,用于处理多行查询。

20) 定义子查询(sub-query)。

包含在另一个查询中的查询称为子查询。


21) 为什么使用 GROUP BY 子句?

GROUP BY 子句通过收集相似数据来派生聚合值。


22) 比较非聚集索引和聚集索引。

两者都具有 B 树结构,非聚集索引包含数据指针,允许一个表有多个非聚集索引,而聚集索引对每个表是唯一的。


23) 定义聚合函数(Aggregate functions)。

作用于一组值并返回单个值的函数称为聚合函数。


24) 定义标量函数(Scalar functions)。

标量函数依赖于给定的参数并返回单个值。


25) 创建视图时可以应用哪些限制?

应用的限制包括:

  • 只有当前数据库可以拥有视图。
  • 您不能更改任何特定视图中的计算值。
  • 完整性约束决定了 INSERT 和 DELETE 的功能。
  • 不能应用全文索引定义。
  • 不能创建临时视图。
  • 临时表不能包含视图。
  • 与 DEFAULT 定义无关联。
  • INSTEAD OF 等触发器与视图相关联。

26) 定义“相关子查询”(correlated subqueries)。

“相关子查询”是一种子查询,但相关子查询依赖于另一个查询以返回值。在执行时,子查询先于相关查询执行。


27) 定义数据仓库(Data Warehousing)。

从中央位置存储和访问数据以做出战略决策称为数据仓库。企业管理用于管理信息,其框架称为数据仓库。


28) 定义 JOIN 并列出其类型。

JOIN 有助于解释不同表之间的关系。它们还允许您根据另一表中的数据选择数据。

各种类型包括:

  • 内连接 (INNER JOINs):当连接两个或多个表时,中间会留下空行。
  • 外连接 (OUTER JOINs):分为左外连接和右外连接。通过连接另一侧的表,会在指定的一侧留下空行。

其他连接包括 CROSS JOINs、NATURAL JOINs、EQUI JOIN 和 NON-EQUI JOIN。


29) 什么是索引优化(Index hunting)?

索引有助于提高数据库的速度和查询性能。优化索引集合的过程称为索引优化。


30) 索引优化如何帮助提高查询性能?

索引优化有助于提高数据库的速度和查询性能。为此,采取了以下措施:

  • 查询优化器用于协调查询与工作负载的研究,并基于此提出最佳查询使用。
  • 观察索引、查询分布及其性能,以检查效果。
  • 还建议将数据库调优到少量有问题查询。

数据库面试经验者问题及答案

31) 列出查询的缺点。

查询的缺点包括:

  • 无索引
  • 存储过程编译过多。
  • 触发器和过程未使用 SET NOCOUNT ON。
  • 复杂的连接导致查询编写不当。
  • 游标和临时表表现不佳。

32) 列出高效编写事务的方法。

高效编写事务的方法:

  • 事务期间不应允许用户输入。
  • 浏览时,不得打开数据事务。
  • 事务应尽可能保持简短。
  • 降低事务隔离级别。
  • 事务处理期间应访问最少的数据信息。

33) 什么是执行计划(Executive Plan)?

执行计划可以定义为:

  • SQL Server 缓存已收集的过程或查询的执行计划,并在后续调用中使用。
  • 与性能增强相关的重要特性。
  • 数据执行计划可以以文本或图形方式查看。

34) 定义 B 树。

一种树形数据结构,用于存储排序数据,并允许对数据进行搜索、插入、顺序访问和删除,时间复杂度为对数。


35) 区分表扫描(Table Scan)和索引扫描(Index Scan)。

遍历所有表行的操作称为表扫描,而遍历所有索引项的操作称为索引扫描。


36) 就索引而言,什么是填充因子(Fill Factor)概念?

填充因子可以定义为定义叶级页面上要填充数据的空间百分比的值。填充因子的默认值为 100。


37) 定义碎片化(Fragmentation)。

碎片化可以定义为服务器的数据库特性,它允许用户控制表级别存储的数据。


38) 区分嵌套循环连接(Nested Loop)、哈希连接(Hash Join)和合并连接(Merge Join)。

嵌套循环(循环嵌套循环)

形成一个外循环和一个内循环,内循环包含较少的条目,然后为每个条目,内循环会被单独处理。

例如:

  • Select col1.*, col2.* from coll, col2 where coll.col1=col2.col2;

它的处理方式如下:

For i in (select * from col1) loop
For j in (select * from col2 where col2=i.col1) loop
结果显示;
End of the loop;
End of the loop;

嵌套循环的步骤是:

  • 识别外部(驱动)表
  • 将内部(被驱动)表分配给外部表。
  • 对于外部表的每一行,访问内部表的行。

嵌套循环从内到外执行如下:

  • outer_loop
  • inner_loop
  • 哈希连接

在连接大型表时,倾向于使用哈希连接。

哈希连接的算法分为:

  • 构建(Build):它是一个在内存中的哈希表,存在于较小的表中。
  • 探测(Probe):该哈希表的哈希值适用于每个第二行的元素。
  • 排序合并连接

在排序合并连接中,连接两个独立的数据源。当数据量足够大时,它们的性能优于嵌套循环,但通常不如哈希连接。整个操作可以分为两部分:

排序合并操作

从 input1 获取第一行 R1

从 input2 获取第一行 R2。

合并连接操作

任一循环结束时都没有“while”字样。
if R1 joins with R2
从 input 2 获取 R2 的下一行
return (R1, R2)
else if R1 < style=””> 从 input 1 获取 R1 的下一行
else
从 input 2 获取 R2 的下一行
End of the loop


39) 什么是数据库分区(Database partitioning)?

将逻辑数据库划分为独立的完整单元,以提高其管理、可用性和性能,称为数据库分区。


40) 解释分区的重要性。

将一个大的表逻辑上分割成更小的数据库实体,称为数据库分区。其好处包括:

  • 在大多数被频繁访问的行位于一个分区中的情况下,可以极大地提高查询性能。
  • 访问一个分区的大部分数据
  • 可以使用较慢且成本较低的存储介质来存储很少使用的数据。

41) 定义数据库系统。

DBMS 和数据库一起称为数据库系统。


42) 什么是查询求值引擎(Query Evaluation Engine)?

查询求值引擎执行编译器生成的低级指令。


43) 定义 DDL 解释器。

DDL 语句被解释并记录在称为元数据(metadata)的表中。


44) 定义原子性(Atomicity)和聚合性(Aggregation)。

原子性:它是一个“全有或全无”的概念,使用户能够确信未完成的事务得到了处理。DBMS 会撤销未完成事务的操作。

聚合性:在此模型中,将收集到的实体及其关系进行聚合。它主要用于表达关系中的关系。


45) 列出事务的各个阶段。

事务的各个阶段包括:

  • 分析阶段。
  • 重做阶段
  • 撤销阶段

46) 定义面向对象模型(Object-oriented model)。

该模型由对象组成,其中值存储在对象内的实例变量中。对象本身包含用于其操作的对象体,称为方法。具有相同变量和方法的对象称为类。


47) 定义实体(Entity)。

它可以被定义为现实世界中具有独立存在的“事物”。


48) 什么是实体类型(Entity type)?

具有相似属性的一组条目是实体类型。


49) 定义实体集(Entity Set)。

数据库中任何特定类型条目的所有条目的集合称为实体集。


50) 什么是实体类型扩展(Entity type extension)?

将相似实体类型组合成一个特定类型,并将其作为一个实体集进行分组。

这些面试问题也将有助于您的口试