常见面试题整理--数据库篇(每位开发者必备) 转载自:https://zhuanlan.zhihu.com/p/23713529 知乎专栏

Win10系统下Protel 99 SE元件库导入报错?3步搞定File is not recognized问题 本文详细介绍了在Win10系统下解决Protel 99 SE元件库导入报错'File is not recognized'的3步终极方案。通过手动修改配置文件、使用专用工具和优化系统兼容性设置,帮助用户快速解决这一经典PCB设计软件的兼容性问题,提升工作效率。 阅读详情
常见面试题整理--数据库篇(每位开发者必备)

继续前面有关于的Python面试的两篇内容:Python代码篇 、Python概念篇 今天说一说数据库。不管你是Java开发者还是Python开发者还是其他语言开发者,基本上面试的时候都会被问到数据库相关的知识点。所以掌握一些经常被问的数据库知识是十分重要的。

如果你对数据库不熟悉,想学习的话,学习专栏有一篇MySQL学习资料

那么常见的数据库面试题有哪些呢?(非DBA向)

(一)什么是存储过程?有哪些优缺点?

存储过程是一些预编译的SQL语句。

更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。

  • 存储过程是一个预编译的代码块,执行效率比较高
  • 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率
  • 可以一定程度上确保数据安全

如果你对存储过程不熟悉,建议阅读:存储过程详解-博客园

(二)索引是什么?有什么作用以及优缺点?

索引是对数据库表中一或多个列的值进行排序的结构,是帮助MySQL高效获取数据的数据结构

你也可以这样理解:索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引

  • 索引加快数据库的检索速度
  • 索引降低了插入、删除、修改等维护任务的速度
  • 唯一索引可以确保每一行数据的唯一性
  • 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
  • 索引需要占物理和数据空间 

如果你对索引还不太熟悉,建议阅读:漫谈数据库索引

(三)什么是事务?

事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

如果你对索引还不太熟悉,建议阅读:数据库事务 - Mr. David 专栏

(四)数据库的乐观锁和悲观锁是什么?

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。

乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。

  • 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
  • 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

如果你对两种锁还不太熟悉,建议阅读:深入理解乐观锁与悲观锁

(五) 使用索引查询一定能提高查询的性能吗?为什么

通常,通过索引查询数据比全表扫描要快.但是我们也必须注意到它的代价.

索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能,索引范围查询(INDEX RANGE SCAN)适用于两种情况:

  • 基于一个范围的检索,一般查询返回结果集小于表中记录数的30%
  • 基于非唯一性索引的检索

(六)简单说一说drop、delete与truncate的区别

SQL中的drop、delete、truncate都表示删除,但是三者有一些差别

  • delete和truncate只删除表的数据不删除表的结构
  • 速度,一般来说: drop> truncate >delete 
  • delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;
    如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 

如果你对这三者的用法还不太熟悉,建议阅读: drop、truncate和delete的区别

(七)drop、delete与truncate分别在什么场景之下使用?

  • 不再需要一张表的时候,用drop
  • 想删除部分数据行时候,用delete,并且带上where子句
  • 保留表而删除所有数据的时候用truncate

(八) 超键、候选键、主键、外键分别是什么?

超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

候选键:是最小超键,即没有冗余元素的超键。

主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

外键:在一个表中存在的另一个表的主键称此表的外键。

(九)什么是视图?以及视图的使用场景有哪些?

视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

  • 只暴露部分字段给访问者,所以就建一个虚表,就是视图。
  • 查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异

(十)说一说三个范式。

第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。

第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。

第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如 果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段 x → 非关键字段y

如果你对三个还不太了解,建议阅读: 解释一下关系数据库的第一第二第三范式?
手把手教你学simulink(28.2)--四旋翼无人机景示例:基于自抗扰控制(ADRC)的无人机姿态稳定系统 通过上述代码实现,您可以逐步创建和搭建一个基于自抗扰控制的无人机姿态稳定系统。该系统能够实时估计和补偿外部扰动及模型不确定性,确保无人机姿态稳定。自抗扰控制具有较强的鲁棒性和适应性,能够在存在不确定性和扰动的情况下提供快速且精确的控制性能。Simulink提供了强大的建模和仿真工具,使得控制系统工程师能够快速构建复杂的控制算法,并将其应用于实际工程中。无人机动力学建模:建立无人机的六自由度(6-DOF)动力学模型,包括位置、速度、姿态角和角速度。自抗扰控制器设计。 阅读详情

相关推荐

长上下文技术的底层逻辑:Attention、压缩、缓存与跨页推理

如果把模型的参数视为“固化智能”,动态智能(Dynamic Intelligence)——模型不必依赖训练时的记忆,而是可以随时调用外部信息。这一点正在改变大模型的范式:Prompt 不再是输入,而是“操作系统事件”文档不再是知识,而是“模型的临时记忆”模型不再是一段神经网络,而是一个“具备阅读循环的推理引擎”当我们把上下文从 128K 拉到百万级,我们做的不是扩容,而是让模型第一次拥有阅读、回溯、定位、跨页分析的能力。这是一种新的智能。

