面试宝典----数据库(总结来自知乎路人甲)

2023-11-05

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

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

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

存储过程是一个预编译的代码块,执行效率比较高

一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率

可以一定程度上确保数据安全。

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

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

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

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

索引加快数据库的检索速度

索引降低了插入、删除、修改等维护任务的速度

唯一索引可以确保每一行数据的唯一性

通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能

索引需要占物理和数据空间 

(三)什么是事务?

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

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

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

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

悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作

乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

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

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

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

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

基于非唯一性索引的检索

(六)简单说一说dropdeletetruncate的区别

SQL中的dropdeletetruncate都表示删除,但是三者有一些差别

deletetruncate只删除表的数据不删除表的结构

速度,一般来说: drop> truncate >delete 

delete语句是dml,这个操作会放到rollback segement,事务提交之后才生效;
如果有相应的trigger,执行的时候将被触发. truncate,dropddl, 操作立即生效,原数据不放到rollback segment,不能回滚操作不触发trigger. 

(七)dropdeletetruncate分别在什么场景之下使用?

不再需要一张表的时候,用drop

想删除部分数据行时候,用delete,并且带上where子句

保留表而删除所有数据的时候用truncate

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

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

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

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

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

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

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

只暴露部分字段给访问者,所以就建一个虚表,就是视图。

查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异

(十)说一说三个范式。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试宝典----数据库(总结来自知乎路人甲) 的相关文章

