一.sql语句的执行顺序

 (8)SELECT  (9) DISTINCT  (11)  <TOP_specification> <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> 

 (10) ORDER BY <order_by_list>

二.测试left join和 where的执行顺序

 创建测试表
create table t1(id int,feild int);
create table t2(id int,feild int); insert into t1 values(1,1);
insert into t1 values(1,2);
insert into t1 values(1,3);
insert into t1 values(1,4);
insert into t1 values(2,1);
insert into t1 values(2,2); insert into t2 values(1,1);
insert into t2 values(1,2);
insert into t2 values(1,5);
insert into t2 values(1,6);
insert into t2 values(2,1);
insert into t2 values(2,3);
 测试 语句:
select t1.*,t2.* from t1 left join t2 on t1.id=t2.id
select t1.*,t2.* from t1 left join t2 on t1.id=t2.id and t1.id=1
select t1.*,t2.* from t1 left join t2 on t1.id=t2.id where t1.id=1
select t1.*,t2.* from t1 left join t2 on t1.id=t2.id and t2.id=1
select t1.*,t2.* from t1 left join t2 on t1.id=t2.id where t2.id=1
select t1.*,t2.* from t1 inner join t2 on t1.id=t2.id and t2.id=1

结论:

结论:取t1表的第一行,按谓词‘on’中的条件扫瞄t2表,如果满足条件,就加入返回结果表,不满足条件则只返回t1.
然后取t1表的第二行,按谓词‘on’中的条件扫瞄t2表,如果满足条件,就加入返回结果表,不满足条件则只返回t1.
重复以上过程,直到t1表扫描结束

结论:

结论:取t1表的第一行,按谓词‘on’中的条件扫瞄t1,t2表,如果满足条件,就加入返回结果表,不满足条件则只返回t1.
然后取t1表的第二行,按谓词‘on’中的条件扫瞄t2表,如果满足条件,就加入返回结果表,不满足条件则只返回t1.
重复以上过程,直到t1表扫描结束

结论:

结论:

结论:

结论:

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

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

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

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

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

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

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

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

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

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

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

  6. 带Left Join的SQL语句的执行顺序

    基础的SQL执行顺序 SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结 ...

  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. Linux神器之Strace的实践(Ubuntu上服务幽灵般的消失)

    不论是运维,还是开发,面对Linux系统,时常会因为配置参数或者系统的权限(iptables限制端口,selinux拦截,文件目录权限等)原因出现程序或者服务异常,无法启动等等.特别是在Linux的文 ...

  2. 将Excel中数据导入数据库(一)

    在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...

  3. 【练习】创建私有的dblink

    1.创建dblink第一种方法,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库. .设置监听: ①[root@host02 ~]# vi /etc/hosts 添加:[IP和名字 ...

  4. Do less things

    就这样,选择做更少的事情,我觉得挺好,至少能睡得很踏实,吃饭很香,也不会觉得难受! 就这样,节制自己的欲望,但是却能很平静,安安静静走自己的路,我觉得生活有希望,也有快乐! 早上,已经可以八点十分起床 ...

  5. iOS打电话、发短信

    方式一:使用该方法进行拨号之后,当电话挂断之后不会反回应用程序,会停留在电话记录界面,不会反回应用程序      NSURL *url = [NSURL URLWithString:@"te ...

  6. 仅显示INPUT下边框

    最近在倒腾前端的页面,在某次的需求中我想要这样的一个效果——仅显示INPUT输入框的下边框,和我想象的编写方式不一致,每个标签都有其对应的默认样式,不同的浏览器也有其不同的渲染方式,当然这些知识现在我 ...

  7. 【HTML/XML 8】XSL,可扩展样式表语言

    导读:上篇博客说了在XML文档中实现表现形式的一种形式:CSS层叠样式表,本篇博客将接着说明其另一种实现方式XSL,并将分析XSL和CSS之间的 关系. 一.XSL简介 XSL(eXtensible ...

  8. UNICODE字符串与多字节字符串的转换

    相互转换的两个函数的声明: 1. 多字节字符串与宽字符串的转换 int MultiByteToWideChar( UINT CodePage, // code page,一般设为 CP_ACP DWO ...

  9. malloc、calloc、realloc的区别

    (1)C语言跟内存分配方式 <1>从静态存储区域分配.       内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量.static变量.<2> ...

  10. tcpdump抓包

    名称(NAME)tcpdump-转储网络上的数据流总览(SYNOPSIS)tcpdump[-adeflnNOpqStvx][-ccount][-Ffile] [-iinterface][-rfile] ...