最新的经典mysql面试题及答案

news/2024/4/20 1:36:59/文章来源:https://blog.csdn.net/sincegc/article/details/130365422

互联网产品必然是需要有架构的,架构包含接入层、储蓄层、逻辑处理等等,其中存储层承载着数据落地和持久化的任务,同时给逻辑处理层提供数据查询功能支持。而一提到储蓄层必然就要说数据库了,对于数据库的掌握也是软件工程师面试时必考的知识点。

1.简单描述mysql中, 索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响(从读写两方面)

  • 索引是一种特殊的文件,它们包含对数据表里所有记录的引用指针
  • 索引的任务就是加快对数据的访问速度
  • 普通索引允许被索引的列的数据包含重复值,如果索引的列不允许有重复值就可以使用唯一索引
  • 主键索引是特殊的唯一索引,一张表中只能有一个主键索引,由primary key关键字定义
  • 索引可以包含多个数据列,如index(columnA, columnB),就是联合索引
  • 因为索引的存在,大大提高了数据库的查询效率,但是会降低增加、删除、修改表的速度,因为执行这些代码时还要操作索引文件

2. sql注入漏洞产生的原因,如何防止?

程序开发过程中没有规范书写sql语句,没有对特殊字符进行过滤都会导致sql注入的风险

使用orm可以有效的防止sql注入,sql语句书写尽量不要省略双引号和单引号,过滤掉关键词select update delete insert *等

3. 对于关系型数据库而言,索引是相当重要的概念,请回答索引相关的几个问题

索引的目的是什么?

  • 快速访问数据表中的特定信息,提高检索速度
  • 创建唯一索引,保证数据库表中每一行数据的唯一性
  • 加速表与表之间的链接

索引对数据库系统的负面影响是什么?

创建索引和维护索引也需要耗费时间,这个时间随着数据量的增加而增大,索引需要占用物理空间,

不光是表需要占据数据空间,每个索引也需要占用物理空间,对表进行增、删、改的时候索引也需要动态维护,

这就降低了数据的维护速

为数据表建立索引的原则有哪些?

在最频繁使用的,用以缩小查询范围的字段上建立索引

在频繁使用的需要排序的字段上建立索引

什么情况下不宜建立索引?

对于查询中很少设计的列以及重复值很多的列,不宜设计索引

对于一些特护的类型不宜建立索引,比如text类型

为什么重复值很多的列不宜设计索引?

因为如果重复值特别多,比如性别列只有男和女,当我们为性别列建立了索引的话,

辅助索引每次查询男或女都会查询出一半左右的主键值,然后再拿着这一半的主键值去走聚簇索引(主索引),反而比全表扫描性能还低,

这种情况下就不能建立索引

4. 解释mysql外连接、内连接、与自连接的区别?

交叉连接:交叉连接又叫笛卡尔积表,它是指不使用任何条件,将一个表中的所有记录与另外一张表中的所有记录一一匹配

内连接:根据条件,只筛选两个表中都有的记录

外连接:分为左外连接、右外连接、全外连接

左外连接:左表为主表,左表中的记录全部显示,右表中所有匹配的记录显示,不匹配的记录显示为NULL

右外连接:与左相反

全外连接:mysql目前还不支持全外连接,但是可以使用union合并左外+右外=全外

5. mysql中的事务回滚机制概述

事务是用户定义的一个数据库操作序列,这些操作要么都做完,要么都不做,

事务回滚是将一个事务中对数据库的更新操作撤销,事务回滚需要通过InnoDB中的回滚日志undo log来实现

6. sql语言包括哪几部分? 每部分都有哪些操作关键字?

数据定义语言DDL:create/alter/drop table, create/drop index

数据操作语言DML: select insert update delete

数据控制语言DCL: grant revoke

数据查询语言DQL: select

7. 完整性约束包括哪些?

数据的完整性是指数据的精确性和可靠性

与表有关的约束,包括列约束:not null非空约束,primary key主键约束,foreign key外键约束, unique唯一约束等

8. 什么是锁?

加锁是实现数据库并发控制的非常重要的技术,分为读锁和写锁,当一个事务获取了读锁,

其它事务就只能获取读锁,不能获取写锁,

