2025 年 Top 50 个数据库面试问题及答案
这里有面向初学者和有经验的候选人的数据库面试题及答案,助您找到心仪的工作。
初学者数据库面试基础问题及答案
1) 定义数据库。
预先组织好的、可被计算机识别的数据集合称为数据库。
2) 什么是DBMS?
数据库管理系统 (DBMS) 是专门设计的应用程序,它使用户能够与其他应用程序进行交互。
3) DBMS能够处理哪些类型的交互?
DBMS可以处理的各种交互类型包括:
- 数据定义
- 更新
- 检索
- 管理
4) 区分数据库技术的发展。
数据库技术的发展可以分为:
- 结构或数据模型
- 导航模型
- SQL/关系模型
5) 谁提出了关系模型?
Edgar F. Codd 于1970年提出了关系模型。
6) 数据库语言的特点是什么?
数据库语言还可以包含以下特性:
DBMS特定的存储引擎配置和管理
通过计算(如求和、计数、平均、分组、排序和交叉引用)来修改查询结果的计算约束执行应用程序编程接口
7) 数据库语言的作用是什么?
作为专用语言,它们包含:
- 数据定义语言
- 数据操纵语言
- 查询语言
8) 定义数据库模型。
确定数据如何存储、操作和组织的根本方法,以及数据库逻辑结构的称为数据库模型。
9) 什么是SQL?
结构化查询语言 (SQL) 是一种ANSI标准语言,用于更新和访问数据库。
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)?
将相似实体类型组合成一个特定类型,并将其作为一个实体集进行分组。
这些面试问题也将有助于您的口试