数据库常见面试题总结

数据库面试题精讲

数据库常见面试题总结

1. 数据库三范式是什么?

第一范式:表中每个字段都不能再分。
第二范式:满足第一范式并且表中的非主键字段都依赖于主键字段。
第三范式:满足第二范式并且表中的非主键字段必须不传递依赖于主键字段。

2. 什么是数据库事务?

事务具有四大特性:一致性、原子性、隔离性、持久性。
数据库事务是指:几个SQL语句,要么全部执行成功,要么全部执行失败。比如银行转账就是事务的典型场景。
数据库事务的三个常用命令:Begin Transaction、Commit Transaction、RollBack Transaction。

3. 什么是视图?

视图实际上是在数据库中通过Select查询语句从多张表中提取的多个表字段所组成的虚拟表。
l 视图并不占据物理空间,所以通过视图查询出的记录并非保存在视图中,而是保存在原表中。
l 通过视图可以对指定用户隐藏相应的表字段,起到保护数据的作用。
l 在满足一定条件时,可以通过视图对原表中的记录进行增删改操作。
l 创建视图时,只能使用单条select查询语句。

4. 什么是索引?

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
l 索引分为:聚集索引、非聚集索引、唯一索引等。
l 一张表可以有多个唯一索引和非聚集索引,但最多只能有一个聚集索引。
l 索引可以包含多列。
l 合理的创建索引能够提升查询语句的执行效率,但降低了新增、删除操作的速度,同时也会消耗一定的数据库物理空间。

5. 什么是存储过程?

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

6. 什么是触发器?

触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

7. 写出一条Sql语句:取出表A中第31到第40记录 (MS-SQLServer)

解1:select top 10 * from A where id not in (select top 30 id from A)
解2:select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
解3:select * from (select *, Row_Number() OVER (ORDER BY id asc) rowid FROM A) as A where rowid between 31 and 40

8. 写出一条Sql语句:取出表A中第31到第40记录 (Mysql)

select * from A limit 30, 10

9. 写出一条Sql语句:取出表A中第31到第40记录 (Oracle)

select *
from (select A.*,
   row_number() over (order by id asc) rank
    FROM A)   
where rank >=31 AND rank<=40;

10. 在关系型数据库中如何描述多对多的关系?

在关系型数据库中描述多对多的关系,需要建立第三张数据表。比如学生选课,需要在学生信息表和课程信息表的基础上,再建立选课信息表,该表中存放学生Id和课程Id。

11. 什么是数据库约束,常见的约束有哪几种?

数据库约束用于保证数据库表数据的完整性(正确性和一致性)。可以通过定义约束\索引\触发器来保证数据的完整性。
总体来讲,约束可以分为:
主键约束:primary key;
外键约束:foreign key;
唯一约束:unique;
检查约束:check;
空值约束:not null;
默认值约束:default;

12. 列举几种常用的聚合函数?

Sum:求和\ Avg:求平均数\ Max:求最大值\ Min:求最小值\ Count:求记录数

13. 什么是内联接、左外联接、右外联接?

l 内联接(Inner Join):匹配2张表中相关联的记录。
l 左外联接(Left Outer Join):除了匹配2张表中相关联的记录外,还会匹配左表中剩余的记录,右表中未匹配到的字段用NULL表示。
l 右外联接(Right Outer Join):除了匹配2张表中相关联的记录外,还会匹配右表中剩余的记录,左表中未匹配到的字段用NULL表示。
在判定左表和右表时,要根据表名出现在Outer Join的左右位置关系。

14. 如何在删除主表记录时,一并删除从表相关联的记录?

如果两张表存在主外键关系,那么在删除主键表的记录时,如果从表有相关联的记录,那么将导致删除失败。
在定义外键约束时,可以同时指定3种删除策略:一是将从表记录一并删除(级联删除);二是将从表记录外键字段设置为NULL;三是将从表记录外键字段设置为默认值。
级联删除示例:
alter table 从表名
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on delete cascade

