MySQL基础————SQL语句的执⾏顺序与LIMIT⼦句
引⾔
到⽬前为⽌,已经总结了常见的SQL⼦句,包括 SELECT 、FROM、JOIN ... ON、WHERE、GROUP BY、HAVING、ORDER BY。
虽然SQL的书写顺序是固定的,但在MySQL引擎中执⾏的顺序并不完全和书写顺序⼀致。除了上述这些⼦句,下⾯将会介绍另⼀个⽐较常⽤的⼦句 LIMIT ,并且总结⼀下SQL 语句的执⾏顺序。
⼀、LIMIT ⼦句
LIMIT ⼦句⽤于限制查询结果的数量,也常常作为⽹站页⾯展⽰时分页查询的基础⽀持。
LIMIT ⼦句可以接收 1 个参数,或 2 个参数。
当接收 1 个参数时,表⽰仅输出指定的条数,⽐如,我们查询员⼯表⾥薪酬⼤于平均⼯资的员⼯信息,然后按⼯资降序,取前两个:
⾸先查薪⽔⼤于平均⼯资的员⼯信息:ajax 代替 ifream后 页面如何在加载
java集合结构图
SELECT * FROM emp
WHERE salary > (
SELECT AVG(salary) FROM emp
)
然后,根据⼯资降序,并选出头两个:
SELECT * FROM emp
mysql语句的执行顺序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 studenthtml是一种什么文件
ORDER BY class_id, stu_age
LIMIT 10, 10
于是,就有了初步的分页效果。通过总结,我们也可以得出与页⾯分页信息有这样的关系:
LIMIT  (pageNum - 1) * size, size
其中,pageNum 代表第⼏页,从第⼀页开始,这是⼀个页⾯给⽤户展⽰的信息,肯定不会告诉⽤户要从第 0 页开始。size 代表每页显⽰的记录条数,这个值可以由⽤户⾃定义,也可以由产品固定写死,具体根据实际需要来设计。总之,这个公式说明了实际业务场景中的页号、记录条数与 LIMIT ⼦句的关系,可以通过它来设计分页功能。
⼆、SQL 语句执⾏顺序
crontab任务是哪个用户到⽬前为⽌,⽐较常见的⼦句,及其内部执⾏顺序如下:
第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 ⼦句的总结。欢迎⽂末留⾔。
json解析成字典

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。