引言

到目前为止,已经总结了常见的SQL子句,包括 SELECT 、FROM、JOIN ... ON、WHERE、GROUP BY、HAVING、ORDER BY。

虽然SQL的书写顺序是固定的,但在MySQL引擎中执行的顺序并不完全和书写顺序一致。除了上述这些子句,下面将会介绍另一个比较常用的子句 LIMIT ,并且总结一下SQL 语句的执行顺序。

一、LIMIT 子句

LIMIT 子句用于限制查询结果的数量,也常常作为网站页面展示时分页查询的基础支持。

LIMIT 子句可以接收 1 个参数,或 2 个参数。

当接收 1 个参数时,表示仅输出指定的条数,比如,我们查询员工表里薪酬大于平均工资的员工信息,然后按工资降序,取前两个:

首先查薪水大于平均工资的员工信息:

SELECT * FROM emp
WHERE salary > (SELECT AVG(salary) FROM emp
)

然后,根据工资降序,并选出头两个:

SELECT * FROM emp
WHERE salary > (SELECT AVG(salary) FROM emp
)
ORDER BY salary DESC
LIMIT 2

一般,我们使用 LIMIT 子句都会配合 ORDER BY 进行某种业务要求上的排序,然后再进行限制。

大概 LIMIT 子句接收两个参数的时候,表示从某个 index 下标开始,查询指定条数,格式是:

LIMIT record_index, size 

其中 record_index 是从 0  开始的,也就是说,表或结果集中的第一条记录就是第 0 条,第二条是 第 1 条,依此类推。size 代表查询出来的数量。

比如下面这条语句:

SELECT * FROM student
ORDER BY class_id, stu_age
LIMIT 0, 10

这句SQL的含义是将 LIMIT 子句之前查询出来的结果集(排序之后),从第 0 条开始,显示 10 条,即第 0 到第 9 条。

如果想再进行 10 条输出,那么就可以改变 record_index 的值,继续往后输出:

SELECT * FROM student
ORDER BY class_id, stu_age
LIMIT 10, 10

于是,就有了初步的分页效果。通过总结,我们也可以得出与页面分页信息有这样的关系:

LIMIT  (pageNum - 1) * size, size

其中,pageNum 代表第几页,从第一页开始,这是一个页面给用户展示的信息,肯定不会告诉用户要从第 0 页开始。size 代表每页显示的记录条数,这个值可以由用户自定义,也可以由产品固定写死,具体根据实际需要来设计。总之,这个公式说明了实际业务场景中的页号、记录条数与 LIMIT 子句的关系,可以通过它来设计分页功能。

二、SQL 语句执行顺序

到目前为止,比较常见的子句,及其内部执行顺序如下:

第7步:SELECT 查询列表

第1步:FROM 表名

第2步:JOIN  关联表

第3步:ON  关联条件

第4步:WHERE 筛选条件

第5步:GROUP BY  分组字段

第6步:HAVING 分组后筛选条件

第8步:ORDER BY 排序字段

第9步:LIMIT  输出限制

上面的子句列表中,冒号右侧是 SQL 各个子句的书写顺序,冒号左侧的 “第 xx 步” 是 MySQL 内部的实际执行顺序。

粗体标出的 SELECTFROMWHERE 几乎是每个SQL 都会用到(但不绝对,有时候甚至一个 SELECT 就是一条SQL)。

其中唯一与书写顺序不同的执行就是 SELECT 子句了,虽然写在SQL语句的最前面,执行顺序却相对靠后。而其中大部分执行步骤与书写步骤保持一致。

综上,就是关于SQL 语句执行顺序 和 LIMIT 子句的总结。欢迎文末留言。

