![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库面试题
文章平均质量分 61
数据库相关面试题
我是方小磊
这个作者很懒,什么都没留下…
展开
-
经典SQL五十题
表结构学生表:student教师表:teacher课程表:成绩表:题目1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数解:SELECT s.s_id, s.s_name, b.cid1, b.score1, b.cid2, b.score2FROM student sJOIN(SELECT a.s_id as id, a.c_id as cid1, a.score as score1, b.c_id as cid2, b.score as score2FRO原创 2021-06-02 00:00:28 · 791 阅读 · 0 评论 -
常见SQL题
1.在a表不在b表有2张表s1和s2,每张表都只有一列(列名:id),现在想抽取仅存在于t1的id思路:使用左连接,左边会全部显示,而右边关联不上的则会为空,以此来判断仅在s1表中存在。注意:1)使用左连接的时候,当右边没有匹配值的时候会自动赋NULL2)在判断是否为NULL的时候用IS,而不是用=3)这里模拟的是表中不止有一列,所以需要用临时表。如果只有一列就没必要用临时表。所以在写的过程中尽量少的使用临时表。答:SELECT s1.idFROM( SELECT id FROM sc原创 2021-05-19 17:36:36 · 430 阅读 · 0 评论 -
数据库面试题:Redis缓存穿透,缓存击穿,缓存雪崩及如何避免
https://www.cnblogs.com/ysocean/p/12452023.html转载 2021-04-24 20:27:29 · 124 阅读 · 0 评论 -
redis详解系列
感觉这个博主写的redis详解系列非常nice 以此记录https://www.cnblogs.com/ysocean/tag/Redis%E8%AF%A6%E8%A7%A3/转载 2021-04-24 20:21:39 · 67 阅读 · 0 评论 -
数据库面试题:Mysql主从复制原理
Mysql主从复制原理一. 主从复制概述简单来说就是数据库集群,包括主数据库和从数据库。用户更新数据只去主数据库更新,查询数据只去从数据库查询。即更新操作仅在主数据库上,之后从数据库一起更新,查询操作仅在从数据库上。这样保证了读写分离,不会出现因为在高并发的情况下造成的读写冲突。MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据转载 2021-04-19 11:33:46 · 1034 阅读 · 0 评论 -
数据库面试题:分库分表相关问题
文章目录分库分表一.分表1.1 为什么要分表1.2分表的方法1.2.1 纵向分表1.2.2 横向分表二. 分库三. 分库分表相关问题3.1 分库分表如何保证唯一ID3.1.1 UUID(不推荐)3.2 Snowflake算法分库分表分库分表即将表中的数据分为多个部分,分别放在不同的数据库中。所以理解分库分表之前我们先理解分表。一.分表1.1 为什么要分表日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低转载 2021-04-16 15:16:19 · 561 阅读 · 0 评论 -
数据库面试题:数据库查询慢的原因可能有哪些
文章目录一.设计或编码问题二. 机器资源问题三. 高并发量导致一.设计或编码问题数据库表设计是否合理,是否正确添加索引sql语句编写是否合理,查询的时候没有加索引sql语句编写不规范导致索引失效,改用全表扫描数据库表的数据是否太大?是否需要分库分表?程序设计缺陷导致死锁索引失效的几种常见原因:1)查询条件中出现or,!=,或<>2)复合索引未用左列字段(最左匹配原则)3)模糊查询 like以%开头;4)where的判断条件对字段进行了null值判断。因为索引无法存储n转载 2021-04-16 14:31:41 · 828 阅读 · 0 评论 -
数据库面试题:MyISAM与InnoDB的区别
文章目录MyISAM与InnoDB的区别1. 事务支持2.外键支持3.索引区别4. 表行变量5. 全文索引6.表压缩7. 锁级别8.主键支持9.存储文件MyISAM与InnoDB的区别1. 事务支持InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2.外键支持InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败转载 2021-04-16 14:02:16 · 236 阅读 · 0 评论 -
数据库面试题:视图是什么?有什么用?
文章目录1. 视图概念2. 视图的作用1. 提高重用性2. 便于数据库重构3. 提高安全性4.数据更清晰1. 视图概念在MYSQL中,视图是一个命名的虚表,它由一个SQL查询来定义,可以当做表使用。与持久表不同的是,视图中的数据没有实际的物理存储但是在MYSQL中,用户可以对某些视图进行更新操作,就是可以通过视图的定义来更新基本表,但是这种可以进行更新操作的视图被称为可更新视图(updatable view)。 这种视图是在定义的时候需要添加 WITH CHECK OPTION总的来说,可以看转载 2021-04-15 18:25:00 · 908 阅读 · 0 评论 -
数据库面试题:Mysql如何进行死锁检测
Mysql如何进行死锁检测mysql的InndoDB存储引擎使用wair-for graph(等待图)的方式来进行死锁检测。wair-for graph要求数据库保存一下两种信息:锁的信息链表事务等待锁链表之后根据上述链表可构造出一张图,若这个图中存在回路就代表存在死锁。示例如下:在TWL(Transaction Wait Lists)中可以看到,一共有四个事务,所以在图中有四个节点。而事务t2 对row1占 x锁(排它锁),事务t1 对row2占s锁(共享锁)。事务t1 需要等待t2原创 2021-04-12 21:47:43 · 671 阅读 · 2 评论 -
数据库面试题:聚集索引,非聚集索引的底层实现
一.B(B-)树与B+树的简介在了解Mysql数据库索引的实现之前,就必须知道B树与B+树的相关知识,否则根本无法进行学习1.1 B(B-)树首先明确一个概念:B树就是B-树如果想要详细学习B树或者B-树,那么就看这篇博客:B树详解这里仅仅对B树做一个简单的介绍1)B树是平衡树,类似于二叉排序树,所以左子节点的数据一定小于父节点,右子节点的数据一定大于父节点2)但是B树每一个节...原创 2020-05-08 14:51:10 · 1311 阅读 · 1 评论 -
数据库面试题:Redis三种集群方式(主从,哨兵,Redis-Cluster)
Redis三种集群方式Redis有三种集群方式:主从复制,哨兵模式和Redis-Cluster集群。一. 主从复制1.1 概述主从复制其实就是分为主数据库和从数据库,实现读写分离读操作只读从数据库,写操作写主数据库,再实现主从同步1.2 主从复制原理流程如下:Slave从节点服务启动并连接到Master之后,它将主动发送一个SYNC同步命令。Master服务主节点收到同步命令开始执行BGSAVE命令生成RDB文件。同时使用缓冲区记录此后执行的所有写命令。主服务器BGSAVE执转载 2021-04-10 11:40:07 · 1516 阅读 · 0 评论 -
数据库面试题:Redis如何保证数据一致性
Redis缓存如何保证数据一致性一. Redis概述redis是一个内存数据库, 因此数据基本上都存在于内存当中但是Redis会定时以追加或者快照的方式刷新到硬盘中.由于redis是一个内存数据库, 所以读取写入的速度是非常快的, 所以经常被用来做数据, 页面等的缓存。二.为什么会出现数据不一致2.1 一般的读写模式当Redis作为缓存的时候,经典的读写模式如下:(1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应(2)更新的时候,先删除缓存,然原创 2021-04-07 20:23:21 · 8264 阅读 · 4 评论 -
数据库面试题:Redis的过期策略
文章目录Redis的过期策略一. 为什么要有过期策略二.Redis的三种过期策略2.1 定时删除2.2 惰性删除2.3 定期删除三.Redis采用的过期策略(惰性删除+定期删除)四.过期策略对RDB和AOF的影响4.1 RDB对过期key的处理1.2 AOF对过期key的处理五.总结Redis的过期策略一. 为什么要有过期策略Redis往往在应用系统中往往会被作为缓存使用,但是缓存中的数据长时间不进行使用的话会占用内存,甚至会造成内存泄漏,因此需要一定的过期策略保证缓存中的数据会按照一定的机制释放原创 2021-04-09 19:52:58 · 183 阅读 · 0 评论 -
数据库面试题:mysql当前读和快照读(MVCC)
mysql当前读和快照读(MVCC)mysql读取数据实际上有两种读取模式:当前读和快照读当前读:每次读取的都是当前最新的数据,但是读的时候不允许写,写的时候也不允许读。快照读:读写不冲突,每次读取的是快照数据,隔离级别Repeatable Read下(默认隔离级别):有可能读取的不是最新的数据Read Committed隔离级别下:快照读和当前读读取的数据是一样的,都是最新的。一. 相关知识1.1 undolog在操作数据之前,把需要操作的数据和事务记录备份到undo log中,原创 2021-04-08 22:12:11 · 8632 阅读 · 0 评论 -
数据库面试题:对称加密和非对称加密的区别
1. 对称加密对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。常见的对称加密算法:DES,AES,3DES等等。2. 非对称加密非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。常见的非对称加密算法:RSA,ECC3.区别对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的转载 2021-04-07 22:02:36 · 496 阅读 · 0 评论 -
数据库面试题:Redis数据存储在哪里?如何保证数据持久化?
一. Redis数据存储位置redis是一个内存数据库, 因此数据基本上都存在于内存当中但是Redis会定时以追加或者快照的方式刷新到硬盘中.由于redis是一个内存数据库, 所以读取写入的速度是非常快的, 所以经常被用来做数据, 页面等的缓存。二. Redis如何保证数据持久性Redis保证数据持久性的方式有两种:RDB持久化():RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为原创 2021-04-06 21:23:21 · 7745 阅读 · 0 评论 -
数据库面试题:索引什么时候会失效
索引什么时候会失效这里列举了一些常见的索引失效的情况复合索引失效:未使用第一部分查询(最左匹配原则)查询条件中用 or 会导致索引失效,即使条件中带索引也会失效like的模糊查询以%开头,索引失效如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引在where子句中进行null值判断的话会导致引擎放弃索引而产生全表扫描避免在where子句中使用!= ,< >这样的符号,否则会导致引擎放弃索引而产生全表扫描...原创 2021-04-06 20:48:01 · 1172 阅读 · 0 评论 -
数据库面试题:三大范式——详解
三大范式概念解释: 三大范式其实就是数据库建表的规范。第一范式:要求一张表中的数据每一列都是不可分割的原子项数据第二范式:消除部分依赖,要求一张表中的每一列都完全依赖于主键(针对于组合主键),也就是不会出现某一列只和部分主键相关第三范式:消除传递依赖,要求一张表中的每一列都和主键是直接依赖的,不是间接依赖。举例分析:第一范式:要求一张表中的数据每一列都是不可分割的原子项数据例如下...原创 2020-05-04 15:27:47 · 2437 阅读 · 0 评论