专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 数据库工程师常见的一些参考性面试题

数据库工程师常见的一些参考性面试题

更新时间:2022-12-30 16:59:33 来源:星辉 浏览938次

问题 1:为什么 group by 和 order by 会使查询变慢?

答:groupby 和order by 操作通常需要创建一个临时表来处理查询的结果,所以如果查询结果很多的话会严重影响性能。

问题 2:delete、truncate 和 drop 的区别?

答:Delete 命令用来删除表的全部或者一部分数据行,执行 delete 之后,用户需要提交(commmit)或者回滚(rollback)ransaction 来执行删除或者撤销删除,delete 命会触发这个表上所有的 delete 触发器Truncate 删除表中的所有数据,这个操作不能回滚,也不会触发这个表上的触发器,tuncate比 delete更快,占用的空间更小。

Drop 命令从数据库中删除表,所有的数据行,索引和权限也会被删除,所有的 DML触发器也不会被触发,这个命令也不能回滚。

问题3:简述数据库的设计过程。

答:数据库设计分为以下五个阶段: 需求分析:主要是准确收集用户信息需求和处理需求,并对收集的结果进行整理和分析,形成需求说

概念结构设计:对用户需求进行综合、归纳、抽象,形成一个与与具体的 DBMS 无关概念模型(一般为ER模型)。

逻辑结构设计:将概念结构设计的概念模型转化为某个特定的 DBMS所支持的数据模型,建立数据库逻辑模式,并对其进行优化,同时为各种用户和应用设计外模式。物理结构设计:为设计好的逻辑模型选择物理结构,包括存储结构和存取方法等,建立数据库物理模

实施和维护:实施就是使用DLL 语言建立数据库模式,将实际数据载入数据库,建立真正的数据库维护阶段是对运行中的数据库进行评价、调整和修改。问题4:插入记录时可以不指定字段名称吗?

答:不管使用哪种INSERT 语法,都必须给出 VALUES 的正确数目。如果不提供字段名,则必须给每个字段提供一个值,否则将产生一条错误消息。如果要在INSERT 操作中省略某些字段,这些字段需要满足一定条件:该列定义为允许空值,或者表定义时给出默认值,如果不给出值,将使用默认值。

问题4:插入记录时可以不指定字段名称吗?

答:不管使用哪种INSERT 语法,都必须给出 VALUES 的正确数目。如果不提供字段名,则必须给每个字段提供一个值,否则将产生一条错误消息。如果要在INSERT 操作中省略某些字段,这些字段需要满足一定条件:该列定义为允许空值,或者表定义时给出默认值,如果不给出值,将使用默认值

问题5:本地索引与全局索引的差别与适用情况

答:对于本地索引,每一个表分区对应一个索引分区,当表的分区发生变化时,索引的维护由数据库自动进行。对于全局索引,可以选择是否分区,而且索引的分区可以不与表分区相对应。当对分区进行维护操作时,通常会导致全局索引的INVALDED,必须在执行完操作后 REBUILD

问题6:事务和锁有什么关系?

答:可以使用多种机制来确保数据的完整性,例如约束、触发器以及本章介绍的事务和锁等。事务和锁的关系非常紧密。事务包含一系列的操作,这些操作要么全部成功,要么全部失败,通过事务机制管理多个事务,保证事务的一致性,事务中使用锁保护指定的资源,防止其他用户修改另外一个还没有完成的事务中的数据。

问题 7:谈谈你对索引的理解?

答:索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的 I/0 次数,因此可以显著提高性能

以上就是“数据库工程师常见的一些参考性面试题”,你能回答上来吗?如果想要了解更多的Java面试题相关内容,可以关注星辉Java官网。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>