MySQL数据库面试题

目录

    • 数据库基础知识
      • 为什么要使用数据库
      • 什么是SQL?
      • 什么是MySQL?
      • 数据库三大范式是什么
      • mysql有关权限的表都有哪几个
      • MySQL的binlog有有几种录入格式?分别有什么区别?
    • 数据类型
      • mysql有哪些数据类型
    • 引擎
      • MySQL存储引擎MyISAM与InnoDB区别
      • MyISAM索引与InnoDB索引的区别?
      • InnoDB引擎的4大特性
      • 存储引擎选择
    • 索引
      • 什么是索引?
      • 索引有哪些优缺点?
      • 索引使用场景(重点)
      • 索引有哪几种类型?
      • 索引的数据结构(b树,hash)
      • 索引的基本原理
      • 索引算法有哪些?
      • 索引设计的原则?
      • 创建索引的原则(重中之重)
      • 创建索引的三种方式,删除索引
      • 创建索引时需要注意什么?
      • 使用索引查询一定能提高查询的性能吗?为什么
      • 百万级别或以上的数据如何删除
      • 前缀索引
      • 什么是最左前缀原则?什么是最左匹配原则
      • B树和B+树的区别
      • 使用B树的好处
      • 使用B+树的好处
      • Hash索引和B+树所有有什么区别或者说优劣呢?
      • 数据库为什么使用B+树而不是B树
      • B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据,
      • 什么是聚簇索引?何时使用聚簇索引与非聚簇索引
      • 非聚簇索引一定会回表查询吗?
      • 联合索引是什么?为什么需要注意联合索引中的顺序?
    • 事务
      • 什么是数据库事务?
      • 事物的四大特性(ACID)介绍一下?
      • 什么是脏读?幻读?不可重复读?
      • 什么是事务的隔离级别?MySQL的默认隔离级别是什么?
      • 对MySQL的锁了解吗
      • 隔离级别与锁的关系
      • 按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法
      • 从锁的类别上分MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了
      • MySQL中InnoDB引擎的行锁是怎么实现的?
      • InnoDB存储引擎的锁的算法有三种
      • 什么是死锁?怎么解决?
      • 数据库的乐观锁和悲观锁是什么?怎么实现的?
    • 视图
      • 为什么要使用视图?什么是视图?
      • 视图有哪些特点?
      • 视图的使用场景有哪些?
      • 视图的优点
      • 视图的缺点
      • 什么是游标?
    • 存储过程与函数
      • 什么是存储过程?有哪些优缺点?
    • 触发器
      • 什么是触发器?触发器的使用场景有哪些?
      • MySQL中都有哪些触发器?
    • 常用SQL语句
      • SQL语句主要分为哪几类
      • 超键、候选键、主键、外键分别是什么?
      • SQL 约束有哪几种?
      • 六种关联查询
      • 什么是子查询
      • 子查询的三种情况
      • mysql中 in 和 exists 区别
      • varchar与char的区别
      • varchar(50)中50的涵义
      • int(20)中20的涵义
      • mysql为什么这么设计![在这里插入图片描述](https://img-blog.csdnimg.cn/2020080418313671.png)
      • mysql中int(10)和char(10)以及varchar(10)的区别
      • FLOAT和DOUBLE的区别是什么?
      • drop、delete与truncate的区别
      • UNION与UNION ALL的区别?
    • SQL优化
      • 如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?
      • SQL的生命周期?
      • 大表数据查询,怎么优化
      • 超大分页怎么处理?
      • mysql 分页
      • 慢查询日志
      • 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?
      • 为什么要尽量设定一个主键?
      • 主键使用自增ID还是UUID?
      • 字段为什么要求定义为not null?
      • 如果要存储用户的密码散列,应该使用什么字段进行存储?
      • 优化查询过程中的数据访问
      • 优化长难的查询语句
      • 优化特定类型的查询语句
      • 优化关联查询
      • 优化子查询
      • 优化LIMIT分页
      • 优化UNION查询
      • 优化WHERE子句
    • 数据库优化
      • 为什么要优化
      • 数据库结构优化
      • MySQL数据库cpu飙升到500%的话他怎么处理?
      • 大表怎么优化?某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?
      • 垂直分表
        • 适用场景
        • 缺点
      • 水平分表:
        • 适用场景
        • 水平切分的缺点
      • 数据库分片的两种常见方案
      • MySQL的复制原理以及流程
      • 读写分离有哪些解决方案?
      • 备份计划,mysqldump以及xtranbackup的实现原理
      • 数据表损坏的修复方式有哪些?

数据库基础知识

为什么要使用数据库

在这里插入图片描述

什么是SQL?

在这里插入图片描述

什么是MySQL?

在这里插入图片描述

数据库三大范式是什么

在这里插入图片描述

mysql有关权限的表都有哪几个

在这里插入图片描述

MySQL的binlog有有几种录入格式?分别有什么区别?

在这里插入图片描述

数据类型

mysql有哪些数据类型

在这里插入图片描述
在这里插入图片描述

引擎

MySQL存储引擎MyISAM与InnoDB区别

在这里插入图片描述

MyISAM索引与InnoDB索引的区别?

在这里插入图片描述

InnoDB引擎的4大特性

在这里插入图片描述

存储引擎选择

在这里插入图片描述

索引

什么是索引?

在这里插入图片描述

索引有哪些优缺点?

在这里插入图片描述

索引使用场景(重点)

在这里插入图片描述

索引有哪几种类型?

在这里插入图片描述

索引的数据结构(b树,hash)

在这里插入图片描述

索引的基本原理

在这里插入图片描述

索引算法有哪些?

在这里插入图片描述

索引设计的原则?

在这里插入图片描述

创建索引的原则(重中之重)

在这里插入图片描述

创建索引的三种方式,删除索引

在这里插入图片描述

创建索引时需要注意什么?

在这里插入图片描述

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

在这里插入图片描述

百万级别或以上的数据如何删除

在这里插入图片描述

前缀索引

在这里插入图片描述

什么是最左前缀原则?什么是最左匹配原则

在这里插入图片描述

B树和B+树的区别

在这里插入图片描述

使用B树的好处

在这里插入图片描述

使用B+树的好处

在这里插入图片描述

Hash索引和B+树所有有什么区别或者说优劣呢?

在这里插入图片描述

数据库为什么使用B+树而不是B树

在这里插入图片描述

B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据,

在这里插入图片描述

什么是聚簇索引?何时使用聚簇索引与非聚簇索引

在这里插入图片描述

非聚簇索引一定会回表查询吗?

在这里插入图片描述

联合索引是什么?为什么需要注意联合索引中的顺序?

在这里插入图片描述

事务

什么是数据库事务?

在这里插入图片描述

事物的四大特性(ACID)介绍一下?

原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
在这里插入图片描述

什么是脏读?幻读?不可重复读?

在这里插入图片描述

什么是事务的隔离级别?MySQL的默认隔离级别是什么?

在这里插入图片描述

对MySQL的锁了解吗

在这里插入图片描述

隔离级别与锁的关系

在这里插入图片描述

按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法

在这里插入图片描述

从锁的类别上分MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了

在这里插入图片描述

MySQL中InnoDB引擎的行锁是怎么实现的?

在这里插入图片描述

InnoDB存储引擎的锁的算法有三种

在这里插入图片描述

什么是死锁?怎么解决?

在这里插入图片描述

数据库的乐观锁和悲观锁是什么?怎么实现的?

在这里插入图片描述

视图

为什么要使用视图?什么是视图?

在这里插入图片描述

视图有哪些特点?

在这里插入图片描述

视图的使用场景有哪些?

在这里插入图片描述

视图的优点

在这里插入图片描述

视图的缺点

在这里插入图片描述

什么是游标?

在这里插入图片描述

存储过程与函数

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

在这里插入图片描述

触发器

什么是触发器?触发器的使用场景有哪些?

在这里插入图片描述

MySQL中都有哪些触发器?

在这里插入图片描述

常用SQL语句

SQL语句主要分为哪几类

在这里插入图片描述

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

在这里插入图片描述

SQL 约束有哪几种?

在这里插入图片描述

六种关联查询

在这里插入图片描述
交叉连接

SELECT * FROM A,B,C或者SELECT * FROM A CROSS JOIN B (CROSS JOIN C)

没有任何关联条件,结果是笛卡尔积,结果集会很大,没有意义,很少使用

内连接(INNER JOIN)

SELECT * FROM A,B WHERE A.id=B.id或者SELECT * FROM A INNER JOIN B ON A.id=B.id
多表中同时符合某种条件的数据记录的集合,INNER JOIN可以缩写为JOIN

在这里插入图片描述
外连接(LEFT JOIN/RIGHT JOIN)
在这里插入图片描述

联合查询(UNION与UNION ALL)

SELECT * FROM A UNION SELECT * FROM B UNION …

在这里插入图片描述

全连接(FULL JOIN)

SELECT * FROM A LEFT JOIN B ON A.id=B.id UNIONSELECT * FROM A RIGHT JOIN B ON A.id=B.id

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

什么是子查询

在这里插入图片描述

子查询的三种情况

  1. 子查询是单行单列的情况:结果集是一个值,父查询使用:=、 <、 > 等运算符
-- 查询工资最高的员工是谁? 
select  * from employee where salary=(select max(salary) from employee);   
  1. 子查询是多行单列的情况:结果集类似于一个数组,父查询使用:in 运算符
   -- 查询工资最高的员工是谁? 
select  * from employee where salary=(select max(salary) from employee);   
  1. 子查询是多行多列的情况:结果集类似于一张虚拟表,不能用于where条件,用于select子句中做为子表
 -- 1) 查询出2011年以后入职的员工信息
