SQL 连接辨析

SQL中的连接(join)子句   直观上很好理解,就是把表A中的每条元组和表B中每条元组拼接起来

连接之所以出现分类,我认为最大的原因在于表A和表B中存在共同的列,从而导致在拼接元组的时候会有不同的方式

我们先介绍一下由几种join:

A inner join B 我认为inner join是最好理解的一种:就是将A组中的每条元组和表B中的每条元组都拼接一次

A left outer join B :这种连接保证A中的每条元组都会出现,而且outer join 必须搭配连接条件使用,什么是连接条件我在下面介绍

A right outer join B:这种连接保证B中的每条元组都会出现

连接条件:

natural:自然连接,用法是加在join前面:natural inner join或者natural left outer join   意思是把A和B中具有相同列取值的元组拼接,其他的元组不拼接,如果是left outer join,A中若有元组在B中找不到合适的拼接对象(即B中没有元组与A具有相同列取值),那么A中这种元组就与一条空元组(属性全是null)拼接,在查询结果中,这个公共列就不再区分是A还是B的了

on子句:一般是加在join后面:A natural inner join B on A.id = B.id , 若A,B中的两条元组满足on子句后面的关系,则拼接起来,在查询结果中,这个公共列前面还是带着前缀,A.id B.id ,以此来区分是A的还是B的

using子句: 一般是加在和on相同的位置,using(col1,col2...coln)括号中是A和B的公共列的子集,A和B的元组若在这个子集上取值相同,则连接起来,在查询结果中,不区分A,B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值