您的位置:首页 > 数据库

SQL子句执行顺序和Join的一点总结

2015-11-06 10:28 176 查看
SQL子句执行顺序和Join的一点总结

FROM

ON

JOIN

WHERE

GROUP BY

WITH CUBE or WITH ROLLUP

HAVING

SELECT

DISTINCT

ORDER BY

TOP

也就是说, 先进行on的过滤, 而后才进行join, 这样就避免了两个大表产生全部数据的笛卡尔积的庞大数据.

这些步骤执行时, 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。

[b]inner join [/b]

找到符合 左=右 的项,不符合的不要

left join

左表有的都显示,右表没有的用NULL来填充

right join

右表有的都显示,左表没有的用NULL来填充

full join

全显示

create table t_join_buyers
(
buyer_name varchar(10),
buyer_id int
)

create table t_join_sales
(
buyer_id int,
prod_id int,
qty int
)

insert into t_join_buyers values ('jack',1)
insert into t_join_buyers values ('tom',2)
insert into t_join_buyers values ('anni',3)
insert into t_join_buyers values ('poly',4)

insert into t_join_sales  values (1,2,15)
insert into t_join_sales  values (1,3,5)
insert into t_join_sales  values (4,1,37)
insert into t_join_sales  values (3,5,11)
insert into t_join_sales  values (4,2,1003)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: