自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 MySQL索引原理-主键索引与普通索引

B树的非叶子节点也会存储数据。这导致非叶子节点能存放的键值对数量减少,树变高(I/O增多)。B+树所有数据都在叶子节点,非叶子节点纯目录,能放更多键值,树更矮胖。且叶子链表对范围查询太友好了!

2025-06-30 19:40:25 741

原创 西游路上的MySQL血案:一条UPDATE语句执行如何惊动天界数据库?

大唐贞观十三年,唐僧师徒四人行至火焰山。唐僧掏出通关文牒惊呼:"悟空!这文牒上写我们只经历了80难,少记了一难!" 悟空挠头道:"师父莫急,待俺老孙问问天庭数据库管理员..."

2025-06-26 08:01:07 874

原创 MySQL取经路:一条查询SQL执行的九九八十一难

场景:练习两年半的程序员小王在键盘上潇洒敲下:按下回车那刻,SQL的取经之路正式开启...第一难:连接器化身沙和尚盘查:生死考验:第三章:五庄观奇遇 - 查询缓存陷阱第二难:镇元大仙(查询缓存)拦路:缓存失效案例:MySQL 8.0 真相:第三难:白骨精三变代码迷惑取经人:分析器工作流程:第四难:火焰山前,优化器化身诸葛亮:优化策略:第五难:执行器如天兵天将布阵:InnoDB作战过程:第六难:老鼠精的存储迷宫:InnoDB核心组件:数据寻址示例:第八章:凌云渡终

2025-06-25 11:37:51 699

原创 MySQL索引翻车现场:你加的索引,可能是MySQL的猪队友!

❌。

2025-06-24 09:01:30 664

原创 EXPLAIN照妖镜:你的SQL在MySQL眼里有多渣?

