随笔分类 - MySQL全面瓦解

MySQL全面瓦解系列
摘要:回顾一下上面几篇索引相关的文章: MySQL全面瓦解22:索引的介绍和原理分析 MySQL全面瓦解23:MySQL索引实现和使用 MySQL全面瓦解24:构建高性能索引(策略篇) 索引的十大原则 1、正确理解和计算索引字段的区分度,文中有计算规则,区分度高的索引,可以快速得定位数据,区分度太低,无法 阅读全文
posted @ 2021-03-09 14:53 翁智华 阅读(454) 评论(1) 推荐(1) 编辑
摘要:学习如果构建高性能的索引之前,我们先来了解下之前的知识,以下两篇是基础原理,了解之后,对面后续索引构建的原则和优化方法会有更清晰的理解: MySQL全面瓦解22:索引的介绍和原理分析 MySQL全面瓦解23:MySQL索引实现和使用 我们编写索引的目的是什么?就是使我们的sql语句执行得更加高效,更 阅读全文
posted @ 2021-03-08 14:54 翁智华 阅读(404) 评论(1) 推荐(1) 编辑
摘要:MySQL索引实现 上一篇我们详细了解了B+树的实现原理(传送门)。我们知道,MySQL内部索引是由不同的引擎实现的,主要包含InnoDB和MyISAM这两种,并且这两种引擎中的索引都是使用b+树的结构来存储的。 InnoDB引擎中的索引 Innodb中有2种索引:主键索引(也叫聚集索引)、辅助索引 阅读全文
posted @ 2021-02-25 15:07 翁智华 阅读(557) 评论(0) 推荐(1) 编辑
摘要:索引的定义 MySQL官方对索引的定义为:索引(Index)是协助MySQL高效获取数据的数据结构。 本质上,索引的目的是为了提高查询效率,通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。 可 阅读全文
posted @ 2021-02-18 15:15 翁智华 阅读(606) 评论(4) 推荐(3) 编辑
摘要:背景 1月22号晚上10点半,下班后愉快的坐在在回家的地铁上,心里想着周末的生活怎么安排。 突然电话响了起来,一看是我们的一个开发同学,顿时紧张了起来,本周的版本已经发布过了,这时候打电话一般来说是线上出问题了。 果然,沟通的情况是线上的一个查询数据的接口被疯狂的失去理智般的调用,这个操作直接导致线 阅读全文
posted @ 2021-01-27 16:00 翁智华 阅读(931) 评论(6) 推荐(3) 编辑
摘要:背景 说到流程控制语句,我们在程序语法中用的比较多,比如C#的if..else...,while...,?: 等。同样的,在MySQL中,也有一些流程控制的语法,方便我们在写函数、存储过程的时候对逻辑进行控制和处理。 常见的过程式SQL语句可以用在存储过程或者函数体中。其中包括:IF函数、IF条件语 阅读全文
posted @ 2021-01-22 15:18 翁智华 阅读(309) 评论(0) 推荐(0) 编辑
摘要:定义 我们经常会遇到这样的一种情况,需要对我们查询的结果进行遍历操作,并对遍历到的每一条数据进行处理,这时候就会使用到游标。 所以:游标(Cursor)是处理数据的一种存储在MySQL服务器上的数据库查询方法,为了查看或者处理结果集中的数据,提供了在结果集中一次一行遍历数据的能力。 游标主要用在循环 阅读全文
posted @ 2021-01-21 16:20 翁智华 阅读(241) 评论(0) 推荐(1) 编辑
摘要:定义 我们之前学习了MySQL的内置函数,传送门,非常丰富,满足了我们对数据操作的大部分需求。 但是如果有一些复杂的业务逻辑在数据库层面就可以完成,无需在程序层面完成的时候,这时候就可以写成MySQL自定义函数。 所以,函数是指 一组预编译好的sql语句集合,理解成批处理语句,类似于C# 中的方法, 阅读全文
posted @ 2021-01-20 15:20 翁智华 阅读(303) 评论(0) 推荐(0) 编辑
摘要:关于触发器 现实开发中我们经常会遇到这种情况,比如添加、删除和修改信息的时候需要记录日志,我们就要在完成常规的数据库逻辑操作之后再去写入日志表,这样变成了两步操作,更复杂了。 又比如删除一个人员信息的时候,需要将他的购物记录、收货地址、收藏夹等都删了,这个连续的操作容易出错,一致性和完整性不好保证。 阅读全文
posted @ 2021-01-19 15:10 翁智华 阅读(262) 评论(0) 推荐(1) 编辑
摘要:概述 大多数SQL语句都是针对一个或多个表的单条语句。但并非所有业务都这么简单,经常会有复杂的操作需要多条语句才能完成。 比如用户购买一个商品,要删减库存表,要生成订单数据,要保存支付信息等等,他是一个批量的语句执行行为。 存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可 阅读全文
posted @ 2021-01-18 15:47 翁智华 阅读(419) 评论(0) 推荐(1) 编辑
摘要:概述 很多时候,我们会有一些很复杂的数据库操作,比如整合用户的行为数据,那这些数据可能包含用户的餐饮、生活日用、充值消费、交通出行、通讯物流、交通出行、医疗保健、住房物业、运动健康... 基于此,我们可能要去关联很多的用户行为信息表,写一大堆的合并、统计,以及条件过滤的脚本,来输出最终的二维表,这才 阅读全文
posted @ 2020-12-30 15:28 翁智华 阅读(379) 评论(1) 推荐(0) 编辑
摘要:关于事务 我们在数据库中需要执行一个系列的操作的时候,要保证这个系列执行的连续性和完整性,要么整个系列的执行都成功,要么就全部失败(只要有一个步骤失败,其他均回滚到之前的状态), 保证不会存在一部分成功一部分失败的情况。这就是我们事务的职责。下面举个分苹果的例子: A同学有3个苹果,B同学有2个苹果 阅读全文
posted @ 2020-12-16 21:50 翁智华 阅读(498) 评论(0) 推荐(1) 编辑
摘要:概述 提到MySQL的系统函数,我们前面有使用过聚合函数,其实只是其中一小部分。MySQL提供很多功能强大、方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,并更加灵活地满足不同用户的需求。 本文将MySQL的函数分类并汇总,以便提供后面使用中的参考。 MySQL 数值类型函数 阅读全文
posted @ 2020-11-28 15:27 翁智华 阅读(284) 评论(0) 推荐(1) 编辑
摘要:概述 MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表。大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据。 了解MySQL连接查询之前我们先来理解下笛卡尔积的原理。 数据准备 依旧使用上节的表数据(包含class 阅读全文
posted @ 2020-11-19 15:29 翁智华 阅读(404) 评论(0) 推荐(0) 编辑
摘要:概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询。 先做一下数据准备,这边建立三张表:班级、学生、毕业成绩表,用于后面的操作: 1 drop database if exists `Helenlyn 阅读全文
posted @ 2020-11-17 15:33 翁智华 阅读(486) 评论(3) 推荐(0) 编辑
摘要:概述 相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段的化妆品消费占比是多少(这可能有助于对商品备货量的预估)。 这个时候就要用到分组查询,分组查询的目的是为了把数据分成多个逻辑组(购买化妆品的人员是一个组,不同 阅读全文
posted @ 2020-11-16 08:30 翁智华 阅读(586) 评论(0) 推荐(0) 编辑
摘要:概述 数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤, 我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做降序排序,想看年龄从小到大的分布情况,就可能需要对user表的age字段进行升序排序。 也可能需 阅读全文
posted @ 2020-11-13 08:07 翁智华 阅读(399) 评论(0) 推荐(1) 编辑
摘要:概述 上一章 查询的过滤条件,我们了解了MySQL可以通过 like % 通配符来进行模糊匹配。同样的,它也支持其他正则表达式的匹配,我们在MySQL中使用 REGEXP 操作符来进行正则表达式匹配。用法和like相 似,但又强大很多,能够实现一些很特殊的、复杂的规则匹配。正则表达式使用REGEXP 阅读全文
posted @ 2020-11-10 12:15 翁智华 阅读(693) 评论(1) 推荐(1) 编辑
摘要:概述 在实际的业务场景应用中,我们经常要根据业务条件获取并筛选出我们的目标数据。这个过程我们称之为数据查询的过滤。而过滤过程使用的各种条件(比如日期时间、用户、状态)是我们获取精准数据的必要步骤, 这样才能得到我们期望的结果。所以本章我们来学习MySQL中查询过滤条件的各种用法。 关系运算 关系运算 阅读全文
posted @ 2020-11-09 16:43 翁智华 阅读(514) 评论(0) 推荐(0) 编辑
摘要:概述 提到查询,就回到我们第四篇的SQL语言分类了,DQL(Data QueryLanguage),也就是数据查询语言,实际就是从数据库中获取数据的一种命令方式。我们给数据库发送一个查询语句的命令,数据库按需返回相应的数据。 查询基本语法 select column_name1,column_nam 阅读全文
posted @ 2020-11-06 21:32 翁智华 阅读(359) 评论(0) 推荐(0) 编辑