查询SQL——②from join 表的联结(个人超详细总结)

本文的内容结构:表的联结

一、为什么要用联结?

二、联结的两种写法

三、联结的类型(逻辑联结)cross join →equi join=inner join →outer join(left outer join、right outer join、full outer join)这是满足业务逻辑需求的部分。

四、多表联结的写法(联结两个表、联结三个或以上的表)

五、底层物理联结方式(Nested Loop Join, Merge Join, Hash Join)这是SQL性能优化的部分。

Inner join, Outer join为逻辑连接,即SQL语句中From子句的表的连接方式,我们看到的都是联结后的展示的结果,而其中底层的物理联结过程我们并不清楚。

数据库会根据分析结果采取合适的底层物理连接方式Nested Loop Join, Merge Join, Hash Join。

 

注意:

①子查询只是返回单列结果,不要当成联结

②join、cross join、inner join重点要看后面的语句有没有等值过滤的语句

③等值联结并不是默认是自然联结

④联结经常用到表别名,因为自连接必用,并且也是为了少写表名缩短语句

⑤联结写法逻辑的总结

 

 

 

查询SQL逻辑:

select     单列,多列,聚集函数、窗口函数

from   ...   join ... on ...(本文内容)

where     过滤条件

group by 

order by 

limit 

 

 

一、为什么要用联结?

因为关系表的设计把不同的信息分解成多个表,通过一些共同的值来关联,

我们要用联结来关联查询多个表的数据,才能得到我们要的数据结果。

我们从表中查询数据,实际业务中很少只查单表,

单表是最简单的情况,基本都是要多表查询的。
 

 

二、联结的两种写法:DBMS支持两种格式的写法,简单格式A,B和标准格式join

举例等值联结

简单格式:select ... from A,B where A.a=B.b

标准格式:select ... from A join B on A.a=B.b

where子句和on子句的作用是一样的。

不过开发习惯上on子句上只写等值联结的条件,毕竟on子句就是为了联结条件而存在的。其他的过滤条件则在下面的where子句来写。

where子句本该拿来作为过滤的,但是简单格式只有where子句,所以联结条件只能写在where子句了。

首选的是标准格式join语法,简单格式A,B是被SQL纯正论者所“鄙视”的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值