sql执行顺序(sql执行顺序详解)

本篇文章给大家谈谈sql执行顺序,以及sql执行顺序详解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

SQL的执行顺序,如:( Select,From,Where Group By , Order By)如何的顺序

SQL Select语句完整的执行顺序:

1、from子句组装来自州山不同数据源册扒中的数据;

2、where子句基于指定的条件对记录行进行筛选;

3、group by子句将数据划分为多个分组;

4、使用聚集函数进行计算;

5、使用having子句筛选分组;

6、计算所有此码的表达式;

7、使用order by对结果集进行排序。

8、select 集合输出。

[img]

SQL执行顺序

查询语句中select from where group by having order by的执行顺序

1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 

select--from--where--group by--having--order by 

其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 

与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行 

from--where--group by--having--select--order by, 

from:需要从哪个数据表检索数据 

where:过滤表中数据的条件 

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

having:对上面已经分组的数据进行过滤的条件  

select:查看结果集中的哪个列,或列的计算结果 

order by :按照什么样的顺序来查看返回的数据

2.from后面的表关联,是自右向左解析的 

而where条件的解析顺序是自下而锋猜上的。 

也就是说,在写SQL文的时候,尽量把数据量大的表放在最右边来进行关联, 

而把能筛选出大量数据的条件放在where语句的最下面。

SQL Select语句完整的 执行顺序 【从银郑型DBMS使用者角度】:

1、from子句组装来自不同数据源的数据;

2、where子句基于指定的条件对记录行进行筛选;

3、group by子句将数据划分为多个分组;

4、使用聚集函数进行计算;

5、使用having子句筛选分组;

6、计算所有的表达式;

7、使用order by对结果集进行排序 。

from 子句--执行顺序为从后往前、从右到左

表名(最后面的那个表名为驱动表,执行顺序为从后往前, 所以数据量较少的表尽量放后)

oracle 的解析器按照从右到左的顺序处理,FROM 子句中的表名,FROM 子句中写在最后的表(基础表 driving

table)将被最先处理,即最后的表为驱动表,在FROM 子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3

个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指被其他表所引用的表

多表连接时,使用表的别名并把别名前缀于每个Column上。可以减少解析的时间并减少那些由Column 歧义引起的语法错误.

where子句--执行顺序为自下而上、从右到左

ORACLE 采用自下而上从右到左的顺序解析Where 子句,根据这个原理,表之间的连接必须写在其他Where 条件之前, 可以过滤掉最大数量记录的条件必须写在Where 子句的末尾。

group by--执行顺序从左往右分组

提高GROUP BY 语句的效丛晌率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。即在GROUP BY前使用WHERE来过虑,而尽量避免GROUP BY后再HAVING过滤。

having 子句----很耗资源,尽量少用

避免使用HAVING 子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作.

如果能通过Where 子句在GROUP BY前限制记录的数目,那就能减少这方面的开销.

(非oracle 中)on、where、having 这三个都可以加条件的子句中,on 是最先执行,where 次之,having 最后,因为on 是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,

where 也应该比having 快点的,因为它过滤数据后才进行sum,在两个表联接时才用on 的,所以在一个表的时候,就剩下where 跟having比较了。

在这单表查询统计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是where 可以使用rushmore 技术,而having 就不能,在速度上后者要慢。

如果要涉及到计算的字段,就表示在没计算之前,这个字段的值是不确定的,where 的作用时间是在计算之前就完成的,而having 就是在计算后才起作用的,所以在这种情况下,两者的结果会不同。

在多表联接查询时,on 比where 更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where 进行过滤,然后再计算,计算完后再由having 进行过滤。

由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里。

select子句--少用*号,尽量取字段名称 。

ORACLE 在解析的过程中, 会将依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 使用列名意味着将减少消耗时间。

sql 语句用大写的;因为 oracle 总是先解析 sql 语句,把小写的字母转换成大写的再执行

order by子句--执行顺序为从左到右排序,很耗资源

