MySQL
文章平均质量分 93
系统讲解MySQL知识内容
W哥教你学后端
技术领域:专精JAVA,其次前端,偏JAVA的全栈!需改进优质文档地方,评论留言,本人即时更新最新优质文章!
目标:全网最全Java编程领域知识体系文档,Java开发者只需跟着我文章流程走即可!
展开
-
MySQL篇(leetcode刷题100(排序和分组、函数))(一)(持续更新迭代)
【代码】MySQL篇(leetcode刷题100(排序和分组、函数))(一)(持续更新迭代)原创 2024-09-25 09:13:06 · 1167 阅读 · 0 评论 -
MySQL篇(leetcode刷题100(查询))(二)(持续更新迭代)
根据上面的思路,我们还可以使用自定义变量。将每一条记录的 weight 按照 turn 的顺序和自定义变量相加并生成新的记录。生成临时表并处理。原创 2024-09-25 09:14:59 · 1476 阅读 · 0 评论 -
MySQL篇(高级字符串函数/正则表达式)(持续更新迭代)
MySQL中内置了很多字符串函数,常用的几个如下:注意:以下只列举了常用函数,其余查看官方文档MySQL :: MySQL 8.0 参考手册 :: 12.8 字符串函数和运算符MYSQL中的正则表达式,主要用于对文本串进行条件筛选的操作,比如筛选出串中某些带指定数字、符号、子串的部分。原创 2024-09-16 10:16:06 · 886 阅读 · 0 评论 -
MySQL篇(SQL - 分类)(持续更新迭代)
SQL主要分四类:DDL、DML、DCL、DQL数据定义语言,用来定义数据库对象(数据库,表, 字段)例如:创建(create),修改(alter),删除(drop)等2. DML语句数据操作语言,用来对数据库表中的数据进行增删改例如:增(insert),删(delete),改(update),查(select)因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类,3. DQL(Data Query Lanauage),DR(获取)数据查询语言,用来查询数据库中表的记录。原创 2024-09-15 19:50:02 · 1774 阅读 · 0 评论 -
MySQl篇(SQL - 基本介绍)(持续更新迭代)
1、SQL是结构化查询语言(Structure Query Language),专门用来操作/访问关系型数据库的通用语言虽然SQL定义了一套操作关系型数据库统一标准,但是不同数据库之间可能存在SQl方言2、SQL方言(或者数据库方言)指的是用于访问数据库的结构化查询语言的变体,根据具体的数据库系统不同,也可能会支持不同的方言,例如:MySQL、Oracle、PostgreSQL 分页查询之间存在SQL方言1、Oracle中使用ROWNUM或者ROW_NUMBER()函数实现限制检索行数和分页查询。原创 2024-09-15 19:48:29 · 1471 阅读 · 0 评论 -
MySQL篇(运算符)(持续更新迭代)
运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。MySQL 支持 4 种运算符,分别是算术运算符、比较运算算术运算包括加、减、乘、除等。比较运算符包括大于、小于、等于或不等于。比较运算符用于数值的比较、字符串的匹配等方面。逻辑运算符包括与、或、非、异或等。逻辑运算符返回值为布尔型,真值(1 或 true)和假值(0 或 false)。位运算符包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算先将数据转换为补码,然后在根据数据的补码进行操作。原创 2024-09-16 10:13:47 · 1020 阅读 · 0 评论 -
MySQl篇(数据类型)(持续更新迭代)
VARBINARY (M)为可变长度的二进制字符串,M表示最多能存储的字节数,总字节数不能超过行的字节长度限制65535,在可视化工具中,在t_binary表中添加“政哥”时,utf-8编码处理,一个汉字 占 3 个字节,“政哥” 就有 6 个。YEAR还有格式为“YY”2位数字的形式,值是0069,表示20002069年,值是7099,表示19701999年,BLOB类型存储的是二进制字符串,TEXT类型存储的是文本字符串,BLOB类型还可以存储图片和声音等二进制数。原创 2024-09-15 19:45:28 · 1499 阅读 · 0 评论 -
MySQl篇(基本介绍)(持续更新迭代)
数据库就是用于存储和管理数据的仓库,英文:DataBase(简称:DB),而在数据库中的数据也是有组织的进行存储!关系型数据库指的是多张相互连接的二维表组成的数据库,所谓二维表指的就是由行和列组成的表,如下图(就类似于Excel表格数据,有表头、有列、有行, 还可以通过一列关联另外一个表格中的某一列数据)。还有MySQL、Oracle、DB2、SQLServer这些都属于关系型数据库,里面都是基于二维表存储数据的。原创 2024-09-15 19:42:28 · 3002 阅读 · 0 评论 -
MySQL篇(面试题 - 答问形式)
了解过索引吗?(什么是索引)嗯,索引在项目中还是比较常见的,它是帮助MySQL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗。什么是聚簇索引什么是非聚簇索引?好的~,聚簇索引主要是指数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个,一般情况下主键在作为聚簇索引的非聚簇索引值的是数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个,一般我们自己定义的索引都是非聚簇索引。原创 2024-09-24 09:38:11 · 613 阅读 · 0 评论 -
MySQL篇(约束)(持续更新迭代)
例如:用户名唯一、密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5倍。原创 2024-09-18 09:25:09 · 1380 阅读 · 0 评论 -
MySQL篇(存储引擎 - InnoDB存储引擎架构)(持续更新迭代)
MySQL5.5 版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用非常广泛。下面是InnoDB架构图,左侧为内存结构,右侧为磁盘结构。原创 2024-09-20 09:13:31 · 1487 阅读 · 0 评论 -
MySQL篇(索引)(持续更新迭代)
索引(index)是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。假设表结构及其数据如下:假如我们要执行的SQL语句为MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包含以下几种:索引结构描述B+Tree索引最常见的索引类型,大部分引擎都支持 B+ 树索引Hash索引。原创 2024-09-20 09:14:49 · 1157 阅读 · 0 评论 -
MySQL篇(SQL优化)(持续更新迭代)
页可以为空,也可以填充一半,也可以填充100%。每个页包含了2-N行数据(如果一行数据过大,会行溢出),根据主键排列。MySQL的排序,有两种方式第一种方式:Using filesort通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。第二种方式:Using index通过有序索引顺序扫描直接返回有序数据,这种情况即为 using index,不需要额外排序,操作效率高。原创 2024-09-21 11:29:25 · 1882 阅读 · 1 评论 -
MySQL篇(多表查询)(持续更新迭代)
项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,一对一案例:用户 与 用户详情的关系关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)一对多案例:部门 与 员工的关系关系:一个部门对应多个员工,一个员工对应一个部门实现:在多的一方建立外键,指向一的一方的主键多对多。原创 2024-09-18 09:25:49 · 567 阅读 · 0 评论 -
MySQL篇(体系结构)(持续更新迭代)
在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索。存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。主要体现在存储引擎上,插件式的存储引擎架构,将查询处理和其他的系统任务以及数据的存储提取分离。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。数据库中的索引是在存储引擎层实现的。原创 2024-09-19 08:29:11 · 609 阅读 · 0 评论 -
MySQL篇(锁机制 基本介绍、全局锁\表级锁\行锁、悲观锁\乐观锁)
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。原创 2024-09-23 09:12:23 · 1098 阅读 · 0 评论 -
MySQL篇(管理工具)
e 选项可以在MySQL客户端执行SQL语句,而不用连接到MySQL数据库再执行,对于一些批处理脚本,这种。执行上述指令,会出错,数据不能完成备份,原因是因为我们所指定的数据存放目录/root,MySQL认 为是不。mysqlshow 客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。但是需 要注意表数据文件,并不是记录一条条的insert语句,而是按照一定的格式记录表结构中的数据。打开 db02.sql ,来查看备份的数据,只有insert语句,没有备份表结构。原创 2024-09-23 09:13:47 · 580 阅读 · 0 评论 -
MySQL篇(存储引擎)(持续更新迭代)
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。我们可以在创建表的时候,来指定选择的存储引擎,如果没有指定将自动选择默认的存储引擎。生活中,引擎就是发动机,是一个机器的核心组件。比如,对于舰载机、直升机、火箭来说,他们都有各自的引擎,是他们最为核心的组件。而我们在选择引擎的时候,需要在合适的场景,选择合适的存储引擎,就像在直升机上,我们不能选择舰载机的引擎一样。原创 2024-09-20 09:12:41 · 770 阅读 · 0 评论 -
MySQL篇(事务 - 基础)
事务就是一系列sql语句的组合,是一个整体,在执行的过程中要么都一起成功,要么一起失败在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。为确保数据库中数据的一致性,数据的操纵应当是离散的成0组的逻辑单元,当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。DML 语句需要事务,DDL、DQL 可不需要事务。简单来说:事务 是一组操作的集合,它是一个不可分割的工作单位,原创 2024-09-22 09:13:05 · 987 阅读 · 0 评论 -
MySQL篇(事务 - 原理)
原因就是因为普通的select是快照读,而在当前默认的RR隔离级别下,开启事务后第一个select语句才是快照读的地方,后面执行相同的select语句都是从快照中获取数据,可能不是当前的最新数据,这样也就保证了可重复读。当我们在一个事务中,执行多个增删改的操作时,InnoDB引擎会先操作缓冲池中的数据,如果缓冲池没有对应的数据,会通过后台线程将磁盘中的数据加载出来,存放在缓冲区中,然后将缓冲池中的数据修改,修改后的数据页我们称为脏页。原创 2024-09-22 09:13:40 · 1102 阅读 · 0 评论 -
MySQL(面试题 - 同类型归纳面试题)
null值会占用更多的字节,并且null有很多坑的。内连接(inner join):取得两张表中满足存在连接匹配关系的记录。外连接(outer join):取得两张表中满足存在连接匹配关系的记录,以及某张表(或两张表)中不满足匹配关系的记录。交叉连接(cross join):显示两张表所有记录一一对应,没有匹配关系进行筛选,也被称为:笛卡尔积。最左前缀原则,就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。原创 2024-09-24 09:37:21 · 1880 阅读 · 0 评论 -
MySQL篇(数值函数/日期函数/聚合函数/流程函数)(持续更新迭代)
MySQL的常见函数我们学习完了,那接下来,我们就来分析一下,在前面讲到的两个函数的案例。返回x的反正弦值,即获取正弦为x的值。返回x的反余弦值,即获取余弦为x的值。返回0~1的随机值,其中x的值用作种子值,相同的X值会产生相同的随机数。返回一个对x的值进行四舍五入后最接近X的值,并保留到小数点后面Y位。返回以10为底的X的对数,当X原创 2024-09-17 11:51:02 · 1620 阅读 · 0 评论 -
MySQL篇(数据库范式)(持续更新迭代)
范式(数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。原创 2024-09-19 08:28:09 · 1022 阅读 · 0 评论 -
MySQL篇(主从复制/读写分离/分库分表)(持续更新迭代)
MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存储,存在以下。使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。准备好两台服务器之后,在上述的两台服务器中分别安装好MySQL,并完成基础的初始化准备。在业务系统中,为了缓解磁盘IO及CPU的性能瓶颈,到底是垂直拆分,还是水平拆分;执行(也叫重做),从而使得从库和主库的数据保持同步。原创 2024-09-24 09:36:05 · 950 阅读 · 0 评论 -
MySQL篇(视图)(持续更新迭代)
视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如 插入,更新,删除,以使其符合视图的定义。MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。原创 2024-09-21 11:29:59 · 625 阅读 · 0 评论 -
MySQL篇(日志)
二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。原创 2024-09-23 09:14:30 · 553 阅读 · 0 评论 -
MySQL篇(窗口函数/公用表达式(CTE))(持续更新迭代)
窗口函数是一种SQL函数,非常适合于数据分析,其最大的特点就是:输入值是从SELECT语句的结果集中的一行或者多行的"窗口"中获取的,也可以理解为窗口有大有小(行数有多有少)。通过OVER子句,窗口函数与其他的SQL函数有所区别,如果函数具有OVER子句,则它是窗口函数。如果它缺少了OVER子句,则他就是个普通的聚合函数。窗口函数可以简单地解释为类似于聚合函数的计算函数,但是通过GROUP BY子句组合的常规聚合会隐去正在聚合的各个行,最终输出称为一行。但是窗口函数聚合完之。原创 2024-09-17 16:59:25 · 2620 阅读 · 0 评论 -
MySQL篇(存储过程 & 触发器 & 存储函数)(持续更新迭代)
存储过程是事先经过编译并存储在数据库中的一段 SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。在MySQL中变量分为三种类型:系统变量、用户定义变量、局部变量。用户定义变量 是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 "@变量名" 使用就可以。其作用域为当前连接。IF 条件1 THEN.....原创 2024-09-22 09:12:13 · 1353 阅读 · 0 评论