aifs2025的博客 997

Oracle面试题

将导致整个表记录的顺序的调整,会耗费相当大的资源。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需。数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的。型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执。,所以怎样建索引需要慎重考虑,视具体情况而定。存储过程是数据库中的一个重。,只有对执行过程的调。,例如,当需要重复引。

2301_77822280的博客 2914

vins-mono保存、重载地图、evo工具测试

下面咱们来对vins-mono的重定位vins-mono官方源码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono https://blog.csdn.net/learning_tortosie/article/details/83182258 运行这条: roslaunch benchmark_publisher publish.launc...

追 1万+

数据库面试题50道

常规技术面试题(数据库) 触发器的作用? 触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 什么是存储过程?用什么来调用? 存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

AA2207748005的博客 2812

【CANoe16安装教程】亲测安装成功

CANoe16安装教程

qq_45302638的博客 2万+

Spring Boot整合Apache Hop 2.3.0实战:从零搭建数据管道(附完整代码)

本文详细介绍了如何在Spring Boot项目中整合Apache Hop 2.3.0,从零开始构建可嵌入的数据管道。内容涵盖环境初始化、依赖配置、管道设计,并通过完整代码示例演示了如何通过REST API触发执行,实现数据同步与ETL流程的自动化管理,为微服务架构提供灵活的数据集成方案。

web99的专栏 632

面试题之存储过程

一、什么是存储过程 简单来说,存储过程就是一组预先编译好的sql语句集。 二、创建语法 create procedure 存储过程名(参数列表) begin //....存储过程体 end; 参数列表主要有三种形式: IN : 需要调用者传入 OUT : 作为返回值 INOUT : 调用者传入参数,对应的可以有返回值 注意点: 由于sql语句默认以";"分号作为分隔符,因此存储过...

weixiaohuai的博客 1万+

影刀RPA验证码识别避坑指南:官方指令、Python ddddocr与第三方图鉴怎么选?

本文深度对比了影刀RPA验证码识别的三种方案:官方AI指令、Python ddddocr开源库和第三方图鉴服务。从识别率、成本、维护性等维度分析各方案优劣,提供实战选型建议和优化技巧,帮助技术决策者在自动化流程中高效解决验证码识别难题。

weixin_30790841的博客 471

常见面试题整理--数据库篇

(一)什么是存储过程?有哪些优缺点? 存储过程是一些预编译的SQL语句。 更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。 存储过程是一个预编译的代码块,执行效率比较高 一个存储过程替代大量T_SQL语句 ...

weixin_30647065的博客 2161

深度学习&故障诊断初学者 - 学习路线

针对初学者,一头雾水,不知如何学习,本文给出了一个学习路线 Python学习 - 打好编程基础 https://www.bilibili.com/video/BV1vA411b7Rn?spm_id_from=333.337.search-card.all.click B站免费课程 学到P49 建议时长 2周 深度学习理论 - 浅浅理解神经网络 https://www.bilibili.com/video/BV1FT4y1E74V?p=41 建议时长 2周...............

m0_47410750的博客 6万+

【RT-DETR实战】RT-DETR实战手记(200):端侧实时目标检测,下一步往哪儿走?

昨天深夜调一个模型部署,在树莓派4B上跑RT-DETR-nano,帧率死活卡在8FPS上不去。量化也做了,算子也优化了,内存对齐也检查了,可就是离实时检测的底线还差一截。盯着终端里跳动的数字,突然意识到——我们可能正在接近当前技术路径的瓶颈。端侧实时目标检测的下一个突破口,恐怕不在现有框架的修修补补里。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 186

经典SQL面试题

SQL 什么是数据库事务? 数据库事务是指:一组SQL语句,要么全部执行成功,要么全部执行失败 四大特性:(ACID)一致性,原子性,隔 离性,持久性(一旦事务提交,对数据的修改是永久性的) 会出现哪些并发不一致性的问题 丢失数据:一个事务对数据进行修改,在事务提交之前,另一个事务对同一数据进行修改,覆盖之前的修改 脏读:一个事务读取另外一个事务的修改,但未提交(进行了回滚)的数据,造成两个事务得到的数据不一致 不可重复读:在同一事务中,某查询操作在一个时间读取某一行的数据和之后一个时间读取该行数据,发现数

凡间角落 1545

DO-178C详解:机载软件开发、验证与适航标准指南

DO-178C将软件划分为五个等级(A到E),这些等级是基于失效状态对航空器安全的影响而定。

qq_41854911的博客 2850

数据库(面试题)

目录 1、MySql 的存储引擎有哪些,区别是什么 2、触发器的作用? 3、什么是存储过程?用什么来调用? 4、存储过程的优缺点。 5、SQL 优化的具体操作 6、什么叫视图?游标是什么? 7、视图的优缺点 8、事务的四个特性 9、数据库乐观锁,悲观锁的区别,怎么实现 10、事务的并发问题 11、MySQL 的 MyISAM 与 InnoDB 两种存储引擎在,事务、锁级别,各自的适用场景? 12、非关系型数据库和关系型数据库区别,优势比较 13、数据库的五大...

