SQL语句的执行顺序
一.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语句的执行顺序的更多相关文章
- SQL SERVER 一个SQL语句的执行顺序
一个SQL 语句的执行顺序 1.From (告诉程序 来自哪张表 如果是表表达式 依旧是如此顺序) 2.Where(条件筛选 谓词筛选 ) 3.Group by(分组) 4.Having(分组 ...
- mysql 中sql语句的执行顺序
今天突然想起来,之前面试一个很牛逼的公司(soho)的时候,一个美眉面试官,面试的时候问到了很多之前都没有意识到的问题,回想起来那美眉看着年纪不大,技术那是真666啊.好了说一下人家问的这个有关mys ...
- SQL语句的执行顺序和效率
今天上午在开发的过程中,突然遇到一个问题,需要了解SQL语句的执行顺序才能继续,上网上查了一下相关的资料,现整理如下:一.sql语句的执行步骤: 1)语法分析,分析语句的语法是否符合规范,衡量语句中各 ...
- day57-mysql-五种约束和sql语句逻辑执行顺序
二.sql语句逻辑执行顺序 () SELECT () DISTINCT <select_list> 去重复 () FROM <left_table> () <join_t ...
- MySQL——sql语句的执行顺序
#核心知识点: 书写顺序:where——>group by——>having——>order by——>limit 许多时候在书写一些复杂的sql语句的时候,尤其是在渐进式推导 ...
- 带Left Join的SQL语句的执行顺序
基础的SQL执行顺序 SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结 ...
- SQL语句的执行顺序(转载+不同意见)
MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作.其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来 ...
- mysql之sql语句逻辑执行顺序
1. (1)from先执行,from执行后就会将所有表(多个表时和单表所有的表)数据加载到内存中了 (2)ON执行,得到连接表用的连接条件. (3)JOIN执行,根据ON的连接条件,将from加载的所 ...
- MySQL-一条sql语句的执行顺序
手写: SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_tab ...
随机推荐
- 在RAC中,当私有网线拔了后,会怎么样?
原文链接http://blog.mchz.com.cn/?p=4305 实际环境: OS:oel5.5_x64 ORACLE:10205 3节点rac 架设于vmware esxi虚拟机上 所需测试项 ...
- IOS开发-跨域访问DWR方法
用Phonegap做手机客户端,服务器用spring+DWR,需要在手机端访问服务器的方法,需要做以下配置,可以参见http://www.iteye.com/topic/337460: 服务器DWR配 ...
- JAVA GUI之CardLayout
package refNet; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CardL ...
- MFC学习 事件临界区
事件: #include <Windows.h> #include <iostream> DWORD WINAPI Func1Pro(LPVOID lpParameter); ...
- 【LeetCode】5. Longest Palindromic Substring 最大回文子串
题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...
- oracle 清除当前用户的回收站
--清除当前用户的回收站:purge recyclebin; --删除表数据truncate table --查看当前用户回收站select * from user_recyclebin t;
- Duilib学习笔记《07》— 资源加载
Duilib的界面表现力能如此丰富,很大程度上得益于贴图描述的简单强大.通过之前的学习及参看相关例子,我们可以发现,在XML布局文件中,不管是窗体背景还是控件,都添加了对应的图片资源以此来美化界面.而 ...
- leetcode 100
100. Same Tree Given two binary trees, write a function to check if they are equal or not. Two binar ...
- FTP操作
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net ...
- sqlserver监控阻塞(死锁)具体情况
公司sqlserver的监控系统主要是采用zabbix监控,但是zabbix的监控只能通过性能计数器给出报警,而无法给出具体的阻塞情况,比如阻塞会话.语句.时间等,所以需要配合sqlserver的一些 ...