MySQL部署/索引/事务/锁/优化/备份恢复/主从复制/高可用/读写分离/分布式架构。产品经理怒吼:“用户点【高富帅推荐】要10秒!:10秒 → 0.1秒!产品经理送锦旗:“SQL华佗,秃头也帅!“您的SQL正在执行全表扫描(妖力ALL),建议为。🔥 别慌,老DBA专治数据库各种“不调”!:实际使用的武器(NULL=赤手空拳)(提示:最左前缀原则):影分身之术(子查询越多,数字越大):画皮妖(衍生临时表,性能杀手!→ 数字越大,MySQL越绝望。:文件排序(内存不足时磁盘爆炸)

2025-06-23 11:07:32 700

原创 MySQL事务提交过程

之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称之为内部xa事务(Distributed Transactions),与之对应的还有一个外部xa事务。4、清理保存点列表,每个语句实际都会有一个savepoint(保存点),保存点作用是为了可以回滚到事务的任何一个语句执行前的状态,由于事务都已经提交了,所以保存点列表可以被清理了。//trx_undo_set_state_at_prepare调用。

2024-05-26 08:18:02 559

原创 MySQL存储过程

因为存储过程是预编译的。"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。(5).作为一种安全机制来充分利用:通过对执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

2024-05-26 08:16:45 285

原创 MySQL binlog日志

Pos: 11308 ----------------------------------------------------------> pos起始点:11308(即:上行的pos结束点)Server_id: 1 --------------------------------------------------------------> 标识是由哪台服务器执行的。INSERT INTO `team2` VALUES (0,345,'asdf8er5') ---> 执行的sql语句。

2024-05-26 08:14:47 982

原创 mysqldump 导出中文乱码

用命令:mysqldump -uroot -p test --default-character-set=utf8 > c1.sql 重新导出数据库,结果仍然是乱码。接下来只导出test数据库的表结构,命令:mysqldump -uroot -p -d test > c1.sql。新建一个测试数据库,将导出有乱码问题的数据库导入,结果linux下查看,也无中文乱码问题。这时候,猜测是不是数据库的字符集的编码有问题,然后进入数据库,再次导出,显示正常,无中文乱码。打开来看,显示正常,无乱码。

2024-05-25 08:56:50 804 1

原创 mysqldump的实现原理

但这样做,就无法实现对所有表的一致性备份。可见,如果仅是START TRANSACTION,事务2的insert操作提交后,session 1可见(注意,可见的前提是session 2的insert操作在session 1的select操作之前)3. mysqldump只适合放到业务低峰期做,如果备份的过程中数据操作很频繁,会造成Undo表空间越来越大,undo表空间默认是放到共享表空间中的,而ibdata的特性是一旦增大,就不会收缩。而热备指的是在线热备,即在不关闭数据库的情况下,对数据库进行备份。

2024-05-25 08:54:38 1145

原创 mysqldump参数详细说明

等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.可以使用选项:--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keys。开始导出前,锁定所有表。

2024-05-25 08:52:38 457

原创 MySQL insert插入数据

加我微信公众号免费学:【DB哥】文末有MySQL高级课程目录INSERT语句有两种语法形式,分别是INSERT..VALUES....语句和INSERT...SET...语句。

2023-05-04 09:16:34 5064

原创 MySQL WHERE 子句

加我微信公众号免费学:DB哥文末有MySQL高级课程目录使用where子句对表中的数据筛选,结果为true的行会出现在结果集中,语法如下:select * from 表名 where 条件;

2023-04-27 16:01:28 406

原创 mysql面试题

MySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。索引是存储引擎用于提高数据库表的访问速度的一种数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中,它是占用物理空间的。如果 SQL 语句中用到了组合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个组合索引去进行匹配。

2023-04-26 16:15:08 933

原创 MySQL是什么

MySQL 的安装目录包含一些子目录以及一些后缀名为.ini的配置文件。mysql安装教程MySQL目录结构MySQL目录结构MySQL 5.7 的 Data 目录和 my.ini 文件有时并不放在 MySQL 的安装目录下,而是在下(如上图所示)。一般情况下,C 盘下的 ProgramData 目录是隐藏的,需要取消隐藏。MySQL 安装目录的作用。bin 目录:用于放置一些可执行文件,如 mysql.exe、mysqld.exe、mysqlshow.exe 等。docs 目录:存放一些文档。

2023-04-26 16:02:16 360

原创 MySQL数据类型-视频+图文详解

MySQL数据类型与性能(1)关注微信公众号免费学:【DB哥】文末有MySQL高级课程目录。

2023-04-26 10:24:50 435

原创 MySQL索引-视频+图文详解

因为现在使用的mysql默认存储引擎是Innodb,所以本篇文章重点讲述Innodb下的索引, 顺带简单讲述其他引擎。希望小伙伴们能通过这片文章对mysql的索引有更加清晰的认识,废话不多说,我们开始吧。首先,我们先带着一些问题来看接下来的内容。索引是个什么东西?我们可以创建哪些索引?哪些字段适合建立索引呢?索引是不是越多越好呢?为什么我们不建议使用uuid、身份证号等数据做为主键?为什么不建议使用select * from table?

2023-04-26 09:45:08 510

原创 MySQL安装教程-视频+图文超详细

DB哥手把手带你安装MySQL5.7.26关注公众号免费学:DB哥文末有MySQL高级课程目录。

2023-04-25 17:15:15 445

原创 MySQL主从复制

关注公众号免费学:DB哥文末有MySQL高级课程目录。

2023-04-25 15:09:33 235

原创 mysqldump

因为你走弯路了,没有系统的规划,碎片化的学习,让你对MySQL没有一个整体的认知,而且没有人给你引路指导、纠错,让你很难有进步。不同数据库表的导出状态可以完全不同。如果你希望你的导出和日志刷新发生在同一个确定的时刻,你需要使用–lock-all-tables,或者–master-data配合–flush-logs。该选项将打开-lock-all-tables 选项,除非-single-transaction也被指定。与-tab选项一起使用,不能用于-databases和-all-databases选项。

2023-04-25 15:02:47 208

原创 mysql命令

因为你走弯路了,没有系统的规划,碎片化的学习,让你对MySQL没有一个整体的认知,而且没有人给你引路指导、纠错,让你很难有进步。这是最基本的索引,它没有任何限制,比如上文中为title字段创建的索引就是一个普通索引,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。如果是组合索引,则列值的组合必须是唯一的,创建方法和普通索引类似。内连接:select * from 表名1 inner join 表名2 on 表名1.xh=表名2.xh where 条件;

2023-04-25 14:54:20 96

原创 MySQL数据库

在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。对于非关系型数据库即NoSQL数据库,以数据集的方式,把大量的数据集中存储在一起,类似于键值对、图结构或者文档,比较主流的有redis,HBase,MongoDb,memcache等产品,通常都采用开源的方式,。因为你走弯路了,没有系统的规划,碎片化的学习,让你对MySQL没有一个整体的认知,而且没有人给你引路指导、纠错,让你很难有进步。

2023-04-25 14:46:33 1844

原创 mysql面试题

  一、为什么用自增列作为主键    1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。    如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。    如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。    2、如果表使用自增主键,那么每次插入新的记录,记录就会顺序

2021-07-18 22:36:17 198 1

原创 mysql数据库操作

  查看所有的数据库    show databases;    进入数据库    use 数据库名;    创建数据库    create database 数据库名 default charset utf8;    查看当前使用的数据库    select database();    删除数据库    drop database 数据库名;  安装mysql:http://anzhuang.cuohei.com/  查看数据库的表    show table

2021-07-06 20:06:39 68

原创 mysql表的操作

 创建表    create table 表名 (列名1 数据类型,列名2 数据类型) engine=innodb default charset=utf8;    实例:    #创建表t1,id列为int类型,不能为空。且自增;name列为char类型,不超过10个字符    create table t1(id int not null auto_increment primary key,name char(10));    查看表的结构    desc 表名;    向

2021-07-06 20:06:02 77

原创 MySQL常见的数据类型

 mysql的数据类型:数值型、日期/时间、字符串类型  安装mysql:http://down.cuohei.com/  tinyint:小整数,数据类型用于保存一些范围的整数数值范围,MySQL中无布尔值,使用tinyint(1)构造    int:整数    varint:大整数    float:单精度浮点数,数值越大越不准确    double:双精度浮点数,数值越大月不准确    char:用于表示固定长度的字符串,可以包含最多达255个字符    varchar:用

2021-07-06 20:05:23 109

原创 mysql无法命中索引的情况

 1、like "xx"    2、使用函数    3、or    当or条件中有未建立索引的列时才失效    一下情况还是会走索引(id和email是索引):    select * from tb1 where id =1 or name = "kkk" and email = "123456";  安装mysql:http://fix.cuohei.com/  4、类型不一致    如果是字符串类型,传入条件时必须用括号括起来    5、!=    如果是主键,还是

2021-07-06 20:04:47 606

原创 mysql数据库中常用的概念

 (1)字段:表中的一列,(也叫属性);    (2)记录:表中的一行,(也叫元组);    (3)关键字:一组可以唯一标识记录的字段,(能根据它快速分类,检索到目的数据的关键词);    (4)域:字段的取值范围,(即某一列的取值限制);    (5)关系:就是数据库的表,(即数据库的表名);    (6)关系模式:定义关系的描述叫关系模式,通常表示为:表名(字段1,字段2,……),(也叫表结构);    (7)事务:是作为单个逻辑单元执行的一系列操作,(也就是一组不可分割的sql

2021-07-06 20:04:04 107

原创 常见的mysql命令

  登录    mysql -uroot -p密码;    查看数据库    show databases;    创建数据库    create database 数据库名;    使用某个数据库    use 数据库名;    查看当前数据库的表    show tables;  安装mysql:http://mysql.cuohei.com/    初始化数据    source sql脚本路径;    当一个文件的扩展名为.sql,并且该文件中编

2021-07-06 20:03:25 71

原创 mysql知识点

  1、MySQL的复制原理以及流程    基本原理流程,3个线程以及之间的关联:    主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;    从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中;    从:sql执行线程——执行relay log中的语句;    2、MySQL中myisam与innodb的区别:    1>.InnoDB支持事物,而

2021-07-06 20:02:47 284

原创 MySQL函数

  在此,先准备测试数据,代码如下:    -- 创建数据库    DROP DATABASE IF EXISTS mydb;    CREATE DATABASE mydb;    USE mydb;    -- 创建student表    CREATE TABLE student (    sid CHAR(6),    sname VARCHAR(50),    age INT,    gender VARCHAR(50) DEFAULT 'male'   

2021-07-05 21:00:49 169

原创 SQL简述

  1.SQL的概述    Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。mysql安装请参考:http://www.runbulls.com/    2.SQL的优点    1、简单易学,具有很强的操作性    2、绝大多数重要的数据库管理系统均支持SQL

2021-07-05 20:52:45 100

原创 MySQL数据库的三范式

  1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。    2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。    3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列

2021-07-05 20:51:37 111

原创 MySQL删除数据

  在MySQL通过DELETE语句删除数据表中的数据。在此,我们先准备一张数据表,代码如下:    -- 创建学生表    create table student(    id int,    name varchar(30),    age int,    gender varchar(30)    );  MySQL安装请参考:http://anzhuang.cuohei.com/    -- 插入数据    insert into student (id,n

2021-07-05 20:49:57 8150

原创 MySQL数据表简单查询

  1.简单查询概述    简单查询即不含where的select语句。在此,我们讲解简单查询中最常用的两种查询:查询所有字段和查询指定字段。  mysql安装请参考:http://shujuku.cuohei.com/  在此,先准备测试数据,代码如下:    -- 创建数据库    DROP DATABASE IF EXISTS mydb;    CREATE DATABASE mydb;    USE mydb;    -- 创建student表    CREAT

2021-07-05 20:49:22 1152

原创 MySQL数据库、数据表的基本操作

  1.数据库的基本操作    MySQL安装完成后,要想将数据存储到数据库的表中,首先要创建一个数据库。创 建数据库就是在数据库系统中划分一块空间存储数据,语法如下:    create database 数据库名称;    创建一个叫db1的数据库MySQL命令:    -- 创建一个叫db1的数据库    show create database db1;    创建数据库后查看该数据库基本信息MySQL命令:    show create database db1;..

2021-07-05 20:48:10 432

原创 MySQL数据表插入数据

  在MySQL通过INSERT语句向数据表中插入数据。在此,我们先准备一张学生表,代码如下:    create table student(    id int,    name varchar(30),    age int,    gender varchar(30)    );  安装mysql请参考:http://xiazai.runbulls.com/    1. 为表中所有字段插入数据    每个字段与其值是严格一一对应的。也就是说:每个值、值的顺序、值的

2021-07-05 20:47:20 7834

原创 MySQL更新数据update

  在MySQL通过UPDATE语句更新数据表中的数据。在此,我们将就用六中的student学生表    1. UPDATE基本语法    UPDATE 表名 SET 字段名1=值1[,字段名2 =值2,…] [WHERE 条件表达式];    在该语法中:字段名1、字段名2…用于指定要更新的字段名称;值1、值 2…用于表示字段的新数据;WHERE 条件表达式 是可选的,它用于指定更新数据需要满足的条件    2. UPDATE更新部分数据    示例:将name为tom的记录的age设

2021-07-05 20:46:25 2577

原创 mysql安装教程--图文讲解超详细

1.mysql下载①进入mysql官方网站:https://www.mysql.com/ 点击进入DOWNLOADS下载页面②进入下载页面后,找到mysql社区版本MySQL Community (GPL) Downloads点击进入③进入社区版页面后,进行如下点击④进入后,点击mysql版本归档页面⑤进入mysql版本归档页面后选择你所需要的mysql版本、操作系统及系统版本,然后点击download即可下载2.mysql安装规范  MySQL安装方式:

2021-06-27 22:49:37 154

原创 MySQL安装配置教程

1.mysql下载①进入mysql官方网站:https://www.mysql.com/ 点击进入DOWNLOADS下载页面②进入下载页面后,找到mysql社区版本MySQL Community (GPL) Downloads点击进入③进入社区版页面后,进行如下点击④进入后,点击mysql版本归档页面⑤进入mysql版本归档页面后选择你所需要的mysql版本、操作系统及系统版本,然后点击download即可下载2.mysql安装规范  MySQL安装方式:推荐使用二进制安.

2021-06-26 22:47:12 95

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除