首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
数据库
> 详细
sql的基础知识之执行顺序
时间:
2016-06-10 21:34:32
阅读:
209
评论:
0
收藏:
0
[点我收藏+]
标签:
总结sql的执行顺序:
(8)SELECT (9)DISTINCT (11)<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>
(10)ORDER BY <order_by_list>
1.首先会查询左表
2.执行与右表的关联条条件
3.执行连接方式查询右表
4.执行where 条件
5.执行group by
6.执行with
7.执行having
8.执行select
9.执行distinct去重
10.排序
11.获取数据
FROM:
对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1
ON:
对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。
OUTER(JOIN):
如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
WHERE:
对VT3应用WHERE筛选器。只有使<where_condition>为true的行才被插入VT4.
GROUP BY:
按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
CUBE|ROLLUP:
把超组(Suppergroups)插入VT5,生成VT6.
HAVING:
对VT6应用HAVING筛选器。只有使<having_condition>为true的组才会被插入VT7.
SELECT:
处理SELECT列表,产生VT8.
DISTINCT:
将重复的行从VT8中移除,产生VT9.
ORDER BY:
将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
TOP:
从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者
sql的基础知识之执行顺序
标签:
原文地址:http://www.cnblogs.com/xieshoutianya/p/5574202.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
数据库进阶
2021-07-29
在 Oracle 数据库中执行 SQL 语句遇到特殊字符的转义方式
2021-07-28
Windows Logstash同步 Sqlserver 到Elasticsearch
2021-07-26
mysql数据库(11):恢复数据
2021-07-26
mysql数据库(9):常用查询的例子
2021-07-26
SQLAlchemy 多对多
2021-07-26
ClickHouse的JDBC连接
2021-07-26
Apache HBase 1.7.1 发布,分布式数据库
2021-07-26
数据库常用架构和同步工作原理
2021-07-26
MySQL数据库设计规范(仅供参考)
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!