-- 2) 查询所有的部门信息,与上面的虚拟表中的信息比对,找出所有部门ID相等的员工。
select * from dept d,  (select * from employee where join_date > '2011-1-1') e where e.dept_id =  d.id;    -- 使用表连接:
select d.*, e.* from  dept d inner join employee e on d.id = e.dept_id where e.join_date >  '2011-1-1'  

mysql中 in 和 exists 区别

在这里插入图片描述

varchar与char的区别

在这里插入图片描述

varchar(50)中50的涵义

在这里插入图片描述

int(20)中20的涵义

在这里插入图片描述

mysql为什么这么设计在这里插入图片描述

mysql中int(10)和char(10)以及varchar(10)的区别

在这里插入图片描述

FLOAT和DOUBLE的区别是什么?

在这里插入图片描述

drop、delete与truncate的区别

在这里插入图片描述

UNION与UNION ALL的区别?

在这里插入图片描述

SQL优化

如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?

在这里插入图片描述
在这里插入图片描述

【推荐】SQL性能优化的目标:至少要达到 range 级别,要求是ref级别,如果可以是consts最好。
说明:
1) consts 单表中最多只有一个匹配行(主键或者唯一索引),在优化阶段即可读取到数据。
2) ref 指的是使用普通的索引(normal index)。
3) range 对索引进行范围检索。
反例:explain表的结果,type=index,索引物理文件全扫描,速度非常慢,这个index级别比较range还低,与全表扫描是小巫见大巫。

