
MYSQL
文章平均质量分 96
记录MYSQL学习内容
为了前进而后退,为了走直路而走弯路
https://darling-123456.github.io/个人博客网站,欢迎访问
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
尚硅谷MySQL从入门到大牛 | 学习笔记目录以及建议
说明:根据所做笔记。原创 2024-12-11 10:40:45 · 1903 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第14章_MySQL事务日志
如果 write pos 追上 checkpoint ,表示日志文件组满了,这时候不能再写入新的 redo log记录,MySQL 得停下来,清空一些记录,把 checkpoint 推进一下。,记录的是数据页的物理变化,undo log不是redo log的逆过程(逻辑上的逆过程,但是物理上不是直接的逆过程)。的特性,就是说对于一个已经提交的事务,在事务提交后即使系统发生了崩溃,这个事务对数据库中所做的更改也不能丢失。的文件,log buffer中的日志默认情况下就是刷新到这两个磁盘文件中。原创 2024-12-11 10:15:00 · 460 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第19章_数据库备份与恢复
相同版本的数据库之间迁移注意点指的是在主版本号相同的MySQL数据库之间进行数据库移动。方式1: 因为迁移前后MySQL数据库的主版本号相同,所以可以通过复制数据库目录来实现数据库迁移,但是物理迁移方式只适用于MyISAM引擎的表。对于InnoDB表,不能用直接复制文件的方式备份数据库。方式2: 最常见和最安全的方式是使用mysqldump命令导出数据,然后在目标数据库服务器中使用MySQL命令导入。原创 2024-12-11 10:20:46 · 845 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第18章_主从复制
一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构、进行读写分离,这样同样可以提升数据库的并发处理能力。但并不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的。如果我们的目的在于提升数据库高并发访问的效率,那么首先考虑的是如何优化SQL和索引,这种方式简单有效;其次才是采用 缓存的策略 ,比如使用Redis将热点数据保存在内存数据库中,提升读取的效率;最后才是对数据库采用主从架构,进行读写分离。原创 2024-12-11 10:19:05 · 823 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第17章_其他数据库日志
中继日志与二进制日志的格式相同,可以用工具进行查看。*/;BEGIN/*!*/;# at 950# at 100091 flags: STMT_END_F -- server id 1 是主服务器,意思是主服务器删了一行数据BINLOG ''/*!*/;# at 1040定位到表 atguigu.test 编号是 91 的记录,日志位置是 832;删除编号是 91 的记录,日志位置是 872。原创 2024-12-11 10:18:11 · 364 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第16章_多版本并发控制
MVCC(Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。隐藏字段rowId:针对每一行行格式,都会对应有一个隐藏记录的rowidtrxId:一次事务的操作,就会生成一个trxid。原创 2024-12-11 10:17:11 · 368 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第15章_Mysql锁
在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL的各个隔离级别提供了保证。锁冲突 也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。原创 2024-12-11 10:16:10 · 519 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第12章_数据库其它调优策略
也就是索引列的cardinality的值与表中数据的总条数差距越大,即使查询的时候使用了该索引作为查询条件,存储引擎实际查询的时候使用的概率就越小。因为数据都是存放到数据库中,我们需要从数据库层中取出数据放到内存中进行业务逻辑的操作,当用户量增大的时候,如果频繁地进行数据查询,会消耗数据库的很多资源。物理查询优化是在确定了逻辑查询优化之后,采用物理优化技术(比如索引等),通过计算代价模型对各种可能的访问路径进行估算,从而找到执行方式中代价最小的作为执行计划。是 OK 说明表已经是最新的了。原创 2024-12-11 10:12:11 · 977 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第11章_数据库的设计规范
在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。规范化 vs 性能为满足某种商业目标 ,数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询。原创 2024-12-10 16:57:59 · 999 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第10章_索引优化与查询优化
直接通过二级索引对应的数据找到了查询结果,无需回表理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含。原创 2024-12-10 16:55:31 · 847 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第9章_性能分析工具的使用
定位了查询慢的SQL之后,我们就可以使用EXPLAIN或DESCRIBE工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。MySQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供它认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)。原创 2024-12-10 16:53:14 · 563 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第8章_索引的创建与设计原则
(1)冗余索引举例:建表语句如下通过索引就可以对name列进行快速搜索,再创建一个专门针对name列的索引就算是一个冗余索引,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。(2)重复索引另一种情况,我们可能会对某个列重复建立索引col2 INT,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。原创 2024-12-10 16:51:22 · 896 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第7章_InnoDB数据存储结构
页a、页b、页c…页n这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应的分组中的记录即可快速找到指定的记录。#####1.3 页的大小。原创 2024-12-10 16:50:07 · 814 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第6章_索引的数据结构
索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现高级查找算法。索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。有些存储引擎支持更多的索引数和更大的索引长度。原创 2024-12-10 16:48:48 · 937 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第5章_存储引擎
MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。表名.frm 存储表结构(MySQL8.0时,合并在表名.ibd中)原创 2024-12-10 16:37:23 · 787 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第4章_逻辑架构
每次调用都会产生最新的当前时间,如果在一个查询请求中调用了这个函数,那即使查询请求的文本信息都一样,那不同时间的两次查询也应该得到不同的结果,如果在第一次查询时就缓存了,那第二次查询的时候直接使用第一次查询的结果就是错误的!缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中,如果存在就直接读取,如果不存在,就会通过内存或磁盘将页面存放到缓冲池中再进行读取。需要说明的是,在MySQL 中的查询缓存,不是缓存查询计划,而是查询对应的结果。原创 2024-12-10 16:36:04 · 1286 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第3章_用户与权限管理
使用REVOKE收回权限之后,用户账户的记录将从db、host、tables_priv和columns_priv表中删除,但是用户账户记录仍然在user表中保存(删除user表中的账户记录使用DROP USER语句)。,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。,如果所有权限表都检查完毕,但还是没有找到允许的权限操作,MySQL将 返回错误信息 ,用户请求的操作不能执行,操作失败。用户是数据库的使用者,我们可以通过给用户授予访问数据库中资源的权限,来控制使用者对数据库的访问,消除安全隐患。原创 2024-12-10 16:34:20 · 765 阅读 · 0 评论 -
mysql高级篇 | 尚硅谷 | 第2章_数据库和文件系统的关系
② MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中。(MYData):数据信息文件,存储数据信息(如果采用独立表存储模式)下对应的数据库子目录下创建了一个专门用于 描述表结构的文。的格式在不同的平台上都是相同的。这个后缀名为.frm是以。可以看到有4个数据库是属于MySQL自带的系统数据库。① MySQL5.7 中会在data/a的目录下生成。文件用于保存数据库的相关配置。这个数据目录下的文件和子目录比较多,除了。的用于描述表结构的文件。(MYIndex):存放索引信息文件。原创 2024-12-10 16:32:37 · 1374 阅读 · 0 评论 -
mysql高级篇 |尚硅谷 | 第1章_Linux下MySQL的安装与使用
安装并启动好两台虚拟机:掌握克隆虚拟机的操作mac地址主机名ip地址UUID安装有 和 等访问CentOS系统的工具CentOS6和CentOS7在MySQL的使用中的区别检查mysql service:如果存在mysql-libs的旧版本包,显示如下:如果不存在mysql-lib的版本,显示如下:3、MySQL的卸载①关闭 mysql 服务②查看当前 mysql 安装状况③卸载上述命令查询出的已安装程序务必卸载干净,反复执行确认是否有卸载原创 2024-12-10 16:30:32 · 1206 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第18章_MySQL8其它新特性
MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,最突出的一点是多MySQL Optimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。\7. 原子数据定义语句 MySQL 8开始支持原子数据定义语句(Automic DDL),即 原子DDL。目前,只有InnoDB存储引擎支持原子DDL。原创 2024-12-10 16:25:12 · 978 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第17章_触发器
MySQL从 5.0.2 版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由 事件来触发 某个操作,这些事件包括 INSERT 、 UPDATE 、 DELETE 事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动 激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。原创 2024-12-10 16:23:03 · 847 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第16章_变量、流程控制与游标
定义条件是事先定义程序执行过程中可能遇到的问题, 处理程序定义了在遇到问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。这样可以增强存储程序处理问题的能力,避免程序异常停止运行。说明:定义条件和处理程序在存储过程、存储函数中都是支持的。定义条件就是给MySQL中的错误码命名,这有助于存储的程序代码更清晰。它将一个 错误名字 和 指定的错误条件 关联起来。这个名字可以随后被用在定义处理程序的 DECLARE HANDLER 语句中。原创 2024-12-10 16:22:18 · 1102 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第15章_存储过程与函数
存储过程的英文是 Stored Procedure。它的思想很简单,就是一组经过 预先编译 的 SQL 语句的封装。**执行过程:**存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。简化操作,提高了sql语句的重用性,减少了开发程序员的压力减少操作过程中的失误,提高效率减少网络传输量(客户端不需要把所有的 SQL 语句通过网络发给服务器)原创 2024-12-09 19:09:10 · 1158 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第14章_视图
视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给他。再比如,人员薪酬是个敏感的字段,那么只给某个级别以上的人员开放,其他人的查询视图中则不提供这个字段。刚才讲的只是视图的一个使用场景,实际上视图还有很多作用。最后总结视图的优点。操作简单。原创 2024-12-09 19:08:02 · 667 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第13章_约束
数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。实体完整性(Entity Integrity) :例如,同一个表中,不能存在两条完全相同无法区分的记录域完整性(Domain Integrity) :例如:年龄范围0-120,性别范围“男/女”原创 2024-12-09 19:07:18 · 831 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第12章_MySQL数据类型精讲
整数类型一共有 5 种,包括TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。整数类型字节有符号数取值范围无符号数取值范围TINYINT1-128~1270~255SMALLINT20~65535MEDIUMINT30~167772154BIGINT8浮点数和定点数类型的特点是可以处理小数 ,你可以把整数看成小数的一个特例。因此,浮点数和定点数的使用场景,比整数大多了。原创 2024-12-09 19:06:25 · 876 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第11章_数据处理之增删改
一个同时插入多行记录的INSERT语句等同于多个单行插入的INSERT语句,但是多行的INSERT语句在处理过程中 效率更高。INSERT还可以将SELECT语句查询的结果插入到表中,此时不需要把每一条记录的值一个一个输入,只需要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多行。例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。为表的指定字段插入数据,就是在。原创 2024-12-09 19:05:39 · 1165 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第10章_创建和管理表
同样的,在使用 ALTER TABLE 进行表的基本修改操作时,在执行操作过程之前,也应该确保对数据进行完整的备份 ,因为数据库的改变是无法撤销 的,如果添加了一个不需要的字段,可以将其删除;相同的,如果删除了一个需要的列,该列下面的所有数据都将会丢失。操作将把表的定义和表中的数据一起删除,并且MySQL在执行删除操作时,不会有任何的确认信息提示,因此执行删除操时应当慎重。MySQL在执行建表语句时,将id字段的类型设置为int(11),这里的11实际上是int类型指定的显示宽度,默认的显示宽度为11。原创 2024-12-09 19:05:00 · 897 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第09章_子查询
如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称之为关联子查询。题目:查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_id,manager_id,department_id。同样,如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部,这种嵌套的执行方式就称为相关子查询。原创 2024-12-09 19:04:22 · 746 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第08章_聚合函数
什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型AVG()SUM()MAX()MIN()COUNT()聚合函数语法。原创 2024-12-09 19:03:31 · 746 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第07章_单行函数
函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既 提高了代码效率 ,又 提高了可维护性。在SQL 中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地 提高用户对数据库的管理效率。从函数定义的角度出发,我们可以将函数分成 内置函数 和 自定义函数。在 SQL 语言中,同样也包括了内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的,本章及下一章讲解的是 SQL 的内置函数。原创 2024-12-09 19:02:21 · 1139 阅读 · 0 评论 -
MySQL | 尚硅谷 | 第06章_多表查询
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。为什么不把多张表合成一张表?答:多张表合成一张表会导致很多信息的冗余!将不必要的冗余信息从磁盘导入内存将导致很多的磁盘IO。原创 2024-12-09 19:01:36 · 1086 阅读 · 0 评论 -
Mysql | 尚硅谷 | 第05章_排序与分页
使用 ORDER BY 子句排序ASC(ascend): 升序DESC(descend):降序ORDER BY 子句在SELECT语句的结尾。原创 2024-12-09 19:00:51 · 856 阅读 · 0 评论 -
Mysql | 尚硅谷 | 第04章_运算符
之前介绍过,LIKE运算符也可以匹配指定的字符串,但与REGEXP不同,LIKE匹配的字符串如果在文本中间出现,则找不到它,相应的行也不会返回。逻辑或(OR或||)运算符是当给定的值都不为NULL,并且任何一个值为非0值时,则返回1,否则返回0;当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;BETWEEN运算符使用的格式通常为SELECT D FROM TABLE WHERE C BETWEEN A AND B,此时,当C大于或等于A,并且C小于或等于B时,结果为1,否则结果为0。原创 2024-12-09 19:00:12 · 1007 阅读 · 0 评论 -
Mysql | 尚硅谷 | 第03章_基本的SELECT语句
1946年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖。在这几十年里,无数的技术、产业在这片江湖里沉浮,有的方兴未艾,有的已经几幕兴衰。但在这片浩荡的波动里,有一门技术从未消失,甚至“老当益壮”,那就是SQL。45 年前,也就是 1974 年,IBM研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL 的半衰期可以说是非常长 了。原创 2024-12-09 18:59:03 · 1127 阅读 · 0 评论 -
Mysql | 尚硅谷 | 第02章_MySQL环境搭建
说明:本内容整理自尚硅谷B站MySQL视频。原创 2024-12-09 18:58:13 · 1259 阅读 · 0 评论 -
Mysq | 尚硅谷 | 第01章_数据库概述
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。Oracle1979 年,Oracle 2 诞生,它是第一个商用的 RDBMS(关系型数据库管理系统)。随着 Oracle 软件的名气越来越大,公司也改名叫 Oracle 公司。原创 2024-12-09 18:56:06 · 1003 阅读 · 0 评论 -
MYSQL数据库连接池 | C++ | 项目实战
本文主要介绍数据库连接池实现的相关细节原创 2024-10-17 19:24:13 · 2080 阅读 · 2 评论 -
MySQL API 使用详解
众所周知,MySQL数据库是一个典型的C/S结构,即:客户端和服务器端。如果我们部署好了MySQL服务器,想要在客户端访问服务器端的数据,在编写程序的时候就可以通过官方提供的C语言的API来实现。本文转载自:https://subingwen.cn/mysql/mysql-api/ 仅供自己忘记时翻阅查看。对于以上的操作步骤,在MySQL提供的API中都有对应的操作函数,下面,为大家介绍一下这些API函数的使用。以上API对应的MySQL动态库。对应的是一个结构体,在。转载 2024-10-16 16:30:06 · 282 阅读 · 0 评论