weixin_44196561的博客 1389

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据库面试题集

一、数据库里面的group by 和 order by 有什么 区别 ? order by 用于排序,一般与升序和降序一起使用;group by 用于分类汇总,一般与聚合函数(比如说sum、max、min)等一起使用。group by 和order by一起使用的时候,group by 要在order by的前面。 二、数据库里面having和where在使用上面有上面区别? where是查询数据在返回结果之前对条件进行约束,也就是说它的作用在结果返回之前,而having是在查询数据库得到了返回结果

qq_54725031的博客 647

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql存储过程与函数面试题1-5道及详细解析

4. **功能**:存储过程的功能更强大,可以实现复杂的业务逻辑,包括数据修改操作(如INSERT、UPDATE、DELETE),而存储函数则主要用于计算和返回一个值,对数据库表的直接操作较少。4. **提高数据的安全性和完整性**:通过存储过程,可以限制对数据库的直接访问,只暴露必要的接口给应用程序,从而提高数据的安全性。2. **提高应用程序的性能**:存储过程在数据库服务器上执行,减少了应用程序和数据库服务器之间的网络流量,同时存储过程经过编译和优化,执行效率更高。

weixin_43658371的博客 1561

【面试题】MySQL(第三篇)

存储过程是一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程可以提高数据库操作的效率和安全性,同时减少网络通信量。存储过程是数据库系统中一个非常重要的功能,它能够提高数据库操作的效率和安全性,减少网络通信量,并且能够封装复杂的数据处理逻辑。通过合理使用存储过程,可以优化数据库的性能,提升应用程序的响应速度。定义:触发器是一种特殊类型的程序或事件,当特定的条件满足时,会自动触发执行的操作。

abclui的专栏 1101

关于数据库的最常见的十道面试题

一共十道关于数据库的常见面试题,都是比较容易疏忽并且面试的时候,经常会考到的面试题,文章中有详细的解释和底层原理来帮助你更好的来理解面试题!!!

loss_rose777的博客 5万+

MySQL常见面试题及解答

MySQL常见面试题及解答

Mr_XiMu的博客 3597

数据库精选 60 道高频面试题(含答案),值得收藏

基础相关 1、关系型和非关系型数据库的区别? 关系型数据库的优点 容易理解,因为它采用了关系模型来组织数据。 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询(带 where 子句的查询) 非关系型数据库(NOSQL)的优点 无需经过 SQL 层的解析,读写效率高。 基于键值对,读写性能很高,易于扩展 可以支持多种类型数据的存储,如图片,文档等等。 扩展(可分为内存性数据库以及文档型数据库,比如 Redis,Mong

qq_46494427的博客 2万+

数据库常见面试题(开发者必看)

第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。(3)它与每个表绑定在一起,表亡,该表的rowid亡,二张表rownum可以相同,但rowid必须是唯一的。其他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们只需要依赖于主键,也就成了唯一的。唯一索引可以确保每一行数据的唯一性,通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。

qq_22201881的博客 998

常见的数据库面试题含答案

1、什么是数据库? 数据库是一个组织和存储数据的集合,它采用特定的数据结构和管理模式,以提供对数据的高效访问和管理。 2、请解释 SQL 是什么?

人生不怕起点低,就怕没追求 1万+

存储过程oracle面试,oracle-plsq存储过程l面试题

oracle-plsq存储过程l面试题 OraclePL/SQL 面试题 一、 求 1-100 之间的素数 declare fag boolean:=true; begin for i in 1100 loop for j in 2i-1 loop if mod(i,j)=0 then fag:=false; end if; end loop; if fag then dbms_output.pu...

weixin_39747341的博客 2000

数据库基础

1. SQL语言包括哪些类型?数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index数据操纵:Select ,insert,update,delete数据控制:grant,revoke2. 内联接,外联接区别?内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。在外连接中,某些不满条件的列也会显...

qq_20313115的博客 845

数据库开发常见面试题

1、Delete Truncate Drop 区别 delete,drop,truncate 都有删除表的作用,区别在于: 1)delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除 2)delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚, 3)执行的速度上,drop>truncate>delete truncate:释放表空间,对外显示 truncate无法通过bi

athga的博客 1万+

软件设计师----数据库系统考点总结

数据库系统交流

秩沅 902

数据库面试题(开发者必看)

数据库常见面试题(开发者篇) 什么是存储过程?有哪些优缺点? 什么是存储过程?有哪些优缺点? 存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL、T-SQL)。 存储过程的优点: 能够将代码封装起来 保存在数据库之中 让编程语言进行调用 存储过程是一个预编译的代码块,执行效率比较高 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率 存储过程的缺点:...

weixin_34410662的博客 8534
上一篇: JSP中有哪些重定向方法,它们的区别?
下一篇: 34个数据库常见面试题讲解
@清风明月情@
博客等级 码龄10年 52粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值