sql是后端开发人员经常碰到的问题,我们经常会写这样的sql:select name,id from student where id=12 order by id desc,把这条sql放到数据库中数据库便会给我们返回执行结果,那么有没有好奇这条sql是怎么执行的呐,今天我们就揭开这个神秘的面纱。以mysql为例
一、前言
都知道mysql作为数据库存储系统,可以为我们提供数据存储的功能,同时提供了查询接口供我们去查询数据,从这方面来说,mysql很像一个业务系统,只不过mysql处理的是各种各样的关系型数据。提交给mysql的sql语句是一门语言,类似于常用的java语言,只不过sql语言仅仅是数据库系统可以识别而已,既然是一门语言那么数据库就会去解析去处理,这个处理的过程就是今天要分享的sql的执行顺序。
二、详述
这里有这么一条简单的sql语句
select id,name,address from student where name like '%li%' order by id desc
其执行结果如下,
今天就来分析这个简单的sql的执行顺序。
2.1、from
mysql收到sql语句后,之前的语法解析、语义分析这里暂时不解释,直接分析sql的执行。
第一步是执行from后的语句,也就是加载表中的数据,我们都知道表中的数据是存储在磁盘上的,这里就是把表中的数据加载到内存中,把所有的数据均加载出来,即下面的数据
这时会形成一个表或者称为数据集称为T1
2.2、where
在加载完成以后,便会执行where条件,即从T1中选择符合条件的数据,这里的条件是name like '%li%',也就是name中包含li的数据,即下面的数据
这时形成一个表记为T2
2.3、select
在T2的基础上进行列的选择,也就是执行select后的操作,这里选择的是id name address三列,即下面的数据
这时形成一个表记为T3
2.4、order by
在T3的基础上执行order by操作,这里按照id倒序,即下面的数据
这时形成一个表记为T4
到这里我们的select id,name,address from student where name like '%li%' order by id desc 这样一条sql便执行完成,mysql便会把执行结果返回给用户。
三、总结
本文分析了一条简单sql的执行顺序,通过这样的过程可以很清楚的了解mysql的sql执行原理,进一步加深对sql的理解,接下来会继续为大家分享有关sql执行顺序的例子,希望大家喜欢。