sql执行顺序

我们先执行from,join来确定表之间的连接关系,得到初步的数据where对数据进行普通的初步的筛选group by 分组各组。

电脑:华为MateBook14

系统:Windows10

软件做庆:本地设置1.0MySql数据库

1、from

先确定册胡梁从哪个表中取数据,所以最先执行from tab。存在多表连接,from tab1,tab2。可以对表加别名,方便后面的引用。

2、where

where语句是对条件加以限定,如果没有需要限定的,那就写成where 1=1,表示总为true,无附加条件。

3、group by……having

分组语句,比如按照员工姓名分组,要就行分组的字段,必须出现在select中,否则就会报错。having是和group by配合使用的,用来作条件限定,下面写个例子。

4、聚合函数

常用的聚合函数有max,min,count,sum,聚合函数的执行在group by之后,having之前。如果在where中州运写聚合函数,就会出错。

5、select语句

选出要查找的字段,如果全选可以select *。这里选出员工姓名,所有月份的总工资数。

6、order by

排序语句,默认为升序排列。如果要降序排列,就写成order by  desc。order by语句在最后执行,只有select选出要查找的字段,才能进行排序。

sql left join 的执行顺序

SQL语句执行的时候是有一定顺序的。理解这个顺序对SQL的使用和学习有很大的帮助。

1.from   先选择一个表,或者说源头,构成一个结果集。

2.where 然后用where对结果集进行筛选。筛选出需要的信息形成新的结果集.

3.group by 对新的结果集分组.

4.having 筛选出想要的分组.

5.select 选择列

6.order by 当所有的条件都弄完了。最后排序

我的困或理解是这样,SQL语句中无论是否连接的其他表。 无论如何都要先形成一个结果集。后面的顺序不变!

只不过使用连接时,形成结果集合的方式尘尺陵略有不同。这个和 Left Join的实现原理有关。

select a.name,b.name

from T_left a            //1

Left Join T_Right b   //3

ON  a.id = b.id         //2

使用Left Join 形成结果集的方式是这样的。

.  首先对From子句中的前两个表,执行笛卡尔积运算。运算结果 形成一个结果集合。

.  ON按条件,对上边的结果集,进行筛选,形成新的结果集。

.  以左连接为例,如果T_left中存在未匹配到的行。那么把T_left中的这几行以外部行的形式加到上边的结果集中形成新的结果集。

 如派戚果存在多张表,重复1~3过程!

select * from A left join B on A.aid = B.bid right join C on A.aid =C.cid;

// 最终返回的是 C 表中的数据,

1.A left join B 返回A表数据,附带B表中符合条件的数据 

2.A left join B 假设等于结果 AB 

3.AB right join C 返回C,附带AB中符合条件的数据

sql语句执行顺序、

顺序如下:

8、SELECT (9)DISTINCT  10、Top Num select list

1、FROM [left_table]

3、join_type JOIN right_table

2、        ON join_condition

4、WHERE where_condition

5、GROUP BY group_by_list

6、WITH CUBE | RollUP

7、HAVING having_condition

9、ORDER BY order_by_list

SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。

逻辑查询处理阶段简介

1、FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1

2、ON:对VT1应用ON筛选器。只有那些使join_condition为真的行才被插入VT2。

3、OUTER(JOIN):如 果指定了OUTER JOIN(相对好搏闷于CROSS JOIN 或(INNER

JOIN),保留表(preserved

table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把银困两个表都标记为保留表)中未找到匹配的行将作为外部行添加到

VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。

4、WHERE:对VT3应用WHERE筛选器。只有使where_condition为true的行才被插入VT4.

5、GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.

6、CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.

7、HAVING:对VT6应用HAVING筛选器。只有使having_condition为true的组才会被插入VT7.

8、SELECT:处理SELECT列表,产生VT8.

9、DISTINCT:将重复的行友弯从VT8中移除,产生VT9.

10、ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).

11、TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。

