更新时间:2022-12-30 16:59:33 来源:极悦 浏览1096次
问题 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官网。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习