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执行顺序的例子,希望大家喜欢。

最新文章

  1. 设计模式-1-概要(c#版)
  2. python 04
  3. SCRUM:第一天任务实现情况
  4. MySQL数据库 安装图解
  5. [codeforces 325]B. Stadium and Games
  6. WCF自定义地址路由映射(不用svc文件)
  7. DP Hrbust1186青蛙过河
  8. dispatch_async 子线程,主线程的简单用法
  9. WPF datagrid 如何隔行变色
  10. TROUBLE SHOOTING: FRM-30425
  11. 与众不同 windows phone (26) - Contacts and Calendar(联系人和日历)
  12. android从中国天气网获取天气
  13. PHP标准库(SPL)- SplDoublyLinkedList类(双向链表)
  14. 如何优雅地运用 Chrome (Google)
  15. C#中抽象类和接口的区别3
  16. C# 实现Html转JSON
  17. Ubuntu sudo 免密码之 sudoers 修改
  18. jjava:将jar包引入环境变量的一个骚操作以及因此搞出来的扑街问题
  19. [C语言]易错知识点、小知识点复习(1)
  20. WebService的讲解 和 CXF 的初步使用

热门文章

  1. final 关键字,你想知道的都在这里
  2. php检测数组长度的函数sizeof count
  3. Python3-sqlalchemy-orm 分组统计
  4. TCP通信的实现代码
  5. IP头详解
  6. python3 spider [ urllib.request ]
  7. servlet请求转发于重定向
  8. 浅谈VMware的NAT模式
  9. Selenium系列5-XPath路径表达式
  10. UVA 11853 Paintball(几何数学+DFS)