MySQL 基础 ———— SQL语句的执行顺序与 LIMIT 子句相关推荐

  1. 【MySQL】九、数据排序(升序 order by ... asc,降序 desc),sql语句的执行顺序

    文章目录 1. 语法 2. 案例 (1)按照工资升序,找出员工名和薪资. (2)按照工资降序,找出员工名和薪资. (3)按照工资的降序排列,当工资相同的时候在按照名字的升序排列. (4)找出员工岗位是 ...

  2. SQL语句的执行顺序以及流程

    目录 1.执行FROM语句 2.执行ON过滤 3.添加外部行 4.执行WHERE过滤 5.执行GROUP BY分组 6.执行HAVING过滤 7.SELECT列表 8.执行DISTINCT子句 9.执 ...

  3. 面试题:SQL语句的执行顺序

    SQL语句的执行顺序,学了才知道还有这么多学问 查询语句都是从 FROM 开始执行的.执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入. 具体解析 FROM 执 ...

  4. SQL SERVER 一个SQL语句的执行顺序

    SQL SERVER 一个SQL语句的执行顺序 原文:SQL SERVER 一个SQL语句的执行顺序 一个SQL 语句的执行顺序 1.From (告诉程序 来自哪张表  如果是表表达式 依旧是如此顺序 ...

  5. Sqlserver,Mysql基础SQL语句

    Sqlserver,Mysql基础SQL语句 SqlServer 建表 修改字段默认值 修改表名 修改字段名 添加字段 例子 更改字段 删除字段 添加表注释 添加字段注释 数据排序 方法一 ROW_N ...

  6. sql语句的执行顺序以及流程(最新,最全,直接用)

    熟练掌握sql语句的执行顺序,才能避免编程中各种bug和错误. 文章目录 一.Select 语句完整的执行顺序 1.from 子句组装来自不同数据源的数据+(ON过滤器)或(JOIN 添加外部行): ...

  7. 关于SQL语句的执行顺序

    首先,要清楚在一select语句中都会用到哪些关键字: -----------select -----------from -----------join -----------where ----- ...

  8. 数据库:SQL语句的执行顺序,及每一步的详细解释

    一.SQL语句的执行顺序举例(sqlServer版): (8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list&g ...

  9. hive 把mysql语句执行_Hive SQL 语句的执行顺序

    提示 Hive SQL 教程 编写中,使用过程中有任何建议,提供意见.建议.纠错.催更加微信 sinbam. 当我们写了一个 sql,但是执行起来很慢,这时如果我们知道这个sql的底层执行流程是怎样的 ...

最新文章

  1. 开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)
  2. JS-JavaScript String 对象-string对象方法1:fromCharCode()、charCodeAt()
  3. FD.io/VPP — VNF 应用场景
  4. php self this parent
  5. 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
  6. linux统计某个目录大小,Linux下统计某个目录的文件个数(转)
  7. 云原生那些顶级开源项目,你都用过哪些?
  8. centos7 安装 JDK环境
  9. 【bzoj 4675】 点对游戏
  10. SSL和数字证书服务慨述(4)
  11. ezd格式文件怎么打开_EPLAN Electric P8 中的 EDZ 文件格式
  12. matlab怎么求过渡矩阵,求过渡矩阵的方法
  13. python整数的用法整理
  14. 51单片机学习入门(三):串口
  15. 扩展卡尔曼滤波EKF进行锂电池SOC估计的C语言版本实现,和matlab版本一样包含定参和FFRLS两种情况
  16. android 7.0刷机教程,【亲测】安卓7.0官方底包线刷教程+刷入第三方recovery+解密+root...
  17. win7计算机系统还原,win7怎么系统还原 还原步骤详解
  18. 处理器仿存带宽_存储系统性能 - 带宽计算
  19. 利器推荐:搜刮一批办公常用软件,你用过哪一款?
  20. 华师大 OJ 3053

热门文章

  1. 保姆级教程,终于搞懂脏读、幻读和不可重复读了!
  2. 多图带你彻底理解Java中的21种锁!
  3. 聊一聊开发常用小工具
  4. Qt6 在线安装图文步骤
  5. KNN算法检测手势动作
  6. include和require区别
  7. char数组拷贝wchar数组
  8. php搜索图片不显示不出来了,PHP CURL采集百度搜寻结果图片不显示问题的解决方法【第1/4页】...
  9. python2.7如何安装库_python 2.7 安装目录python如何连接数据库
  10. 小程序中ajax返回数据,微信小程序调用接口返回数据或提交数据