数据库面试常见问题总结
写在前面
本文记录了一些数据库面试常见问题,本意用于考研复试,以下面试题为网上整理的问题以及自己加入的一些问题,答案仅供参考!
Q:事务四大特性(ACID)
A:
- 原子性:事务是一个不可再分割的工作单位,要么执行,要么不执行
- 一致性:数据库的完整性约束没有被破坏,在事务执行前后都保持一致性状态
- 隔离性:多个事务并发时,每个事务应该是隔离的,一个事务不应影响其他事务的运行效果
- 持久性:一旦事务提交,对数据的改变就是永久的
Q:什么是存储过程?
A:存储过程是一些预编译的 SQL 语句
Q:什么是事务?
A:事务是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位
Q:DBMS 是什么
A:数据库管理系统(DBMS)是数据库系统的核心,是管理数据库的软件
Q:数据库的三级模式
A:
- 模式:一个,逻辑结构
- 外模式:多个,用户模式
- 内模式:一个,物理结构
Q:什么是主键
A:唯一标识表中每行的这个列
Q:视图和表的区别是什么?
A:
- 视图:从一个或几个基本表导出的表,是虚表,我们对视图只能进行查询但不能进行修改
- 表:数据库中的实体,可以对其进行增删改查操作
Q:索引是什么?它的优点缺点?
A:索引是对数据库表中一或多个列的值进行排序的结构,可以加快检索表中数据
- 优点:大大加快数据的检索速度、唯一索引可以确保每一行数据的唯一性
- 缺点:索引需要占物理空间、创建索引和维护索引需要时间
Q:索引类型
A:
- 普通索引:最基本的索引,它没有任何限制
- 唯一索引:索引列的值必须唯一
- 主键索引:特殊的唯一性索引
- 全文索引:对于大规模数据集更快
Q:数据库三范式
A:
- 第一范式 (1NF):属性不可分,即数据库表的每一列都是不可分割的基本数据项
- 第二范式 (2NF):要求所有非主键属性完全依赖主键
- 第三范式 (3NF):非主键属性无传递依赖
Q:数据库中几种删除都有什么,有什么区别?
A:
- delete:删除部分数据行
- truncate:保留表而删除所有数据
- drop:删除表
Q:E-R 图?
A:实体关系图 (Entity-Relationship,E-R),有三个组成部分:实体、属性、联系。用来进行关系型数据库系统的概念设计
- 实体:矩形
- 属性:椭圆
- 联系:菱形
Q:E-R 模型转换为关系模式的原则?
A:一个实体型转换为一个关系模式
- 一对一:遇到一对一关系的话,在两个实体任选一个添加另一个实体的主键即可
- 一对多:遇到一对多关系的话,在多端添加另一端的主键
- 多对多:遇到多对多关系的话,需要将联系转换为实体,然后在该实体上加上另外两个实体的主键,作为联系实体的主键,然后再加上该联系自身带的属性即可
Q:数据库完整性
A:
- 实体完整性:保证表的每一个特定实体的记录都是唯一的
- 参照完整性:保证相关联表之间数据的一致性
- 用户定义完整性:针对某一具体应用必须满足的语义要求
Q:什么是触发器?
A:触发器是用户定义在关系表上的一类由事件驱动的特殊过程
Q: 数据库有哪些锁,各自的作用?
A:
- 排他锁(X 锁,写锁):当数据对象被加上排它锁(X 锁)时,其他的事务不能对它读取和修改
- 共享锁(S 锁,读锁):当数据对象被加上共享锁(S 锁)时,可以被其他事务读取,但不能修改
Q:死锁?
A:指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去
Q:预防死锁?
A:一次封锁法、顺序封锁法
Q:二段锁协议
A:
- 在对任何数据进行读、写操作之前,事务首先要申请并获得对该数据的封锁
- 在释放一个封锁之后,事务不再申请和获得任何其他封锁
Q:冷备份和热备份
A:
- 冷备份:在数据库停机的情况下,备份数据库
- 热备份:在数据库运行的情况下,备份数据库
Q:数据库建立流程
A:
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 实施
- 运行维护