![](https://img-blog.csdnimg.cn/20210131180228595.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 94
从DDL语句、查询语句、再到DML语句、数据库引擎、数据库事务、数据库锁、分表关系、数据库三范式,再到索引的原理,mvcc版本控制。全面打通。
存在morning
乐于了解新技术,善于复盘总结,不是很聪明,但能够持续进步。
展开
-
【MySQL数据库专项 一】一个例子讲清楚数据库三范式
数据库的范式(Normalization)是一组关于数据库设计的规则,目的是减少数据冗余和改善数据完整性。第一范式(1NF)原子性:表的每一列都是不可分割的基本数据项,即表中的所有字段值都是不可再分的原子值。唯一性:表的每一行都是唯一的,可以通过一个主键(Primary Key)来区分。第二范式(2NF)在1NF的基础上,消除非主属性对于码的部分函数依赖。部分函数依赖是指表中的非主属性只依赖于候选键的一部分,而不是整个候选键。原创 2024-01-20 23:35:56 · 817 阅读 · 0 评论 -
【MySQL数据库基础 一】基本概念和控制语句
使用SQL语句,可以完成在数据库中检索信息、更新数据库信息、改变数据库的结构,标准SQL语句的五种类型查询语句, 也叫数据查询语言,通常由select完成,查询数据库信息DML语句,也叫数据操作语言,主要由insert,update,delete完成,修改数据库信息DDL语句,也叫数据定义语句,主要由create,alter,drop和truncate(性能优于delete)四个关键字完成。DCL语句,也叫数据控制语句,主要由grant和revoke两个关键字完成,其中DCL语句用于为数据库用户授原创 2017-07-08 14:40:06 · 569 阅读 · 0 评论 -
【MySQL数据库基础 二】DDL数据定义语句
数据库定义包括创建表、修改表以及删除表,当然更多的修饰在数据库的约束中提到。约束通常被写到系统表里,依据约束范围可以分为:单列约束:每个约束只约束一列。多列约束:每个约束可以约束多个数据列。依据约束指定时机可以分为:建表开始的时候为对应数据列指定约束。建表后创建,以修改的方式来增加约束。约束通常只能被建立和删除不能修改。NOT NULL:非空约束,指定某列不得为空。UNIQUE:唯一约束,指定某列或者几列的组合不能重复。PRIMARY KEY:主键:指定该列的值可以唯一的标识该记录。例如一个学生有很原创 2020-07-29 09:20:32 · 458 阅读 · 0 评论 -
【MySQL数据库基础 三】数据查询语句
等值连接,非等值连接,外连接,广义笛卡尔积以及SQL99规范的,交叉连接,自然链接,using子句链接,on子句连接,全外链接或者左右外连接, 用到的关键字如下:cross join、right join、left join、full join、inner join、nature join、on、using查询中用到的关键字归纳如下:赋值运算符,不是等号而是冒号等号(:=)比较运算符,有如下的一些关键字:between、in、like、is null.逻辑运算符,有如下的一些关键字:and、not、原创 2017-07-10 17:44:03 · 715 阅读 · 0 评论 -
【MySQL数据库基础 四】DML数据操作语句
DML语句主要有以下三个功能:插入新数据(insert into),修改已有数据(update), 删除数据(delete from),接下来所有操作对此表进行//主表,两个字段,id(主键自增)和name(非空)create table tml ( tml_id int auto_increament, tml_name varchar(255) not null, primary key(tml_id)); //从表,3个字段,id(主键自增)和name以及java_tml(参考主表原创 2017-08-02 10:15:35 · 624 阅读 · 0 评论 -
【MySQL数据库基础 五】数据库表间关系
数据库表之间存在多种关系,例如一对一关系、一对多关系一对一关系有两个表,在第一个表中的某一行只与第二个表中的一行相关,同时第二个表中的某一行,也只与第一个表中的一行相关,我们称这两个表为一对一关系。一对一关系是比较少见的关系类型。但在某些情况下,还是会需要使用这种类型。情况一:一个表包含了太多的数据列(需要拆分成子表)情况二:将数据分离到不同的表,划分不同的安全级别。(设定不同的安全级别)情况三:将常用数据列抽取出来组成一个表(常用的数据抽为一个表)也就是说我们需要的一对一关系通常在拆分表时原创 2017-09-20 20:45:44 · 792 阅读 · 0 评论 -
【MySQL数据库基础 六】数据库三范式
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。原创 2017-09-20 15:52:42 · 682 阅读 · 0 评论 -
【MySQL数据库基础 七】MySQL数据库高性能优化方案
可以通过如下的一些方式来优化数据库,**查询缓存的使用、数据库连接池化设计、大表优化、分库分表**,核心想说的其实是水平拆分,也就是分库分表,更加核心想要讨论的问题实际上是在水平拆分的时候如何保证分布式一致性,通过Redis自增的方式还是雪花算法,整体来了解一遍。原创 2020-12-15 23:33:18 · 423 阅读 · 0 评论 -
【MySQL数据库原理 零】MySQL数据库原理看这一篇就够了
MySQL是使用最广泛的数据库,只有理解了其底层机制,才能更好的写出高性能的SQL查询,所谓知其然,也要知其所以然。本篇Chat为接下来的深入理解MySQL数据原理 精华版本,重点知识,如果某个知识点不理解,可以再深入的看本专栏中的其它Blog内容介绍。MySQL架构及查询语句执行流程,一条SQL语句的执行流程,MySQL数据库的整体结构MySQL数据库存储引擎,InnoDB和MyISAM的区别,InnoDB的优势MySQL日志机制,MySQL的两种日志,日志的作用是什么MySQL数据库索引,索引原创 2021-03-13 02:46:23 · 2290 阅读 · 3 评论 -
【MySQL数据库原理 一】MySQL架构及查询语句执行流程
首先了解下MySQL的内部存储机制,其实我们可以把常用工具MySql workbench当做是客户端,而MySQL是服务器,结合计算机网络里学习的内容,我们可以理解为两个应用程序在通信,也就是局域网内的CS架构。MySQL架构客户端依据通信协议请求服务端,而MySQL这个服务器执行SQL语句命令并给出反馈,整体架构如下:可以粗略的把MySQL服务器分为两层,上面的为Server层,主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数原创 2020-12-16 23:36:55 · 492 阅读 · 0 评论 -
【MySQL数据库原理 二】MySQL数据库存储引擎
什么是存储引擎? 关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂有的表根本不用来存储任何长期的数据有的表读取时非常快,但是插入数据时去很差我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。在MySQL中,存原创 2017-09-07 17:02:08 · 652 阅读 · 0 评论 -
【MySQL数据库原理 三】MySQL日志系统
上一篇Blog详细学习了MySQL的架构模式和一条语句的执行流程,本篇Blog来详细聊聊MySQL的日志系统,以及它是如何在MySQL的事务上发挥至关重要的作用DML数据操作语句DML数据操作语句(更新、删除、插入)这些在执行的时候肯定要记录日志,MySQL 自带的日志模块 binlog(归档日志) ,所有的存储引擎都可以使用,常用的 InnoDB 引擎还自带了一个日志模块 redo log(重做日志),假如我们要更新tml的age为18:use Usergoupdate UserInfo set原创 2021-01-05 23:42:37 · 521 阅读 · 1 评论 -
【MySQL数据库原理 四】MySQL如何保证数据安全可靠
上一篇blog从DML语句的执行流程开始到两种日志以及两阶段提交,详细介绍了MySQL是如何具备crash-safe能力的,以及WAL机制,这篇文章更加深入的对两种日志进行深入介绍,详细说明其写入机制以及设置策略。RedoLog写入机制BinLog写入机制日志组提交策略...原创 2021-01-08 22:41:12 · 1573 阅读 · 0 评论 -
【MySQL数据库原理 五】MySQL日志机制小结
基于前两篇blog对【MySQL数据库原理 二】MySQL日志系统与事务和【MySQL数据库原理 三】MySQL如何保证数据安全可靠对日志系统做一个串联性的描述,从为什么需要使用开始讲起一直到日志是如何满足MySQL的安全可靠的。为了方便把前面的知识串联起来,我画了一个流程图:循着这个路线正序的提取下日志部分的知识精华。为什么要用日志日志有三方面的作用,分别是WAL机制、备份归档以及crash-safe能力。一个个来说说它的好处:WAL机制WAL 的全称是 Write-Ahead Logging原创 2021-01-09 00:00:00 · 841 阅读 · 2 评论 -
【MySQL数据库原理 六】MySQL数据库索引
索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本 500 页的书,如果你想快速找到其中的某一个知识点,在不借助目录的情况下是比较难找的。同样,对于数据库的表而言,索引其实就是它的目录,在我的另一篇Blog数据库索引中提到,当表上定义foreign key,unique, primary key时,系统会自动为其创建索引,当数据表被删除时索引自动被删除。由于本文主要学习自《极客时间-MySQL48讲》所以在撰写本文时会用到大量相关图片。索引概述这部分我们从使用层面上了解下,索引有哪些适用场原创 2021-03-06 23:42:54 · 461 阅读 · 3 评论 -
【MySQL数据库原理 七】MySQL数据库事务及锁机制
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位事务体现出整体的概念,**要么事务中的操作全部成功,要么全部失败。**体现在数据库sql里就是逻辑上相互依赖的一组sql语句。在 MySQL 中,事务支持是在引擎层实现的。你现在知道,MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一事务的基本概念原创 2021-03-07 06:09:43 · 988 阅读 · 0 评论