mysql全面瓦解30:备份与恢复-编程思维

合辑地址:MySQL全面瓦解 1 为什么需要数据库备份 灾难恢复:当发生数据灾难的时候,需要对损坏的数据进行恢复和还原 需求的变更或者回滚:当需求发生变更,或者需要回滚到之前的版本时,数据库备份也显得很重要。 审计:需要知道某一个阶段的数据或者Schema的实际情况 测试:将实际的生产环境的数据导入到本地备份为测试数据,来验证新功能,可以省去很多麻烦。 2 备份需要考虑的几个关键点 恢

mysql全面瓦解14:事务_hello-brand-编程思维

关于事务 我们在数据库中需要执行一个系列的操作的时候,要保证这个系列执行的连续性和完整性,要么整个系列的执行都成功,要么就全部失败(只要有一个步骤失败,其他均回滚到之前的状态), 保证不会存在一部分成功一部分失败的情况。这就是我们事务的职责。下面举个分苹果的例子: A同学有3个苹果,B同学有2个苹果,如果A同学给一个苹果给B同学,那么A同学只剩下2个苹果,而B同学有了3个。步骤如下 1 upd

mysql全面瓦解5:数据操作-dml_hello-brand-编程思维

说明 DML(Data Manipulation Language)数据操作语言,是指对数据库进行增删改的操作指令,主要有INSERT、UPDATE、DELETE三种,代表插入、更新与删除,这是学习MySQL必要掌握的基本知识。 与之前的章节一致,下方语法中 [] 中内容可以省略。  INSERT操作 逐行插入 语法格式如下: 1 insert into t_name[(column_name

mysql全面瓦解6:查询的基本操作_hello-brand-编程思维

概述 提到查询,就回到我们第四篇的SQL语言分类了,DQL(Data QueryLanguage),也就是数据查询语言,实际就是从数据库中获取数据的一种命令方式。我们给数据库发送一个查询语句的命令,数据库按需返回相应的数据。 查询基本语法 select column_name1,column_name2,... from tname; SQL 中不区分大小写,select语句中不区分大小写,

mysql全面瓦解7:查询的过滤条件_hello-brand-编程思维

概述 在实际的业务场景应用中,我们经常要根据业务条件获取并筛选出我们的目标数据。这个过程我们称之为数据查询的过滤。而过滤过程使用的各种条件(比如日期时间、用户、状态)是我们获取精准数据的必要步骤, 这样才能得到我们期望的结果。所以本章我们来学习MySQL中查询过滤条件的各种用法。 关系运算 关系运算就是where语句后跟上一个或者n个条件,满足where后面条件的数据会被返回,反之不满足的就会被

mysql全面瓦解9:查询的排序、分页相关_hello-brand-编程思维

概述 数据库中的数据直接呈现出来一般不是我们想要的,所以我们上两节演示了如何对数据进行过滤的方法。除了对数据进行过滤, 我们可能还需要对数据进行排序,比如想从列表中了解消费最高的项,就可能需要对金额字段做降序排序,想看年龄从小到大的分布情况,就可能需要对user表的age字段进行升序排序。 也可能需要对数据进行限制,比如我们需要对付款的1~10,11~20,21~30 名的用户分别赠予不同的礼品

mysql全面瓦解10:分组查询和聚合函数_hello-brand-编程思维

概述 相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段的化妆品消费占比是多少(这可能有助于对商品备货量的预估)。 这个时候就要用到分组查询,分组查询的目的是为了把数据分成多个逻辑组(购买化妆品的人员是一个组,不同年龄段购买化妆品的人员也是组),并对每个组进行聚合计算的过程:。 分组查询的语法格式如下: 1

mysql全面瓦解11:子查询和组合查询_hello-brand-编程思维

概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询。 先做一下数据准备,这边建立三张表:班级、学生、毕业成绩表,用于后面的操作: 1 drop database if exists `Helenlyn_Class`; 2 create database `Helenlyn_Class`;

mysql全面瓦解12:连接查询的原理和应用_hello-brand-编程思维

概述 MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表。大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据。 了解MySQL连接查询之前我们先来理解下笛卡尔积的原理。 数据准备 依旧使用上节的表数据(包含classes 班级表和students 学生表): 1 mysql> select * from

mysql全面瓦解13:系统函数相关_hello-brand-编程思维

概述 提到MySQL的系统函数,我们前面有使用过聚合函数,其实只是其中一小部分。MySQL提供很多功能强大、方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,并更加灵活地满足不同用户的需求。 本文将MySQL的函数分类并汇总,以便提供后面使用中的参考。 MySQL 数值类型函数 数值类型函数说明 abs 返回绝对值 sqrt 返回二次方根 mod 返回余数

mysql:select count 小结_hello-brand-编程思维

MySQL:SELECT COUNT 小结 背景 今天团队在做线下代码评审的时候,发现同学们在代码中出现了select count(1) 、 select count(*),和具体的select count(字段)的不同写法,本着分析的目的在会议室讨论了起来,那这几种写法究竟孰优孰劣呢,我们一起来看一下。 讨论归纳 先来看看MySQL官方对SELECT COUNT的定义: 传送门:https:/

mysql全面瓦解1:安装部署与准备_hello-brand-编程思维

下载与安装 互联网高速时代下,我们的生活发生了巨大的变化,从购物(淘宝、京东),出行(滴滴、快狗),支付(支付宝、微信)等,遍及我们生活的方方面面,我们使用这些系统和应用的时候,会在上面获取、存储大量的数据信息, 那这些信息总是要进行落地并持久化存储,才能在各种各样的业务场景中使用。所以我们把数据存储在了数据库中,常用的数据库有mysql、oracle、sqlserver、db2等。 MySQL

mysql全面瓦解2:常用命令和系统管理_hello-brand-编程思维

常用命令 打开CMD命令窗口(记住使用管理员身份运行),我们就可以在命令窗口中做一些MySQL的命令操作了:    服务启动和关闭 这个我们上一个章节使用过了:net start mysql,这是服务命令,不是语句命令,后面不需要加引号 1 net stop mysql --代表停止MySQL服务 2 net start mysq --代表启动MySQL服务 MySQL登录命令  这个我们

mysql全面瓦解3:数据类型介绍与分析_hello-brand-编程思维

概述 MySQL支持很多数据类型,以便我们能在复杂的业务场景中支持各种各样的数据格式,存储适当的数据内容。我们在设计数据库时,正确的使用数据库类型对整个数据库的整洁和高效,会有很大的帮助。 目前常用的数据类型大致上可以分为4大类:整数类型、浮点数类型、字符串(字符)类型、日期/时间类型。详细如下 4大类 主要类型 整数类型 tinyint 、 smallint 、 mediumint

MySQL全面瓦解29:分库分表之Partition功能详解-编程思维

1 回顾 上一节我们详细讲解了如何对数据库进行分区操作,包括了 垂直拆分(Scale Up 纵向扩展)和 水平拆分(Scale Out 横向扩展) ,同时简要整理了水平分区的几种策略,现在来回顾一下。 2 水平分区的5种策略 2.1 Hash(哈希)  这种策略是通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如我们可以建立一个对表的日期

MySQL全面瓦解15:视图-编程思维

概述 很多时候,我们会有一些很复杂的数据库操作,比如整合用户的行为数据,那这些数据可能包含用户的餐饮、生活日用、充值消费、交通出行、通讯物流、交通出行、医疗保健、住房物业、运动健康... 基于此,我们可能要去关联很多的用户行为信息表,写一大堆的合并、统计,以及条件过滤的脚本,来输出最终的二维表,这才是用户真正需要的数据。如果把这些复杂的脚本写在业务程序中不是很合理,那有什么办法把 这些脚本细节隐

MySQL全面瓦解16:存储过程相关-编程思维

概述 大多数SQL语句都是针对一个或多个表的单条语句。但并非所有业务都这么简单,经常会有复杂的操作需要多条语句才能完成。 比如用户购买一个商品,要删减库存表,要生成订单数据,要保存支付信息等等,他是一个批量的语句执行行为。 存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。  优点:提高代码的复用性:把一些通用操作内容封装到

MySQL全面瓦解17:触发器相关-编程思维

关于触发器 现实开发中我们经常会遇到这种情况,比如添加、删除和修改信息的时候需要记录日志,我们就要在完成常规的数据库逻辑操作之后再去写入日志表,这样变成了两步操作,更复杂了。 又比如删除一个人员信息的时候,需要将他的购物记录、收货地址、收藏夹等都删了,这个连续的操作容易出错,一致性和完整性不好保证。这时候就要使用触发器,既可以免去一堆的业务逻辑代码,又能更好的保证数据完整性。 触发器(trigg