企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

数据库(DBMS)面试题(数据库面试必会6题经典)

wudianyun 2025-07-24 22:36:52 精选文章 9 ℃

问题索引

o 数据和信息的区别?

o 什么是元数据和数据字典?

o 什么是数据库和DBMS?

o ANSI数据库的3个层次是什么?

o 定义数据抽象?

o 定义映射和数据独立性?

o 数据库用户类型?

o 定义ER图?

o 泛化 vs 特化

o 键的类型?

o 连接的类型?

o 索引的类型?

o 什么是RDMS?

o DBMS相对于文件系统的优势

o 解释DBMS中存在的不同语言

o DBMS中ACID属性是什么意思?

o 什么是规范化和反规范化?

o 什么是锁?解释共享锁和排他锁的主要区别

o 什么是数据仓库?

o 规范化的类型

o 各种类型的异常

o HAVING和WHERE子句的区别

o 什么是触发器?

o 什么是存储过程?

o 什么是聚集索引和非聚集索引?

o 什么是活锁?

o SQL的目的是什么?

o SQL中的子句是什么?

o RAID技术的主要目标是什么?

o 状态 vs 模式

o 描述事务日志在DBMS中的作用

o 定义SQL注入

o DBMS中的数据挖掘是什么?

o Char vs Varchar

o 当达到SQL中自增的最大值时会发生什么?

o MySQL服务器的默认端口:

o 如何在数据库中存储图像?

o 串行 vs 非串行调度

o 可串行化和串行化

o 冲突串行化

o 视图可串行化

o 可恢复调度

o 级联调度

o 无级联调度

o 严格调度


数据和信息的区别?

数据是原始的、未处理的、未组织的事实,看似随机且尚未携带任何意义或含义。

信息是指已被人类或机器组织、解释和上下文化的数据,使其具有相关性和目的性。


什么是元数据和数据字典?

数据库管理系统(DBMS)中的数据字典服务于提供元数据综合存储库的重要目的,定义数据库内的数据结构、属性、关系和约束。这增强了数据完整性,促进高效的数据管理,并有助于数据库模式设计。

例如,在医疗保健DBMS中,数据字典将详细说明患者记录,指定诸如"患者ID"、"姓名"、"出生日期"等字段以及相关约束,简化数据组织和检索。


什么是数据库和DBMS?

数据库:逻辑相关数据的集合。

DBMS(数据库管理系统)是一组应用程序或程序,使用户能够创建和维护数据库。DBMS提供了执行各种操作(如插入、删除、更新等)的工具或接口。


ANSI数据库的3个层次是什么?

内部层次(物理层次)

o 描述数据如何存储在存储设备上

o 处理数据的物理存储

o 磁盘上记录的结构 - 文件、页面、块、索引和记录的排序

o 内部视图由内部模式描述

概念层次(逻辑层次)

o 描述存储什么数据以及这些数据之间的关系

o 隐藏物理存储的低级复杂性

o 例如,STUDENT数据库可能包含STUDENT和COURSE表,对用户可见但不显示存储细节

o 数据库管理员在此层次工作以确定在数据库中保留什么数据

外部层次(视图层次)

o 它只描述最终用户关心的整个数据库的一部分,或每个用户如何查看数据

o 不同用户需要数据库的不同视图,因此在视图层次抽象中可以有多个视图。由最终用户和应用程序程序员使用

o 最终用户只需要访问数据库的一部分而不是整个数据库


定义数据抽象?

o 数据抽象是从最终用户隐藏不需要和不相关细节的过程。它有助于以最终用户可以访问必要数据的方式存储信息,用户将无法看到存储了什么数据或如何在数据库中存储。


定义映射和数据独立性?

映射:在三个层次之间转换请求和结果的过程称为映射。

数据独立性:在一个层次修改模式定义而不影响下一个更高层次的模式定义的能力。

物理数据独立性

o 物理数据独立性是修改物理模式而不需要逻辑(概念)模式和应用程序程序任何更改的能力

o 内部层次的修改偶尔是必要的,以提高性能

o 内部层次可能的修改包括文件结构、压缩技术、哈希算法、存储设备等的变化

逻辑数据独立性

o 逻辑数据独立性是修改概念模式而不需要应用程序程序任何更改的能力

o 每当数据库的逻辑结构发生变化时,逻辑层次的修改是必要的

o 应用程序程序严重依赖于它们访问的数据的逻辑结构。因此逻辑结构的任何变化也需要程序改变


数据库用户类型?

o 天真用户(最终用户):对数据库系统零知识的非复杂用户
最终用户通过复杂软件或工具与数据库交互
例如:银行职员

o 应用程序程序员:使用Java、.Net、PHP等工具编写软件的程序员
例如:软件开发人员

o 复杂用户:不使用应用程序程序与数据库系统交互
使用SQL等查询工具
例如:分析师

o 专业用户(DBA):用户编写专门的数据库应用程序程序。使用管理工具
例如:数据库管理员


定义ER图?

ER图是数据库的图形表示。实体关系模型是用于识别要在数据库中表示的实体以及表示这些实体如何相关的模型。


泛化 vs 特化

o 泛化:取两个或多个低级实体集的并集以创建高级实体集的过程(自下而上的方法)

o 特化:从高级实体集创建低级实体集的过程(自上而下的方法)


键的类型?

数据库中有七种主要类型的键:

1. 候选键:候选键表示可以唯一标识表的一组属性

2. 超键:超键定义可以唯一标识元组的一组属性

3. 主键:主键定义用于唯一标识每个元组的一组属性

4. 唯一键:唯一键与主键非常相似,除了主键不允许列中的NULL值,但唯一键允许。所以本质上唯一键是带有NULL值的主键