关于sql执行顺序和sql执行顺序详解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关阅读

  • pg数据仓库(iphone 数据库)

    pg数据仓库(iphone 数据库)

    【PG数据仓库】---### 简介PG数据仓库是一种基于PostgreSQL开发的数据仓库解决方案,旨在提供高性能、可扩展和稳定的数据存储和分析功能。通过PG数据仓库,用户可以将大量的数据进行存储、查询和分析,在实现数据驱动决策的同时提升企...

    2024.04.15 19:11:14作者:intanet.cnTags:pg数据仓库
  • sqlserver2016安装(sqlserver2016安装教程 简书)

    sqlserver2016安装(sqlserver2016安装教程 简书)

    标题:SQL Server 2016安装教程简介:SQL Server 2016是微软公司推出的一款全新的关系数据库管理系统,具有更强大的性能和更多的功能优化。本文将为大家介绍SQL Server 2016的安装过程,并提供详细的步骤指导。...

    2024.04.15 17:22:13作者:intanet.cnTags:sqlserver2016安装
  • 数据仓库数据中台(数据仓库详解)

    数据仓库数据中台(数据仓库详解)

    数据仓库数据中台---### 简介数据仓库数据中台是指将企业的数据仓库和数据中台进行整合,以实现数据的集中管理、统一分析和共享利用。数据仓库是企业存储历史数据的中心数据库,而数据中台则是对数据进行处理、分析和应用的平台。通过将两者整合,企业...

    2024.04.15 12:11:12作者:intanet.cnTags:数据仓库数据中台
  • 数据计算(数据计算及应用)

    数据计算(数据计算及应用)

    标题:数据计算简介:数据计算是指利用计算机和相关软件工具进行数据处理和分析的过程,已经成为现代社会中不可或缺的技术手段。本文将介绍数据计算的基本概念、重要性以及常见的数据计算方法。一、数据计算的基本概念数据计算是指在计算机系统上对大规模数据...

    2024.04.15 11:44:12作者:intanet.cnTags:数据计算
  • 数据库技术应用(数据库技术应用实验总结)

    数据库技术应用(数据库技术应用实验总结)

    数据库技术应用介绍:数据库技术是一种用于管理和存储数据的技术,已经被广泛应用于各个行业。它可以帮助组织有效地管理数据,提高工作效率,加强数据安全性。本文将详细介绍数据库技术的应用。一、数据结构数据库技术通过数据结构来存储和组织数据,常见的数...

    2024.04.15 07:11:12作者:intanet.cnTags:数据库技术应用
  • 安装mongodb(安装mongodb注意)

    安装mongodb(安装mongodb注意)

    简介:MongoDB是一种NoSQL数据库管理系统,使用文档存储模式,便于在应用程序内进行数据存储和检索。本文将介绍如何安装MongoDB。一、MongoDB下载首先,需要访问官方网站https://www.mongodb.com/下载Mo...

    2024.04.15 03:00:11作者:intanet.cnTags:安装mongodb
  • 存储过程sql注入(存储过程 sql注入)

    存储过程sql注入(存储过程 sql注入)

    简介:存储过程SQL注入是一种常见的安全漏洞,攻击者利用存储过程中的漏洞,通过恶意输入的SQL语句对数据库进行攻击。本文将详细介绍存储过程SQL注入的原理、危害以及防范措施。一级标题: 存储过程SQL注入原理存储过程是一系列SQL语句的集合...

    2024.04.15 01:22:12作者:intanet.cnTags:存储过程sql注入
  • 数据仓库etl(数据仓库ETL工具)

    数据仓库etl(数据仓库ETL工具)

    数据仓库ETL是数据仓库中一个非常重要的环节,它负责数据的抽取(extract)、转换(transform)和加载(load)。在数据仓库中,数据通常来自多个不同的来源,ETL的作用就是将这些数据整合到数据仓库中,以便进行进一步的分析和查询...

    2024.04.14 21:44:11作者:intanet.cnTags:数据仓库etl