15. 什么是游标?

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录进行处理的机制。
游标的使用步骤:
1. 定义游标:declare cursor 游标名称 for  select查询语句 [for {readonly|update}]
2. 打开游标:open cursor
3. 从游标中操作数据:fetch... ...   current of cursor
 
4. 关闭游标:close cursor
<think>好的,我现在需要处理用户关于Oracle数据库常见面试题及其答案的查询。首先,用户之前提到的引用内容是关于数据库和MyBatis的,可能与Oracle的问题相关,但需要更具体的信息。用户现在明确想要Oracle相关的面试题总结和最佳实践。 首先,我需要回忆常见的Oracle面试题,比如体系结构、存储结构、备份恢复、性能优化等方面的问题。然后,结合最佳实践,比如如何设计表结构、索引优化、SQL调优等。需要注意每个问题要简明扼要,答案准确,同时符合用户要求的格式,比如使用中文,数学公式用$...$,独立公式用$$...$$,并添加引用标记。 接下来,检查是否有需要应用数学表达式的地方。例如,在解释索引选择性时可能需要公式,比如选择性计算公式:$\text{选择性} = \frac{\text{不同值的数量}}{\text{总行数}}$。这种情况下要确保使用正确的LaTeX格式。 然后,生成相关问题部分需要考虑用户可能的后续问题,比如Oracle的锁机制、RAC集群、数据泵工具等。这些问题应涵盖不同难度层次,从基础到高级。 同时,需要引用用户提供的参考引用。例如,引用[^1]提到数据库核心面试问题,引用[^2]提到执行器类型和性能优化,可能可以关联到Oracle的执行计划或性能调优部分。但要注意用户提供的引用内容是否直接相关,如不相关则可能需要忽略或调整引用位置。 最后,确保回答结构清晰,分点列出问题和答案,使用代码块示例时语法正确,并且所有要求如引用标识、格式等均符合用户指令。检查是否有遗漏的部分,比如是否覆盖了用户需要的“常见面试题”和“最佳实践”,是否生成了相关问题,以及是否遵守了系统级指令中的格式要求。</think>### Oracle数据库常见面试题及最佳实践 #### 1. Oracle体系结构 **问题:Oracle数据库的物理存储结构包含哪些核心组件?** 答案: - **数据文件**(.dbf):存储实际数据 - **控制文件**(.ctl):记录数据库的物理结构信息 - **重做日志文件**(.log):记录所有数据变更操作 - **参数文件**(.ora):存储数据库初始化参数 --- #### 2. 事务控制 **问题:Oracle如何实现事务的ACID特性?** 答案: - **原子性**:通过UNDO表空间回滚未提交操作 - **隔离性**:使用多版本并发控制(MVCC)和锁机制 - **持久性**:依赖重做日志(Redo Log)的持久化写入 - **一致性**:由约束(如主键、外键)和触发器保证 --- #### 3. 性能优化 **问题:如何分析SQL语句的执行计划?** 答案: ```sql -- 使用EXPLAIN PLAN命令 EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10; -- 查看结果 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); ``` 最佳实践:优先关注全表扫描(FULL TABLE SCAN)和索引使用情况,索引选择性计算公式: $$ \text{选择性} = \frac{\text{不同值的数量}}{\text{总行数}} $$ 当选择性 > 0.1 时适合创建索引。 --- #### 4. 备份与恢复 **问题:RMAN备份有哪些类型?** 答案: - **全量备份**:备份所有数据块 - **增量备份**:仅备份上次备份后变化的数据块 - **归档日志备份**:保证数据库可恢复到任意时间点 关键命令示例: ```bash RMAN> BACKUP DATABASE PLUS ARCHIVELOG; ``` --- #### 5. 高可用方案 **问题:Data Guard的工作模式有哪些?** 答案: - **物理Standby**:字节级复制,用于灾难恢复 - **逻辑Standby**:SQL语句级复制,支持实时查询 - **Active Data Guard**:物理Standby开放只读访问 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值