专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 职业指南 最新的经典mysql面试题及答案

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

更新时间:2023-01-28 15:51:37 来源:动力节点 浏览761次

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

mysql面试题及答案

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面试题相关内容,可以关注动力节点Java官网。

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

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