5. 备用键:所有未被选为主键的候选键都被视为备用键

6. 外键:外键定义只能取存在于一个表中的值的属性,该表与另一个表中存在的属性相同

7. 复合键:复合键指的是可以唯一标识表中每个元组的两个或多个列的组合


连接的类型?

连接是SQL语句之一,用于基于它们之间的公共字段/列连接来自2个或更多表的数据或行。

有4种类型的SQL连接:

o 内连接:这种类型的连接用于获取两个表中都常见的表之间的数据

o 左连接:这返回左表的所有行,以及右表中的匹配行。如果右表中没有匹配项,则结果为NULL

o 右连接:这返回右表的所有行,以及左表中的匹配行。如果左表中没有匹配项,则结果为NULL

o 全连接:这返回两个表中的所有行。如果表中没有匹配项,则结果为NULL


索引的类型?

索引是数据库中的数据结构,用于提高数据检索操作的速度。主要有两种类型:

o 聚集索引:聚集索引确定表中数据的物理顺序。每个表只能有一个聚集索引,因为数据行本身只能按一种顺序存储

o 非聚集索引:非聚集索引存储在一个地方,而索引位于另一个地方。这允许每个表有多个非聚集索引


什么是活锁?

活锁情况可以定义为当两个或多个进程在响应其他进程的变化时不断重复相同的交互而不做任何有用工作时。这些进程不在等待状态,它们并发运行。这与死锁不同,因为在死锁中所有进程都在等待状态。


SQL的目的是什么?

SQL代表结构化查询语言,其主要目的是以插入、删除和更新/修改数据库中数据的形式与关系数据库交互。


SQL中的子句是什么?

这与SQL查询一起使用,根据SQL中设置的条件按需获取特定数据。这在从完整记录集中选择选择性记录时非常有用。


RAID技术的主要目标是什么?

RAID代表廉价(或有时"独立")磁盘冗余阵列。

RAID是将多个硬盘驱动器组合成一个逻辑单元的方法(两个或多个磁盘组合在一起,对主机系统显示为单个设备)。RAID技术是为了解决传统磁盘存储的容错和性能限制而开发的。


状态 vs 模式

在特定时刻存储在数据库中的信息集合称为数据库状态,而数据库的整体设计称为数据库模式。


描述事务日志在DBMS中的作用

事务日志(也称为重做日志或审计跟踪)是记录事务期间对数据库所做的所有更改的文件。它有几个重要目的:

o 恢复:在系统故障的情况下,事务日志可以通过重放或撤销事务将数据库恢复到一致状态

o 并发控制:事务日志可以支持并发控制机制,如锁定和回滚,确保事务隔离并维护数据完整性

o 审计跟踪:事务日志记录对数据库所做的所有更改,实现审计和符合监管要求


定义SQL注入

SQL注入,也称为SQLI,是一种常见的攻击向量,使用恶意SQL代码进行后端数据库操作以访问不打算显示的信息。


DBMS中的数据挖掘是什么?

数据挖掘是通过大型数据集进行排序以识别模式和关系的过程,这些模式和关系可以通过数据分析帮助解决业务问题。


Char vs Varchar

Char
CHAR数据类型用于存储固定长度的字符串。在CHAR中,如果字符串的长度小于设定或固定长度,则用额外的内存空间填充。

Varchar
在VARCHAR中,如果字符串的长度小于设定或固定长度,则按原样存储,不填充额外的内存空间。VARCHAR数据类型用于存储可变长度的字符串。


当达到SQL中自增的最大值时会发生什么?

当列达到数据类型的上限时,生成序列号的下一次尝试将失败。


MySQL服务器的默认端口:

3306


如何在数据库中存储图像?

有几种方法可以在数据库中存储图像,包括作为二进制数据、文件路径或使用云存储。最佳方法取决于项目的具体要求和约束。其他方法可以是使用BLOB(二进制大对象)数据类型在SQL数据库中存储图像。


串行 vs 非串行调度

串行:事务非交错执行的调度,即串行调度是指在一个运行的事务结束之前没有事务开始的调度。

非串行:事务交错且多个事务并发执行的调度类型称为非串行。


可串行化和串行化

可串行化在DBMS中确保多个事务可以访问和修改相同的数据而不会相互干扰操作。它有助于防止当多个事务尝试并发访问和修改相同数据时可能发生的数据不一致和异常。

串行化是指以串行(一个接一个)顺序执行操作的方式管理事务的过程,确保数据的一致性和隔离性。当多个事务并发执行时,这个过程对于维护数据库完整性至关重要。


冲突串行化

如果非串行调度可以通过交换非冲突操作转换为串行调度,则该调度称为冲突可串行化。


视图可串行化

如果调度与串行调度视图相等(无重叠事务),则该调度称为视图可串行化。冲突调度是视图可串行化的,但如果可串行化包含盲写,则视图可串行化不冲突可串行化。


可恢复调度

即使调度是冲突或视图可串行化的,它仍然不能保证考虑到系统故障情况下的事务一致性。事务只有在读取其更改的所有事务提交后才提交的调度称为可恢复调度。换句话说,如果某个事务Tj正在读取由其他事务Ti更新或写入的值,则Tj的提交必须发生在Ti的提交之后。


级联调度

当一个事务出现故障并且这导致回滚或中止其他依赖事务时,这种调度被称为级联回滚或级联中止。


无级联调度

事务只在所有要读取其更改的事务提交后才读取值的调度称为无级联调度。


严格调度

Tj只能在Ti提交/中止后才能读取或写入Ti更新或写入的值。

最近发表
标签列表