SQL的生命周期?

在这里插入图片描述

大表数据查询,怎么优化

在这里插入图片描述

超大分页怎么处理?

在这里插入图片描述

【推荐】利用延迟关联或者子查询优化超多分页场景。
说明:MySQL并不是跳过offset行,而是取offset+N行,然后返回放弃前offset行,返回N行,那当offset特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页数进行SQL改写。
正例:先快速定位需要获取的id段,然后再关联:
SELECT a.* FROM 表1 a, (select id from 表1 where 条件 LIMIT 100000,20 ) b where a.id=b.id

mysql 分页

在这里插入图片描述

慢查询日志

在这里插入图片描述

关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?

在这里插入图片描述

为什么要尽量设定一个主键?

在这里插入图片描述

主键使用自增ID还是UUID?

在这里插入图片描述

字段为什么要求定义为not null?

在这里插入图片描述

如果要存储用户的密码散列,应该使用什么字段进行存储?

在这里插入图片描述

优化查询过程中的数据访问

在这里插入图片描述

优化长难的查询语句

在这里插入图片描述

优化特定类型的查询语句

在这里插入图片描述

优化关联查询

在这里插入图片描述

优化子查询

在这里插入图片描述

优化LIMIT分页

在这里插入图片描述

优化UNION查询

在这里插入图片描述

