![](https://img-blog.csdnimg.cn/20200412180512915.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL江湖路
文章平均质量分 92
本专栏致力于高性能SQL等相关知识,带你走进MySQL的江湖。寒江孤影,江湖故人,相逢何必曾相识。
_陈哈哈
幽默爱笑的程序员,非科班出身,来自山东小城枣庄,北漂五年,离梦想依旧很远。维护《MySQL江湖路》公众号,曾任央视知名栏目《百家讲坛》热心观众。我有故事,你有酒么
展开
-
MySQL江湖路 | 专栏目录
该栏目侧重MySQL数据库方向,本文建立知识体系方便检索。希望帮助到更多使用MySQL的朋友,让大家少走弯路,后面我会持续更新、完善MySQL的那些事儿,程序员在外打工不易,都是为了能让家人过得好些。一起加油,一起成长!!...原创 2020-08-04 17:01:03 · 20426 阅读 · 36 评论 -
深夜小酌,50道经典SQL题,真香~
蹲坑之余,在网上找到了50道所谓经典SQL题,这不就是深夜必备小菜?我用脚叼起拖鞋,从冰箱拿出封印已久的半瓶可乐,打开数日未见的MySQL8,来吧,来场说卷就卷的刷题。原创 2022-06-09 00:48:14 · 5613 阅读 · 25 评论 -
MySQL的order by该如何避免“未命中索引“
用Explain查看Order By语句执行计划时经常发现用不上索引,难道花好多时间和资源创建的联合索引都摆烂了?今天我把几个同学遇到的情况整理出来,做一个Order By使用索引的坑点分享。希望对你有用。原创 2022-05-30 11:56:17 · 2838 阅读 · 8 评论 -
老大说不要在项目中使用存储过程
作为技术人,我不愿看到因为xxx问题而直接拒接xxx技术这种情况,该篇文章是网上多方技术人针对“存储过程到底是值不值得用”这个问题的一些见解原创 2022-02-09 15:50:25 · 13272 阅读 · 40 评论 -
5分钟搞懂MySQL - 行转列
MySQL行转列,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰到了你,让你为之一愣~ 但当你看到本文后,这个问题就不在是问题,及时收藏,以后谁再问你这个问题,直接甩他脸上,粘贴即用。原创 2022-01-10 09:01:35 · 14575 阅读 · 56 评论 -
牛B程序员在“创建索引”时都会注意啥?
当同事问我一些创建索引的经验时,作为一个久经沙场的老程序员,我建议尽量让每条SQL中的where、group by、order by条件都能最大化使用索引。并且...原创 2022-01-07 06:30:00 · 11314 阅读 · 31 评论 -
MySQL窗口函数,你最熟悉的陌生人~
窗口函数,MySQL中最熟悉的陌生人~原创 2021-11-12 00:58:28 · 4636 阅读 · 25 评论 -
老大告诉我不要用字符串存IP地址,不兴~
程序员的三不准则:跟自己没关系的代码不要看,自己模块用不到的技术不要学,遗留代码只要能跑的就不要动!原创 2021-11-01 01:11:17 · 6393 阅读 · 21 评论 -
我秃了!唯一索引、普通索引我该选谁?
你遇到过不知道如何选择唯一索引和普通索引的场景么?你知道他俩的原理和区别么?来不及了,快上车!!原创 2021-09-06 02:16:58 · 4474 阅读 · 27 评论 -
面试热点话题:聊聊MySQL索引“B+Tree”的前世今生,
面试一说起MySQL,我们总会提到B+Tree索引,你对B+Tree索引了解么,它有哪些特性,优势在哪里,和B树有什么不同?外行看热闹,内行看门道。对于这类热门知识和问题,希望同学们都能做到心中有数。原创 2021-05-30 19:10:36 · 3786 阅读 · 20 评论 -
领导含泪叮嘱我:MySQL 建表字段记得用 not null,不然就收拾包袱滚蛋
上午我收到一条短信,内容是“尊敬的 null 你好,XXX”,当时我就笑了。真是外行看热闹,内行看门道,这是程序员都能 Get 的笑点,说明程序没有正确从数据库获取到我的姓名,然后把空值格式化为了 null。原创 2021-05-27 17:29:49 · 9455 阅读 · 44 评论 -
这MySQL里的反斜杠(\\)也太坑了吧!!真是醉了
在MySQL中有很多特殊符号都是相当恶心的,比如字符串中有反斜杠、单引号、双引号等,在我们平时操作SQL中,一不注意这些符号就会给你背上一口锅。废话不多说,快上车!原创 2021-05-26 17:05:16 · 26598 阅读 · 29 评论 -
历时两年,近50篇干货,分享了多年MySQL经验,望大家在欢声笑语中精通MySQL!
MySQL经验系列,分享了多年MySQL经验,望大家在欢声笑语中精通MySQL!持续更新中~原创 2021-05-08 13:37:26 · 4193 阅读 · 29 评论 -
数据库ACID四大特性到底为了啥,一文带你看通透
说起数据库四大特性,同学们张口就来,ACID!那为什么要ACID?每种特性的原理又是什么?如何实现的?废话少说,哈哥今天带你搞清楚,快上车!原创 2021-05-06 14:20:44 · 32571 阅读 · 25 评论 -
老大让我优化数据库,我上来就分库分表,他过来就是一jio
记得,如果有人问你做数据库优化最有效的方式是什么?`SQL优化、分布式集群、分库分表!`干就完了~ 但你对分库分表理解多少呢?什么时候该分表?有几种分法儿?别想了,快上车,5分钟学会!原创 2021-04-29 02:22:34 · 17273 阅读 · 66 评论 -
MySQL慢查询,一口从天而降的锅!
一条慢查询会造成什么后果?年轻时,我一直觉得不就是返回数据会慢一些么,用户体验变差?其实远远不止,我经历过几次`线上事故`,有一次就是由一条SQL慢查询导致的。原创 2021-04-25 23:30:03 · 24394 阅读 · 83 评论 -
深入浅出MySQL - MyISAM有趣的那些“锁”事儿
MyISAM是MySQL5.5版之前默认数据库引擎,也算是老一辈存储引擎代表,由早期的ISAM所改良。虽然性能极佳,但“锁”事过多,并发事务处理能力很差。没办法,我天生的结巴,还让我去辩论会??你不要强人“锁”男!原创 2021-04-20 20:02:31 · 2668 阅读 · 7 评论 -
面试让HR都能听懂的MySQL锁机制,欢声笑语中搞懂MySQL锁
腾讯云数据库负责人林晓斌说过:“我们面试MySQL同事时只考察两点,索引和锁”。言简意赅,MySQL锁的重要性不言而喻。本文通过同事“侨总”的一场面试,带你通俗易懂的掌握MySQL各种锁机制,希望可以帮到你!原创 2021-04-19 16:19:25 · 22755 阅读 · 49 评论 -
听我讲完redo log、binlog原理,面试官老脸一红
MySQL问题答得很好,收到入职通知后,却发现被HR坑了。。。有毒!原创 2021-04-05 21:42:45 · 17027 阅读 · 86 评论 -
令人炸毛儿的MySQL隐式转换 - 无形之刃,最为致命
我相信90%以上的同学们在平时开发时,或多或少都被隐式转换(CONVERT_IMPLICIT)坑过,甚至测出bug前你都浑然不知。你还别不信,“无形之刃,最为致命!”原创 2021-04-01 19:03:21 · 5956 阅读 · 27 评论 -
MySQL运算符 != 和 <> 以及 = 和 <=> 的区别
1、运算符:!= 和 <>在MySQL中!= 和 <> 的功能一致,在sql92规范中建议是:!=,新的规范中建议为: <>下面查询username为"陈哈哈"以外的用户,以下两条语句的作用一样。SELECT * FROM t_user WHERE username != "陈哈哈";SELECT * FROM t_user WHERE username <> "陈哈哈";1、运算符:= 和 <=>值得一提的是 = 、 <=原创 2021-03-30 17:56:57 · 17657 阅读 · 27 评论 -
面试又双叒叕被问到数据库三大范式,该怎么答才能让面试官认可呢
面试问到三大范式,如何说能让面试官满意呢?别想了,快上车,正规车~原创 2021-03-21 20:23:34 · 5901 阅读 · 17 评论 -
5分钟搞懂MySQL - 索引下推优化
对于长期与MySQL同流合污的朋友们来说,或许,“索引下推优化”这个词并不陌生,嗯。。经常听到,但是MySQL的这个“优化”到底优化了啥?就懵懵懂懂了,反正不是公司优化我就行了是吧。。来,让我们继续快乐的卷下去~原创 2021-03-16 01:46:48 · 2987 阅读 · 12 评论 -
Group by隐式排序,一个优美的BUG
一、背景故事 年前我们换了领导。俗话说,新官上任干总爱干傻事儿,这不,领导要拥抱新事物,要求我们更新项目MySQL版本,从MySQL5.7更新到MySQL8.0。不知是MySQL5.7不香了,还是领导你眼光高了? 我把这个任务交给同事小王,小王不以为然,说换就换。迁完库,在代码基本不改的情况下自信上线。上线后却发现原本一些有序的列表变无序了,最后临时回退了版本。 核对代码时我们发现,老版本Select语句中只是用到了Group by分组,也没有用到order by排序,有点蒙,为啥没用order原创 2021-01-27 09:25:57 · 3522 阅读 · 6 评论 -
MySQL密码策略管理插件validate_password
MySQL5.6版本,引入了新密码校验插件validate_password, 用于管理用户密码长度、强度等,保障账号的安全性。本文让我们一起学习一下用户密码策略如何配置,简单易会原创 2021-01-03 16:40:48 · 9075 阅读 · 34 评论 -
摸个鱼的功夫,就学会了MySQL的DATE_FORMAT函数
假设某宝为鼓励大家双12买买买,奖励双十一那天订单最多的两位用户:分别是用户1:“剁手皇帝陈哈哈” 和 用户2:“触手怪刘大莉” 一人一万元; 需求1:让你通过MySQL订单表,统计一下双11那天,这两位每小时的购买订单成交数;你会怎么写这条SQL呢? 记得几年前我刚接触MySQl,年少轻狂,在得知不用考虑效率的情况下,我写了个接口循环二十四遍,发送24条SQL去查(捂脸),由于那个接口,被技术经理嘲讽~~表示他写的SQL比我吃的米都多。虽然我们山东人基本不吃米饭,但我还是羞愧不已。。 .原创 2020-12-08 18:54:35 · 20302 阅读 · 20 评论 -
这些主流数据库常用专业术语,你都知道么
汇总了51个数据库术语列表,作为数据库开发人员,你需要知道这些专业术语。在阅读数据库相关文档或专业领域书籍时,会经常见到。原创 2020-12-07 17:21:46 · 18986 阅读 · 24 评论 -
MySQL定时任务(EVENT|事件)如何配置,必会技能!
MySQL的定时任务你用过没?是真的好用,日后跟同事吹逼的利器。来不及了,快上车!!原创 2020-11-20 17:30:31 · 22205 阅读 · 33 评论 -
MySQL常用判断函数总结!!看你都用过没
说到if else 你肯定不陌生,这种判断函数在各种编程语言中是家常便饭,但在编写SQL语句中,或许你就很少用到了,甚至还没怎么玩儿过。在MySQL中基于对条件判断的函数又叫“控制流函数”,用于mysql语句中的逻辑判断。本文带大家一起来看一看MySQL中都有哪些常用的控制流函数,以及控制流函数的使用场景都有哪些?原创 2020-11-02 22:40:06 · 7354 阅读 · 27 评论 -
细说varchar与char有哪些区别?
CHAR和VARCHAR是MySQL中两种最重要的字符串类型,两者的原理和区别也是面试中高频问题,如果是你,会从哪几个角度去回答这个问题呢?今天,我给大家总结了一下相关知识点,让我们一起回顾一下吧。 ----- 本文描述和假设使用的存储引擎以Innodb和MyISAM为准原创 2020-10-30 13:45:23 · 69992 阅读 · 22 评论 -
MySQL数据中有很多换行符和回车符!!该咋办?
今天一大早客户给我打电话:“小陈儿,昨晚我往数据库导了几十万条数据,然后在web界面很多都搜不到,你们系统做的啥玩意儿啊?这么多BUG!得啵得啵得…”(省略2000字)又习惯性的喷了一遍我们这个项目做的辣鸡~~得得得,客户随便喷,我就当吃了个早饭了。嗝儿~嗯,真饱;原创 2020-10-23 12:07:41 · 20118 阅读 · 46 评论 -
MySQL拼接函数CONCAT的使用心得
前几篇文章给大家介绍了MySQL中的替换函数(Replace)、切分函数(SubString),今天我们一起来看看MySQL专业拼接“字符串”的函数:concat。老规矩,有好的建议和想法,记得写到评论中,等我上班摸鱼时,跟大家一起吃瓜~原创 2020-10-14 22:13:57 · 18202 阅读 · 26 评论 -
MySQL实战中,Insert语句的使用心得总结
Insert语句在实际场景中的用法多样,给他家总结分享一下。记得Mark喔!原创 2020-10-11 17:20:49 · 7306 阅读 · 29 评论 -
MySQL最左匹配原则,道儿上兄弟都得知道的原则
自MySQL5.5版本起,主流的索引结构转为B+树。B+树的节点存储索引顺序是从左向右存储,在检索匹配的时候也要满足自左向右匹配。目录一、最左匹配原则的原理二、违背最左原则导致索引失效的情况三、查询优化器偷偷干了哪些事儿四、需要你mark的知识点1、如何通过有序索引排序,避免冗余执行order by2、like 语句的索引问题3、不要在列上进行运算4、索引不会包含有 NULL 值的列5、尽量选择区分度高的列作为索引6、覆盖索引的好处 通常我们在建立联合索引的时候,相信建立过索引的同学们会发现,.原创 2020-09-11 19:31:00 · 16581 阅读 · 32 评论 -
MySQL:replace函数的几种实用场景
MySQL的Replace函数都有哪些用法,你是否都知晓呢?今天,让我带大家花几分钟时间来一起看一看,记得Mark!目录REPLACE语法操作实例使用场景1 -- (Query语句):使用场景2 -- (update语句):使用场景3 -- (插入或替换:REPLACE INTO)附、一张有故事的照片(五)REPLACE语法REPLACE(String,from_str,to_str)即:将String中所有出现的from_str替换为to_str,这里的from_str不支持正则匹配。操作实.原创 2020-09-06 19:44:40 · 14861 阅读 · 20 评论 -
MySQL切分函数substring() - 大家务必要get到这些点
MySQL字符串截取函数主要有:left(), right(), substring(), substring_index() 四种。各有其使用场景。今天,让我带大家花几分钟时间来熟知它们,Mark!原创 2020-09-03 17:05:48 · 26827 阅读 · 24 评论 -
曾经,我以为我很懂MySQL索引
MySQL索引,我们真的了解么?腾讯云数据库负责人林晓斌说过:“我们面试MySQL同事时只考察两点,索引和锁”。言简意赅,MySQL索引的重要性不言而喻。MySQL索引历经了多个版本的迭代,从语法到底层数据结构都有很多改变。今天,让我们一起来看看吧原创 2020-08-26 09:04:17 · 21743 阅读 · 45 评论 -
灵魂拷问,MySQL到底能否解决幻读问题
MySQL能否解决“幻读”?是DBA同行们面试时很喜欢考察的问题。或许你了解脏读、不可重复读的原理。却一直不理解“幻读”,以及MySQL到底是如何解决幻读的。如果有缘看到本文,这篇文章很可能帮助你彻底搞懂幻读原理及解决方式。原创 2020-08-02 21:21:55 · 15085 阅读 · 26 评论 -
MySQL没有RowNum,那我该怎么按“行”查询或删除数据?
众所周知,MySQL是没有rowNum隐藏列的。陈哈哈教你在没有主键自增ID的情况下,如何根据“行”为条件来查询或删除数据。如:查询或删除第5-10行的数据。原创 2020-08-01 16:28:22 · 17500 阅读 · 11 评论 -
delete后加 limit是个好习惯么
在业务场景要求高的数据库中,对于单条删除和更新操作,在delete和update后面加limit 1绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果SQL中有limit 1;这时就return了,否则还会执行完全表扫描才return。效率不言而喻。那么,在日常执行delete时,我们是否需要养成加 limit 的习惯呢?是不是一个好习惯呢?原创 2020-07-22 18:12:32 · 26399 阅读 · 14 评论