随机推荐

  • Python图片批量自动抠图去背景

    今天发现个好东西啊 叫片刻抠图 是一个在线对图片自动抠图去除背景的网站 只要上传图片 就可以自动把背景去掉把目标对象抠出来 不管是动物 汽车或各种产品 还是人物 都可以全自动做到令人惊艳的抠图效果 而且还说可以做到发丝级 AI 自动抠图 作
  • 牛客编程1-给定区间[-2^31, 2^31]内的3个整数A、B和C,请判断A+B是否大于C。

    给定区间 2 31 2 31 内的3个整数A B和C 请判断A B是否大于C include
  • 09. bs4解析基础与实例

    目录 前言 bs4的安装 bs4使用基础 bs4实例 获取某网站菜价 代码实现 完整代码 重要提醒 总结 前言 我们已经具备了基本的HTML知识 能够简单的识别HTML源代码中的各类元素 这一节我们将正式学习bs4的用法 并用一个实例来展示
  • EasyAR_无法打开“EasyAR“,因为无法验证开发者

    原文地址 https blog csdn net lxh worldpeace article details 107098524 今天用Android Studio编译一个项目 偶遇这个问题 说我的AS是从哪哪下载的 无法保证安全性之类的
  • 【C/C++】浮点数大小的比较问题分析及解决方案

    1 问题 在实际工程当中时常会遇到浮点数float的比较 但常规的比较思路是不可靠的 C C Java python JavaScript等主流语言都存在这个问题 存在巨大的工程隐患 例如 float a 0 9f float c 1 0f
  • vs code配置C/C++开发环境

    第一步 下载 Vs Code 点击链接下载Vs Code 下载版本 并安装 https code visualstudio com 点击 Download for Windwos 安装时 如图 请一定要勾选 添加到PATH 环境变量 其他选
  • css文字覆盖线性渐变,利用css使文字渐变

    mark c 本博客加入QQ群就是这个效果 代码来至 青找博客英文名 Qing Zhao mark c 效果图 HTML 一个人真正优秀的特质来自于内心想要变得更加优秀的那种强烈的渴望 和对生命的追求那种火热的激情 CSS masked p
  • 【docker】docker部署tomcat

    目录 1 1 搜索tomcat镜像 1 2 拉取tomcat镜像 1 3 创建容器 设置端口映射 目录映射 1 4 测试 1 1 搜索tomcat镜像 docker search tomcat 1 2 拉取tomcat镜像 docker p
  • Python开发是面向过程、函数还是对象?

    Python虽然是解释型语言 但从设计之初就已经是一门面向对象的语言 对于Python来说一切皆为对象 正因为如此 在Python中创建一个类和对象是很容易的 当然如果习惯面向过程或者函数的写法也是可以的 Python并不做硬性的限制 Py
  • 图像构成与信号处理之三——图像滤波

    一 什么是图像滤波 图像滤波是一种常见的图像处理技术 用于平滑图像 去除噪声和边缘检测等任务 其工作的原理是通过提前设定滤波器 将滤波器作用与原图像 得到拥有需要的滤波效果的图像 一般图像滤波分为平滑类 均值滤波 去噪类 中值滤波 突出边缘
  • 多机器人仓储巡逻路径规划问题的A*算法实现(附带MATLAB代码)

    多机器人仓储巡逻路径规划问题的A 算法实现 附带MATLAB代码 路径规划是多机器人系统中一个重要的问题 特别是在仓储巡逻等应用中 A A Star 算法是一种经典的启发式搜索算法 可以用于解决路径规划问题 本文将介绍如何使用A 算法实现多
  • R手册(Time Series)--forecast and prophet

    文章目录 forecast for Time Series and Linear Models 时间序列分析 模型 预测 ggplot2扩展 模型评估 prophet 构建模型 模型预测 可视化 交叉验证 时间序列分析 Time Serie
  • FPGA面试题

    面试题摘自尤老师FPGA 1 2 TPLH 脉冲由低电平变成高电平的延迟时间 TPHL 脉冲由高电平变成低电平的延迟时间 本题采用假设法 假设开始输入信号为高电平 经过两次非门是一个时钟周期 TPHL TPLH 0 2 ns 震荡周期意思为
  • 今日分享:这4款音频降噪去杂音的软件,太好用了

    你知道音频降噪去杂音怎么操作吗 在现代社会 音频处理已经成为了一项重要的技能 无论是语音录音 音乐创作 还是影视制作 我们都需要高质量的音频素材 但在实际操作中 我们常常会遇到环境噪声 背景杂音等问题 这些问题会导致我们的音频质量下降 影响
  • 使用Ajax加载数据的dataTables

    dataTables是一种很好用前端表格显示库 当加载大量数据时 可以用Ajax 获取数据来提高效率 增速网页加载速率 下面以一个例子作示范 首先 需要下载jquery以及dataTables库 这里使用的是版本是jQuery v1 11
  • 206. Reverse Linked List

    Definition for singly linked list struct ListNode int val ListNode next ListNode int x val x next NULL class Solution pu
  • Ansys workbench分析应用基础(6)

    圣维南原理和模型简化 如上图所示 我们对长度分别为100mm 150mm和200mm的板子添加完全均布载荷 二分之一均布载荷和线载荷 载荷的值相同 统计出不同模型不同情况所对应的应力最大值 如下图所示 从图中 我们可以看出对于板长为200m
  • 2023年5月份中国电子学会青少年软件编程(C语言)等级考试一级真题讲解

    1 输出第二个整数 题目描述 输入三个整数 把第二个输入的整数输出 输入 只有一行 共三个整数 整数之间由一个空格分隔 整数是32位有符号整数 输出 只有一行 一个整数 即输入的第二个整数 样例输入 123 456 789 样例输出 456
  • jsonp原理详解

    JSONP 全称 JSON with padding 是一种跨域请求的方法 它允许在不受限制地从一个域名获取数据并在另一个域名下使用该数据 JSONP 的原理是通过动态创建 script 标签来实现 在客户端向服务器发送请求时 服务器返回
  • 面试宝典----数据库(总结来自知乎路人甲)

    一 什么是存储过程 有哪些优缺点 存储过程是一些预编译的SQL语句 更加直白的理解 存储过程可以说是一个记录集 它是由一些T SQL语句组成的代码块 这些T SQL语句代码像一个方法一样实现一些功能 对单表或多表的增删改查 然后再给这个代码