优化WHERE子句

在这里插入图片描述

数据库优化

为什么要优化

在这里插入图片描述

数据库结构优化

在这里插入图片描述

MySQL数据库cpu飙升到500%的话他怎么处理?

在这里插入图片描述

大表怎么优化?某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?

在这里插入图片描述
在这里插入图片描述

垂直分表

在这里插入图片描述

适用场景

在这里插入图片描述

缺点

在这里插入图片描述

水平分表:

在这里插入图片描述

适用场景

在这里插入图片描述

水平切分的缺点

在这里插入图片描述

在这里插入图片描述

数据库分片的两种常见方案

在这里插入图片描述

MySQL的复制原理以及流程

在这里插入图片描述
在这里插入图片描述

读写分离有哪些解决方案?

在这里插入图片描述

备份计划,mysqldump以及xtranbackup的实现原理

在这里插入图片描述

数据表损坏的修复方式有哪些?

在这里插入图片描述

原文链接:https://thinkwon.blog.csdn.net/article/details/104778621

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

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

相关文章

log双线性模型log-bilinear model简单概括

LBLM(log-bilinear model)是自然语言处理中的比较简单的模型。LBLM根据上下文的词向量来预测下一个词向量wnw_nwn​&#xff0c;通过对上下文词向量的一个线性组合来表示&#xff1a; rwr_wrw​是一个实数值词向量对于词www对于下一个词的分布计算根据wnw_nwn​预测表示和所有…

9制定项目章程

项目干系人概述 项目主要干系人 项目章程 项目章程的功能 项目章程

2019湖南多校第三场

解题过程 开场lfw过A&#xff0c;然后byf突然想到E的构造方法&#xff0c;WA了一发开始查错&#xff0c;shl中途看G&#xff0c;说"这不是bzoj原题吗&#xff1f;"拿到一血带歪榜&#xff0c;然后byf该出E拿到一血又带歪榜。。。shl写出B&#xff0c;之后lfw C想复杂…

【数据结构与算法】栈与队列

栈 一、什么是栈&#xff1f; 1.后进者先出&#xff0c;先进者后出&#xff0c;这就是典型的“栈”结构。 2.从栈的操作特性来看&#xff0c;是一种“操作受限”的线性表&#xff0c;只允许在端插入和删除数据。 二、为什么需要栈&#xff1f; 1.栈是一种操作受限的数据结构…

随机变量的独立性

随机变量的独立性  从之前的随机事件的独立性推导出随机变量的独立性。  定义&#xff1a;设F(x,y)是二元随机变量(X,Y)的分布函数FX(x)是X的边际分布函数&#xff0c;FY(y)是Y的边际分布函数。如果对所有的x,y都有&#xff0c;P(X≤x,Y≤y)P(X≤x)P(Y≤y)&#xff0c;也就…

线性代数的本质笔记-更新ing

1. 序言 线性代数不光要会计算&#xff0c;还要理解掌握其几何直观。 2. 向量究竟是什么&#xff1f; 物理学&#xff1a;向量是空间中的箭头&#xff0c;具有长度和方向两个属性。计算机&#xff1a;向量是一个有序数表。比如房屋的参数信息可以根据相关属性按准许列成一个…

10项目开工会

立项启动准备 启动会的任务 如何进行项目启动

科学与可视化

一.numpy库和matplotlib库的学习 &#xff08;1&#xff09;numpy库介绍&#xff1a;科学计算包&#xff0c;支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成&#xff0c;并可与C/Fortran语言无缝结合 np.array([1,2,3])列表转换…

268 missing number

