搭建网站php源码,百度小程序跟做网站,用什么网站可以做,他达拉非是什么药引言
到目前为止#xff0c;已经总结了常见的SQL子句#xff0c;包括 SELECT 、FROM、JOIN ... ON、WHERE、GROUP BY、HAVING、ORDER BY。
虽然SQL的书写顺序是固定的#xff0c;但在MySQL引擎中执行的顺序并不完全和书写顺序一致。除了上述这些子句#xff0c;下面将会介…引言
到目前为止已经总结了常见的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 内部的实际执行顺序。
粗体标出的 SELECT 、FROM、WHERE 几乎是每个SQL 都会用到但不绝对有时候甚至一个 SELECT 就是一条SQL。
其中唯一与书写顺序不同的执行就是 SELECT 子句了虽然写在SQL语句的最前面执行顺序却相对靠后。而其中大部分执行步骤与书写步骤保持一致。
综上就是关于SQL 语句执行顺序 和 LIMIT 子句的总结。欢迎文末留言。