当一个事务优先获取了写锁,其它事务既不能获取读锁也不能获取写锁

但是mysql中又分为当前读和快照度,上面说的是当前读的情形,快照读的话不影响其它事务获取写锁

基本锁类型包括行级锁和表级所,InnoDB是行级锁,MyISAM是表级锁

9. 什么叫视图?游标是什么?

视图是一种虚拟的表,具有和物理表相同的功能,可以对视图进行增删改查操作,视图由一个或多个表的行列组成的集合

对视图表的修改不影响基本表,它使我们查询数据更容易

游标:对于查询出来的结果集作为一个单元来有效的处理,游标可以定在该单元中的特定行,

一般不使用游标,但是需要逐条处理的时候就需要使用游标

10. 如何通俗的理解三个范式?

第一范式是对属性的原子性约束,要求属性具有原子性,不可再分解;

第二范式是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性

第三范式是对字段冗余性约束,即任何字段不能由其它字段派生出来,它要求字段没有冗余

范式优点:减少数据冗余,使得更新快,体积小

缺点:查询需要多表关联查询,效率低

以上就是“最新的经典mysql面试题及答案”,你能回答上来吗?如果想要了解更多的相关内容,请点击:Java面试题

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103516.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eBPF技术介绍

前言 eBPF起源于linux内核,它可以以砂箱程序运行在操作系统内核的特权上下文,高效,安全,易于扩展而不需要修改内核源码或者加载内核模块。 操作系统一直是实现观测,安全和网络功能的最理想的地方,因为内核的…

优思学院|精益管理的理念是什么?

作为一个企业,我们都希望拥有高效率和优异的竞争力。但是,如何才能在竞争激烈的市场中脱颖而出?这时,精益管理理念的出现可以帮助我们。 精益管理的基本概念是什么? 精益管理的核心理念是通过消除浪费来实现生产效率…

Java线程间通信方式(3)

前文了解了线程通信方式中的CountDownLatch, Condition,ReentrantLock以及CyclicBarrier,接下来我们继续了解其他的线程间通信方式。 Phaser Phaser是JDK1.7中引入的一种功能上和CycliBarrier和CountDownLatch相似的同步工具,相…

辛弃疾最经典的10首词

他,文能挥笔填词,武能上马杀敌; 他,被称为“词中之龙”, 他,一生赤子,追求收复山河; 他,是与苏轼齐名的豪放派词人; 他是辛弃疾。 辛弃疾一生怀着赤子之…

IO多路复用——select函数

1.select函数原型和fd_set结构体说明 1.1 select函数原型 ​ 使用 select 这种 IO 多路转接方式需要调用一个同名函数 select,这个函数是跨平台的,Linux、Mac、Windows 都是支持的。程序员通过调用这个函数可以委托内核帮助我们检测若干个文件描述符的…

【MCS-51】51单片机结构原理

至今为止,MCS-51系列单片机有许多种型号的产品:其中又分为普通型51(8031、8051、89S51)和增强型52(8032、8052、89S52等)。它们最大的区别在于存储器配置各有差异。下面我举例子的都是8051这一系列的单片机…

STM32-HAL-定时器(无源蜂鸣器的驱动)

文章目录 一、蜂鸣器的介绍二、常用的无源蜂鸣器的电路三、测试准备四、初始化片上外设4.1 初始化定时器4的通道2为PWM输出模式4.2 编写驱动代码4.3 Logic分析仪查看波形4.4 代码分析 一、蜂鸣器的介绍 有源蜂鸣器: 有源蜂鸣器内部有一个发声电路,也就是“源”&…

数据湖Iceberg-Hive集成Iceberg(3)

文章目录 Hive集成Iceberg环境准备Hive与Iceberg的版本对应关系如下上传jar包,拷贝到Hive的auxlib目录中修改hive-site.xml,添加配置项启动 HMS 服务启动 Hadoop 创建和管理 Catalog默认使用 HiveCatalog指定 Catalog 类型使用 HiveCatalog使用 HadoopCa…

C++学习记录——이십 map和set

