首页天道酬勤join where 执行顺序,where group by having执行顺序

join where 执行顺序,where group by having执行顺序

张世龙 05-12 18:13 91次浏览

另一方面,SQL查询1 .查询中主要使用六个关键字,其顺序如下:

selectfromwheregroupbyhavingorderby

其中,select和from是必需的,其他关键字是可选的。 这六个关键字的执行顺序与sql语句的写入顺序不同,而是按以下顺序执行:

fromwheregroupbyhavingselectorderby

from :需要从哪个数据表获取数据

where :筛选表中数据的条件

group by :如何将上面过滤的数据分组

having :筛选上述分组数据的条件

select :显示结果集中哪个列或列的计算结果

order by :以什么顺序显示返回的数据

2.from后面的表格关联,从右向左分析的where条件的分析顺序是自下而上的。

也就是说,写SQL语句时,尽可能将数据量少的表配置在最右边进行关联(小的表与大的表一致),将能够筛选小数据的条件配置在where语句的最左边(小的表与大的表一致)。

使用count (列名)时,即使列具有空值,也计算count ) *,但不计算count ) (列名)。

二、数据分组(group by )、选择列a、聚合函数(聚合函数规范) from表名where过滤条件group by列a

group by子句与where条件语句结合使用。 合并后,where在前面,group by在后面。 也就是说,使用where过滤select xx from xx的记录集合,然后使用group by对过滤的结果进行分组。

三.使用having词法筛选分组结果。 语法和where一样。 having条件式需要注意having和where的使用方法的不同。

1.having只能在group by之后用于筛选分组结果。 也就是说,使用having的前提条件是分组。

2.where一定在group by之前,也就是having之前。

3 .在3.where后的表达式中不能使用聚合函数,但可以进行having。

四.如果where、group by、having和order by同时出现在一个查询语句中,则执行顺序和创建顺序为:运行where xx过滤所有表数据并返回第一个结果集。

2 .对第一个结果集使用group by组,并返回第二个结果集。

3 .对第二个绑定运行having xx进行过滤,并返回第三个结果集。

4 .对第三个结果集的每一组数据运行select xx,执行若干组(如果有),然后返回到第四个结果集。

5 .对第四个结果集进行排序。

示例:

要完成复杂的查询语句,需要:

按照从高到低的顺序显示个人平均分在70分以上的学生的名字和平均分,为了尽量提高平均分,计算平均分前不包括分数在60分以下的成绩,也不计算卑贱(jr )的成绩。 分析:

1 .要求显示学生姓名和平均分

因此,确定步骤select s_name,AVG(score ) from student

2 .计算平均分前不包括分数在60分以下的成绩,也不计算卑鄙的人(jr )的成绩

因此,确定步骤where score=60 and s_name!=’Jr’

3 .显示个人平均分

同名学生(同一学生)考了多个科目,按名称分组确定步骤group by s_name 4。 表示个人的平均分在70分以上

因此,确认步骤4havingavg(s_score )=70 )5.是从高到低顺序

因此,确定步骤5顺序avg (s _ score ) desc

五.索引1 .索引是单独的数据库对象,索引也需要维护。

2 .索引可以加快查询速度,但会降低添加/删除速度。

3 .用一定的查询触发并不是越多越好。 什么时候使用索引?

1 )删除更改操作大于查询操作。

2 ) .如果查询语句大于所有语句的三分之一。

创建索引语法: create index索引名on表名(列名) ) ) ) ) ) ) ) ) )。

删除索引语法: drop index索引名称

更多信息请关注公众号:「软件含糊的白猫」关注永不迷失、软件模糊的白猫和他的IT朋友,分享他们的技术见解和生活故事。

sql数据库,sql语句or和and优先级 mysql运算符,c语言逻辑运算符优先级