基础的SQL执行顺序

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

1.from

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

2.where

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

3.group by

对新的结果集分组。

4.having

筛选出想要的分组。

5.select

选择列。

6.order by

当所有的条件都弄完了。最后排序。

带连接的SQL语句执行顺序(以Left Join为列)

我的理解是这样,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 形成结果集的方式是这样的。

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

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

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

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

带Left Join的SQL语句的执行顺序的更多相关文章

  1. SQL语句的执行顺序

    一.sql语句的执行顺序 (8)SELECT (9) DISTINCT (11) <TOP_specification> <select_list> (1) FROM < ...

  2. mysql 中sql语句的执行顺序

    今天突然想起来,之前面试一个很牛逼的公司(soho)的时候,一个美眉面试官,面试的时候问到了很多之前都没有意识到的问题,回想起来那美眉看着年纪不大,技术那是真666啊.好了说一下人家问的这个有关mys ...

  3. day57-mysql-五种约束和sql语句逻辑执行顺序

    二.sql语句逻辑执行顺序 () SELECT () DISTINCT <select_list> 去重复 () FROM <left_table> () <join_t ...

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

    一个SQL 语句的执行顺序 1.From (告诉程序 来自哪张表  如果是表表达式 依旧是如此顺序) 2.Where(条件筛选  谓词筛选 ) 3.Group by(分组) 4.Having(分组   ...

  5. SQL语句的执行顺序和效率

    今天上午在开发的过程中,突然遇到一个问题,需要了解SQL语句的执行顺序才能继续,上网上查了一下相关的资料,现整理如下:一.sql语句的执行步骤: 1)语法分析,分析语句的语法是否符合规范,衡量语句中各 ...

  6. MySQL——sql语句的执行顺序

    #核心知识点: 书写顺序:where——>group by——>having——>order by——>limit 许多时候在书写一些复杂的sql语句的时候,尤其是在渐进式推导 ...

  7. SQL语句的执行顺序(转载+不同意见)

    MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来 ...

  8. mysql之sql语句逻辑执行顺序

    1. (1)from先执行,from执行后就会将所有表(多个表时和单表所有的表)数据加载到内存中了 (2)ON执行,得到连接表用的连接条件. (3)JOIN执行,根据ON的连接条件,将from加载的所 ...

  9. MySQL-一条sql语句的执行顺序

    手写: SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_tab ...

随机推荐

  1. 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”

    火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...

  2. JSON.stringify()的使用--将string转换成json

    ===========================================================1. ====JSON.stringify()================== ...

  3. Linux自启动

    linux 下tomcat开机自启动修改Tomcat/bin/startup.sh 为:export JAVA_HOME=/usr/java/j2sdk1.4.2_08export CLASSPATH ...

  4. 页面设计--Tree目录树

    Tree目录树控件属性: 根据数据集合来配置相应的信息 加载模式有自动加载.自定加载 web中显示效果图:

  5. 关于前置式递增和后置式递增的小知识(++x与x++)

    list<char>::iterator pos; //list<char> coll; for(pos=coll.begin();pos!=coll.end();++pos) ...

  6. (转)如何检查系统是否支持Zend Optimizer

    原文地址:http://blog.chinaunix.net/uid-25266990-id-2978539.html Zend Optimizer 主要有两个功能: 1.可以加速 PHP 脚本的执行 ...

  7. 菜鸟-手把手教你把Acegi应用到实际项目中(5)

    在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业应用更加安全.既然密码的加密如此之重要,那么Acegi(Spring Security)作为成熟的安全框架,当然也我们提供了相应的处理方式 ...

  8. [VB.NET]Dictionary类

    字典类是一个很重要的类,尤其是对于数据的简单存储,查询,和处理. 废话不多说,简单记录下我探索的结果. 1. Dictionary内部索引是0基的.也就是说第一个元素的序号是0. 2. Public ...

  9. OC基础(2)

    类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 *:first-child { margin-top: 0 !important; } body > *:last-c ...

  10. Spark核心概念之RDD

    RDD: Resilient Distributed Dataset RDD的特点: 1.A list of partitions       一系列的分片:比如说64M一片:类似于Hadoop中的s ...