问题&#xff1a;给定一个包含n个不同数字的数组&#xff0c;从0开始&#xff0c;例如0,1,2,…n。找到数组中缺了那个数字。例如输入nums[0,1,3]&#xff0c;输出2。 思路&#xff1a;高斯 从0到n的和为sum(1n)*n/2。只要计算数组的和与sum的差是多少就可以了。 public int mi…

[Leetcode][第337题][JAVA][打家劫舍3][递归][动态规划]

【问题描述】[中等] 【解答思路】 1. 动态规划 第 1 步&#xff1a;状态定义 dp[node][j] &#xff1a;这里 node 表示一个结点&#xff0c;以 node 为根结点的树&#xff0c;并且规定了 node 是否偷取能够获得的最大价值。 j 0 表示 node 结点不偷取&#xff1b; j 1 表示…

什么是压缩感知?[简单概括]

什么是压缩感知&#xff1f; 压缩感知(compressive sensing)有两部分组成 感知(sensing):所谓感知就是站在计算机角度上&#xff0c;我们作为计算机感知一种信号&#xff08;图片&#xff09;&#xff0c;也就是计算机去理解这种信号的一种拟人化的描述&#xff0c;比如10010…

依赖注入模式中,为什么用对象而不是用数组传递?

依赖注入&#xff08;Dependence Injection, DI&#xff09; 依赖注入是控制反转的一种设计模式。依赖注入的核心是把类所依赖的单元的实例化过程&#xff0c;放到类的外面去实现。依赖注入的实现离不开反射。 依赖注入&#xff08;Dependence Injection, DI&#xff09; 所谓的…

【数据结构与算法】递归

一、什么是递归&#xff1f; 1.递归是一种非常高效、简洁的编码技巧&#xff0c;一种应用非常广泛的算法&#xff0c;比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。 2.方法或函数调用自身的方式称为递归调用&#xff0c;调用称为递&#xff0c;返回称为归。 二、…

二元随机变量函数的分布

在前面的文章记录了二元随机变量的定义、离散型二元随机变量的联合分布律/联合概率密度函数、边际分布律/边际概率密度函数、条件分布律/条件概率密度 &#xff0c;以及对应的 联合分布函数、边际分布函数、条件分布函数。这篇文档介绍二元随机变量函数的分布。 二元随机变量函…

力扣 1553. 吃掉 N 个橘子的最少天数 记忆化DFS|记忆化BFS|剪枝

吃掉 N 个橘子的最少天数 厨房里总共有 n 个橘子&#xff0c;你决定每一天选择如下方式之一吃这些橘子&#xff1a; 吃掉一个橘子。 如果剩余橘子数 n 能被 2 整除&#xff0c;那么你可以吃掉 n/2 个橘子。 如果剩余橘子数 n 能被 3 整除&#xff0c;那么你可以吃掉 2*(n/3) 个…

spring容器bean的作用域 spring容器是否是单例的一些问题

Spring容器中Bean的作用域 当通过Spring容器创建一个Bean实例时&#xff0c;不仅可以完成Bean实例的实例化&#xff0c;还可以为Bean指定特定的作用域。Spring支持如下5种作用域&#xff1a; singleton&#xff1a;单例模式&#xff0c;在整个Spring IoC容器中&#xff0c;使用…

第四十期:2019年度十大Web开发趋势

本文和您一起讨论那些本年度改变软件开发行业、特别是Web开发方面的十大趋势。 如今&#xff0c;随着各种新趋势的层出不穷&#xff0c;Web和移动领域的创新不仅改变了人们、乃至整个社会的日常行为习惯、以及业务处理方式&#xff0c;而且也使得开发人员能够轻松、且高效地创建…

【数据结构与算法】排序 冒泡、插入、选择 O(n^2)

冒泡、插入、选择 O(n2) 基于比较 快排、归并 O(nlogn) 基于比较 计数、基数、桶 O(n) 不基于比较 一、如何分析一个排序算法&#xff1f; 学习排序算法的思路&#xff1f;明确原理、掌握实现以及分析性能。如何分析排序算法性能&#xff1f;从执行效率、内存消耗以及稳定性…