- 博客(62)
- 收藏
- 关注
原创 MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。显示这一步所访问数据库中表名称(显示这一行的数据是关于哪张表的),有时不是真实的表名字,可能是简称,例如上面的e,d,也可能是第几步执行的结果的简称。
2024-05-26 08:20:10 376
原创 MySQL事务提交过程
之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称之为内部xa事务(Distributed Transactions),与之对应的还有一个外部xa事务。4、清理保存点列表,每个语句实际都会有一个savepoint(保存点),保存点作用是为了可以回滚到事务的任何一个语句执行前的状态,由于事务都已经提交了,所以保存点列表可以被清理了。//trx_undo_set_state_at_prepare调用。
2024-05-26 08:18:02 441
原创 MySQL存储过程
因为存储过程是预编译的。"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。(5).作为一种安全机制来充分利用:通过对执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
2024-05-26 08:16:45 264
原创 MySQL binlog日志
Pos: 11308 ----------------------------------------------------------> pos起始点:11308(即:上行的pos结束点)Server_id: 1 --------------------------------------------------------------> 标识是由哪台服务器执行的。INSERT INTO `team2` VALUES (0,345,'asdf8er5') ---> 执行的sql语句。
2024-05-26 08:14:47 940
原创 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 563
原创 mysqldump的实现原理
但这样做,就无法实现对所有表的一致性备份。可见,如果仅是START TRANSACTION,事务2的insert操作提交后,session 1可见(注意,可见的前提是session 2的insert操作在session 1的select操作之前)3. mysqldump只适合放到业务低峰期做,如果备份的过程中数据操作很频繁,会造成Undo表空间越来越大,undo表空间默认是放到共享表空间中的,而ibdata的特性是一旦增大,就不会收缩。而热备指的是在线热备,即在不关闭数据库的情况下,对数据库进行备份。
2024-05-25 08:54:38 906
原创 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 394
原创 MySQL insert插入数据
加我微信公众号免费学:【DB哥】文末有MySQL高级课程目录INSERT语句有两种语法形式,分别是INSERT..VALUES....语句和INSERT...SET...语句。
2023-05-04 09:16:34 4644
原创 MySQL WHERE 子句
加我微信公众号免费学:DB哥文末有MySQL高级课程目录使用where子句对表中的数据筛选,结果为true的行会出现在结果集中,语法如下:select * from 表名 where 条件;
2023-04-27 16:01:28 353
原创 mysql面试题
MySQL是一个关系型数据库,它采用表的形式来存储数据。你可以理解成是Excel表格,既然是表的形式存储数据,就有表结构(行和列)。行代表每一行数据,列代表该行中的每个值。列上的值是有数据类型的,比如:整数、字符串、日期等等。索引是存储引擎用于提高数据库表的访问速度的一种数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中,它是占用物理空间的。如果 SQL 语句中用到了组合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个组合索引去进行匹配。
2023-04-26 16:15:08 575
原创 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 315
原创 MySQL索引-视频+图文详解
因为现在使用的mysql默认存储引擎是Innodb,所以本篇文章重点讲述Innodb下的索引, 顺带简单讲述其他引擎。希望小伙伴们能通过这片文章对mysql的索引有更加清晰的认识,废话不多说,我们开始吧。首先,我们先带着一些问题来看接下来的内容。索引是个什么东西?我们可以创建哪些索引?哪些字段适合建立索引呢?索引是不是越多越好呢?为什么我们不建议使用uuid、身份证号等数据做为主键?为什么不建议使用select * from table?
2023-04-26 09:45:08 465
原创 mysqldump
因为你走弯路了,没有系统的规划,碎片化的学习,让你对MySQL没有一个整体的认知,而且没有人给你引路指导、纠错,让你很难有进步。不同数据库表的导出状态可以完全不同。如果你希望你的导出和日志刷新发生在同一个确定的时刻,你需要使用–lock-all-tables,或者–master-data配合–flush-logs。该选项将打开-lock-all-tables 选项,除非-single-transaction也被指定。与-tab选项一起使用,不能用于-databases和-all-databases选项。
2023-04-25 15:02:47 191
原创 mysql命令
因为你走弯路了,没有系统的规划,碎片化的学习,让你对MySQL没有一个整体的认知,而且没有人给你引路指导、纠错,让你很难有进步。这是最基本的索引,它没有任何限制,比如上文中为title字段创建的索引就是一个普通索引,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。如果是组合索引,则列值的组合必须是唯一的,创建方法和普通索引类似。内连接:select * from 表名1 inner join 表名2 on 表名1.xh=表名2.xh where 条件;
2023-04-25 14:54:20 75
原创 MySQL数据库
在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。对于非关系型数据库即NoSQL数据库,以数据集的方式,把大量的数据集中存储在一起,类似于键值对、图结构或者文档,比较主流的有redis,HBase,MongoDb,memcache等产品,通常都采用开源的方式,。因为你走弯路了,没有系统的规划,碎片化的学习,让你对MySQL没有一个整体的认知,而且没有人给你引路指导、纠错,让你很难有进步。
2023-04-25 14:46:33 1573
原创 mysql面试题
一、为什么用自增列作为主键 1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。 如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。 如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。 2、如果表使用自增主键,那么每次插入新的记录,记录就会顺序
2021-07-18 22:36:17 172 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 61
原创 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 66
原创 MySQL常见的数据类型
mysql的数据类型:数值型、日期/时间、字符串类型 安装mysql:http://down.cuohei.com/ tinyint:小整数,数据类型用于保存一些范围的整数数值范围,MySQL中无布尔值,使用tinyint(1)构造 int:整数 varint:大整数 float:单精度浮点数,数值越大越不准确 double:双精度浮点数,数值越大月不准确 char:用于表示固定长度的字符串,可以包含最多达255个字符 varchar:用
2021-07-06 20:05:23 91
原创 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 555
原创 mysql数据库中常用的概念
(1)字段:表中的一列,(也叫属性); (2)记录:表中的一行,(也叫元组); (3)关键字:一组可以唯一标识记录的字段,(能根据它快速分类,检索到目的数据的关键词); (4)域:字段的取值范围,(即某一列的取值限制); (5)关系:就是数据库的表,(即数据库的表名); (6)关系模式:定义关系的描述叫关系模式,通常表示为:表名(字段1,字段2,……),(也叫表结构); (7)事务:是作为单个逻辑单元执行的一系列操作,(也就是一组不可分割的sql
2021-07-06 20:04:04 84
原创 常见的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 61
原创 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 241
原创 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 139
原创 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 83
原创 MySQL数据库的三范式
1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。 2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。 3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列
2021-07-05 20:51:37 93
原创 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 8091
原创 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 830
原创 MySQL数据库、数据表的基本操作
1.数据库的基本操作 MySQL安装完成后,要想将数据存储到数据库的表中,首先要创建一个数据库。创 建数据库就是在数据库系统中划分一块空间存储数据,语法如下: create database 数据库名称; 创建一个叫db1的数据库MySQL命令: -- 创建一个叫db1的数据库 show create database db1; 创建数据库后查看该数据库基本信息MySQL命令: show create database db1;..
2021-07-05 20:48:10 399
原创 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 7607
原创 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 2530
原创 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 148
原创 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 78
原创 mysql安装配置教程
1.mysql下载①进入mysql官方网站:https://www.mysql.com/ 点击进入DOWNLOADS下载页面②进入下载页面后,找到mysql社区版本MySQL Community (GPL) Downloads点击进入③进入社区版页面后,进行如下点击④进入后,点击mysql版本归档页面⑤进入mysql版本归档页面后选择你所需要的mysql版本、操作系统及系统版本,然后点击download即可下载2.mysql安装规范 MySQL安装方式.
2021-06-24 21:23:55 109
原创 mysql安装教程
1.mysql下载①进入mysql官方网站:https://www.mysql.com/ 点击进入DOWNLOADS下载页面②进入下载页面后,找到mysql社区版本MySQL Community (GPL) Downloads点击进入③进入社区版页面后,进行如下点击④进入后,点击mysql版本归档页面⑤进入mysql版本归档页面后选择你所需要的mysql版本、操作系统及系统版本,然后点击download即可下载2.mysql安装规范 MySQL安装方式.
2021-06-24 21:22:43 579
原创 mysql下载安装教程
1.mysql下载①进入mysql官方网站:https://www.mysql.com/ 点击进入DOWNLOADS下载页面②进入下载页面后,找到mysql社区版本MySQL Community (GPL) Downloads点击进入③进入社区版页面后,进行如下点击④进入后,点击mysql版本归档页面⑤进入mysql版本归档页面后选择你所需要的mysql版本、操作系统及系统版本,然后点击download即可下载2.mysql安装规范 MySQL安装方式.
2021-06-24 21:22:01 3105
原创 mysql5.7安装
1.mysql下载①进入mysql官方网站:https://www.mysql.com/ 点击进入DOWNLOADS下载页面②进入下载页面后,找到mysql社区版本MySQL Community (GPL) Downloads点击进入③进入社区版页面后,进行如下点击④进入后,点击mysql版本归档页面⑤进入mysql版本归档页面后选择你所需要的mysql版本、操作系统及系统版本,然后点击download即可下载2.mysql安装规范 MySQL安装方式.
2021-06-24 21:21:32 71
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人