首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL一条SQL语句的执行过程

一条select语句执行流程 第一步:连接器 连接器负责跟客户端建立连接、获取权限、维持和管理连接。如果用户名密码验证通过后,连接器会到权限表里面查出你拥有的权限。...第二步:查询缓存 当获取连接后,一条SELECT语句会先去查询缓存,看之前是否执行过。如果获取到缓存后就执行返回,不然继续后面的步骤。...MYSQL8版本直接将查询缓存的整块功能删掉了。 第三步:分析器 分析器首先会做“词法分析”,MYSQL会识别出SQL语句里面的字符串是什么以及代表什么。...图片 一条update语句执行流程 update语句除了会执行上面的五步,还会涉及两个重要的日志模块。...两个重要的日志模块 redo log (重做日志) redo log 是innodb所特有的,当有一条更新语句时,innoDB引擎会先把记录写到redo log中,然后更新内存,这时候更新就算完成了。

22920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL ——select语句 一条龙服务

    目录 基本语法 使用表达式对查询的列进行运算 select语句中使用as语句 where字句中用到的运算符                                                                      ... 前言   小王同学已经开始输出数据库了 不懂insert的友友们可以看看这篇保姆级insert的用法 友友们 大家好呀 我是你们的小王同学  今天给大家带来的是MySQL select一条龙服务...FROM       tablename select语句中使用as语句 SELECT  column_name as 别名 from 表名  小王想统计下同学们的总分 该如何操作呢  其实用sql...where字句中用到的运算符 我们先查询几条语句!...NULL 判断是否为空 逻辑运算符 and 多个条件是否成立 or 多个条件任一成立 not 不成立,例如where not (salary>100); 以上就是小王同学给大家带来的select一条龙服务

    42310

    尴尬的bug:一条查询语句MySQL崩溃

    这是学习笔记的第 2028 篇文章 前几天睡觉前接到前同事的一个信息,说有个奇怪的SQL问题,想让我帮忙看看,给点建议,我以为是一种非常复杂的SQL,他的反馈能让MySQL崩溃。...建表语句如下: CREATE TABLE `t10` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` varchar(10) DEFAULT NULL...union (select sub_tmp.id,sub_tmp.id from t10_sub as sub_tmp); Empty set (0.00 sec) 而奇怪的是如果查看执行计划,则整条语句会导致当前会话崩溃...server during query 当然这个操作是可以复现,通过这个 写入1条数据 mysql> insert into t10(pid) values('test'); mysql> insert...经过测试,目前有两种,一种是去除union的子句,一种是对于order by的部分做下调整,原来是order by new_t10+1,现在修改为order by new_t10. mysql> explain

    2.2K30

    修改mysql登录密码与sql语句介绍

    修改mysql登录密码: 在使用数据库服务器过程中可能会因为种种原因忘记了登录密码,或者需要使用别人的数据库服务器,别人却忘记了登录密码等等。...忘记密码有两种方式可以解决,一是通过sql语句修改登录密码: ?...二是通过修改mysql 安装目录下的my.ini配置文件,在配置文件中找到[mysqld],然后在下面写上一句:sikp-grant-tables。...Sql语句类型: DDL:结构创建语句,能够创建、删除、修改、索引、视图、存储过程,塑造结构 DML:数据更新语句,专门操作数据,而且操作有限,基本操作表格里面的数据。...DML的分支DQL:查询语句,专门负责查询 DCL:控制、操作数据库的语句 基本语句: Show databases; 显示数据库服务器中有多少个数据库。

    3.3K30

    MySQL一条SQL语句是如何执行的?

    例如一个简单的SQL语句mysql> select * from T where ID=10; ? 在 MYSQL 内部是怎么执行的呢?我们从头梳理一下。...client 和 server 连接完成了,向 server 发送 sql 请求,连接器不会直接处理,会转给分析器,对这条 sql 进行词法分析,例如识别出来“select”关键字,知道这是一个查询语句...优化器 经过分析器之后,MySQL就知道要做什么了,然后是怎么做,由优化器完成。...至此,这个语句就执行完了。 MySQL 整体结构 ? 总体来说,MySQL 分为2个层次:server 层、存储引擎层。...其实 server 层中还有一个查询缓存,一个语句进来后先看是否在缓存中有,如果有就直接返回,如果没有再走分析器,但由于实际环境中查询缓存的作用很小,上面的描述中就没有提及,而且在 MySQL 8 中已经去掉了查询缓存

    1.5K20

    mysql一条insert语句批量插入多条记录

    这种方式只能够一次插入一条数据,要想插入多条数据,就得多次调用此sql语句,意味着多次与数据库建立连接。...幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录。这并不是标准的SQL语法,因此只能在MySQL中使用。...一条INSERT语句插入批量数据的写法: INSERT INTO [表名]([列名],[列名]) VALUES ([列值],[列值])), ([列值],[列值])), ([列值],[列值...])); 可以看到,和原来的常规INSERT语句的区别,仅仅是在VALUES 后面增加值的排列,每条记录之间用英文输入法状态下的逗号隔开,是不是so easy。...建议: 在程序中,插入批量数据时,最好使用这种通过一条INSERT语句来一次性插入的方式。这样可以避免程序和数据库建立多次连接,从而增加服务器负荷。

    5.1K20

    一条SQL语句MySQL中如何执行的

    前两天发了一条SQL慢的原因有哪些,在那篇文章我没有说到优化器之类的,我觉得如果配合一条SQL是如何执行的,会更好,所以特地找了一篇。...3) 分析器 MySQL 没有命中缓存,那么就会进入分析器,分析器主要是用来分析 SQL 语句是来干嘛的,分析器也会分为几步: 第一步,词法分析,一条 SQL 语句有多个字符串组成,首先要提取关键字,比如...二 语句分析 2.1 查询语句 说了以上这么多,那么究竟一条 sql 语句是如何执行的呢?其实我们的 sql 可以分为两种,一种是查询,一种是更新(增加,更新,删除)。...2.2 更新语句 以上就是一条查询 sql 的执行流程,那么接下来我们看看一条更新语句如何执行的呢?...sql 语句如下: update tb_student A set A.age='19' where A.name=' 张三 '; 我们来给张三修改下年龄,在实际数据库肯定不会设置年龄这个字段的,不然要被技术负责人打的

    3.5K20

    【SQL】Mysql一条sql语句的执行过程

    接下来,通过一条sql语句的执行来深入了解MySQL各个组件功能以及其作用。...至此,一条查询语句的执行流程已经非常清晰了,同时也认识了MySQL的整个体系结构以及各组件的作用。最后用一张图来收尾本文的核心内容并做总结。...一条查询SQL语句的执行流程: 客户端通过连接器连接MySQL服务。 连接成功后向SQL接口发送SQL语句请求。...2.2 更新语句 以上就是一条查询 sql 的执行流程,那么接下来我们看看一条更新语句如何执行的呢?...sql 语句如下: update tb_student A set A.age='19' where A.name=' 张三 '; 我们来给张三修改下年龄,在实际数据库肯定不会设置年龄这个字段的,不然要被技术负责人打的

    45010

    Mysql常用sql语句(23)- update 修改数据

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 update 也是DML语句哦(数据操作语言) update...的语法格式 UPDATE SET 字段1=值1 [,字段2=值2… ] [WHERE 子句 ] [LIMIT 子句] 语法格式说明 多指定多个字段,需要用 隔开 , 如果修改的字段有默认值...,可以用 default 来设置字段的值,如: ,这样就会把字段的值修改成默认值 name =default where 就不用多说了,一般 update 数据都会指定条件 添加 limit 是为了限制被修改的行数...修改单个字段的栗子 UPDATE emp SET is_enable = 0 WHERE id = 1 修改多个字段的栗子 UPDATE emp SET is_enable = 0, NAME...= "修改的名字", dept_id = 2 WHERE id = 1

    1.1K20

    Mysql进阶篇--一条sql查询语句如何执行

    在开发阶段我们经常使用查询语句,但是一条语句的查询是如何执行的呢,如下语句 mysql> select * from depart; 日常中,我们只看到返回一条或多条结果,并没有过多的去关注查询语句具体要执行那些流程...显示指定查询缓存,也可以使用参数query_cache_type设置成DEMAND,禁止使用缓存 select SQL_CACHE * from dpet; 分析器 一条查询语句在分析其中是要进行语法分析和词法分析...,词法分析就是要分析你的字符串代表的是什么,如select 就是代表查询的意思,字符串ID分析就是对应你的列ID, 语法分析是指当你的的sql语句是够符合sql的规范,如下面使用下面语句 mysql...,接下来,我们就要进行优化器的处理,一条语句的执行是有多个索引的,到底执行那个索引是由优化器来决定,比如下面的语句 select * from A a inner join B b on a.id=...执行器 分析器分析你要干什么,优化器分析你要怎么执行,真正的执行是在执行器中执行 一条语句的执行,在判断查询的表是否有权限,如果没有返回报错,如果有权限直接打开表,然后根据表的引擎定义,使用引擎的查询接

    95720

    一条SQL语句MySQL中是如何执行的

    来源:http://t.cn/E6U9Z9T ---- 概览 本篇文章会分析下一个sql语句mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的。...分析器 mysql 没有命中缓存,那么就会进入分析器,分析器主要是用来分析SQL语句是来干嘛的,分析器也会分为几步: 第一步,词法分析,一条SQL语句有多个字符串组成,首先要提取关键字,比如select...二、语句分析 2.1 查询语句 说了以上这么多,那么究竟一条sql语句是如何执行的呢?其实我们的sql可以分为2中,一种是查询,一种是更新(增加,更新,删除)。...2.2 更新语句 以上就是一条查询sql的执行流程,那么接下来我们看看一条更新语句如何执行的呢?...sql语句如下: update tb_student A set A.age='19' where A.name='张三'; 我们来给张三修改下年龄,在实际数据库肯定不会设置年龄这个字段的,不然要被技术负责人打的

    2K20

    MySQL实战 -- 一条SQL查询语句是如何执行的?

    比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在...这就意味着,一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。...而对于你确定要使用查询缓存的语句,可以用 SQL_CACHE 显式指定,像下面这个语句一样: mysql> select SQL_CACHE * from T where ID=10; 需要注意的是,MySQL...分析器 如果没有命中查询缓存,就要开始真正执行语句了。首先,MySQL 需要知道你要做什么,因此需要对 SQL 语句做解析。 分析器先会做“词法分析”。...你输入的是由多个字符串和空格组成的一条 SQL 语句MySQL 需要识别出里面的字符串分别是什么,代表什么。 MySQL 从你输入的"select"这个关键字识别出来,这是一个查询语句

    1.5K30

    SQL修改语句

    如果我们要修改数据库中表的数据,这个时候我们就要使用到UPDATE语句。...子句中写出需要更新的行的筛选条件id=100: 即UPDATE employees SET last_name=‘大哥’, salary=54000 WHERE employee_id=100; –修改前...: –修改后: 在这里我们发现UPDATE语句的WHERE条件和SELECT语句的WHERE条件其实是一样的,因此完全可以一次更新多条记录: UPDATE employees SET last_name...=‘TEST’, salary=54000 WHERE employee_id>=101 and employee_id<=105; –修改前: –修改后: 在UPDATE语句中,我们在更新字段时还可以使用表达式...所以,在执行UPDATE语句时要非常小心,最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用UPDATE进行更新。

    2K20

    MySQL实战 -- 一条SQL更新语句是如何执行的?

    前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。...那么,一条更新语句的执行流程又是怎样的呢? 之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?...我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c: mysql> create table T(ID int primary key, c int)...接下来,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。...(2)redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。

    82230

    深入学习MySQL 01 一条查询语句的执行过程

    MySQL5.5起,默认使用InnoDB 查询语句的执行过程 sql语句:select * from T where ID = 1 1.连接器 首先需要经过连接器,建立与MySQL的连接,在这里会做身份认证...查询缓存是以键值对的形式保存缓存的,key存储sql语句,value存储查询结果。 ps:建议关闭查询缓存。..."T"为表名,"ID"为列名等等 然后进行"语法分析",判断整个sql语句是否错误,并判断是否存在"T"表,是否存在列"ID" 4.优化器 在这会对SQL语句进行优化,比如索引的选取,多表关联(join...)时连接表的顺序等,然后选取最优的方案生成执行计划 ps:优化器有时也会有出错,比如选错索引 5.执行器 首先判断该用户有无对该表查询的权限,无则直接返回,有则根据执行计划执行SQL语句。...至此,一条查询语句执行完了 参考 《MySQL45讲》 《高性能MySQL》 https://www.cnblogs.com/eyesfree/p/7232559.html

    79530
    领券