文章目录 1、setmultiset 2、map3、map::operator[] 1、set vector/list/deque等是序列式容器,map,set是关联式容器。序列式容器的特点就是数据线性存放,而关联式容器的数据并不是线性,数据之间有很强的关系。 它们的底层是平衡…

在当前互联网行情下,Android想转音视频开发,会有前景吗?

前言 近年来,由于三年疫情的影响,很多公司都开始陆陆续续的在裁员,Android开发工作岗位也是,可能有些从事Android开发的朋友还没有意识到,Android开发岗位正在变少,求职者,僧多粥少&#xff0c…

视频大文件传输的演变:从“卷轴男孩”到自动化

200年前,从纽约市到英国伦敦的单程旅行需要乘坐一艘跨大西洋轮船将近三周——如果你能负担得起的话,那就是。那些不能在满是汗水、狭窄的帆船上安顿大约一个半月的人。 今天,视频专业人士能够在几小时甚至几分钟内跨越相同的物理距离传输大量…

《用于估计血压变化的光电体积描记图和心电图的特征》阅读笔记

目录 一、摘要 二、十大问题 Q1论文试图解决什么问题? Q2这是否是一个新的问题? Q3这篇文章要验证一个什么科学假设? Q4有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员? Q5论文中提…

微信小程序第五节——登录那些事儿(超详细的前后端完整流程)

📌 微信小程序第一节 ——自定义顶部、底部导航栏以及获取胶囊体位置信息。 📌 微信小程序第二节 —— 自定义组件 📌 微信小程序第三节 —— 页面跳转的那些事儿 📌 微信小程序第四节—— 网络请求那些事儿 😜作 …

MFC之CRect详解

2023年4月25日,周二晚上。 今天查了不少关于CRect类及其相关内容的资料,学到了不少东西,所以我决定写一篇详细的关于CRect类及其相关内容的文章,以记录今天所学。 CRect类 在 MFC 中,CRect 类表示一个矩形区域。它是…

linux 命令之 tar -czvf和 tar -xzvf

文章目录 一、概述:二、基础知识 一、概述: tar 用于linux 系统中压缩和解压 二、基础知识 tar常用命令参数说明 tar命令的czvf/xzvf参数分别代表的意义如下: -c 或–create 建立新的备份文件。 -x或–extract或–get 从备份文件中还原文件…

SparkStreaming学习之——无状态与有状态转化、遍历kafka的topic消息、WindowOperations

目录 一、状态转化 二、kafka topic A→SparkStreaming→kafka topic B (一)rdd.foreach与rdd.foreachPartition (二)案例实操1 1.需求: 2.代码实现: 3.运行结果 (三)案例实操2 1.需求: 2.代码实现: 3.运行结果 三、W…

Eclipse代码提示突然失灵的解决方案

不知道改动了啥,突然间Eclipse的代码提示就失效了,发现缺少后极不方便。 使用快捷键:Alt/ 提示 No Default Proposals 为什么使用快捷键:Alt/ 会提示“No Default Proposals。”呢? 网上提示可能是热键冲突 但是一套…

数据可视化大屏电商数据展示平台开发实录(Echarts柱图曲线图、mysql筛选统计语句、时间计算、大数据量统计)

数据可视化大屏电商数据展示平台 一、前言二、项目介绍三、项目展示四、项目经验分享4.1 翻牌器4.1.1 翻牌器-今日实时交易4.1.2.翻牌器后端统计SUM函数的使用 4.2 不同时间指标的数据MySql内部的时间计算 4.3 实时交易播报MySql联表查询和内部遍历循环 4.4 每日交易量4.4.1.近…

5.5 高斯型求积公式简历

学习目标: 我会按照以下步骤学习高斯求积公式简介: 理解积分的概念:学习什么是积分以及积分的几何和物理意义,如面积、质量、电荷等概念。 掌握基本的积分技巧:掌握基本的积分公式和技巧,如换元法、分部积…

流辰信息微服务平台:数字化转型的优良工具!

在互联网迅猛发展的今天,越来越多的企业倾向于新兴领域带来的便利性和灵活性了,其中,微服务平台就是其中之一了。流辰信息微服务平台是专注于研发系统开发、数据治理、数据分析的平台,致力于为各中大小型企业提供优质的微服务解决…