MySQL中的多表连接

 

现有表R,S如下:




笛卡尔积

select * from R,S;

 

结果:


注:不需要任何条件。结果为两张表函数相乘(3x3=9)。

 

 

连接类型

分为三种:交叉连接、内连接、外连接。

 

交叉连接 cross join

没有where子句的交叉连接将产生连接表的笛卡尔积。

 

select * from R cross join S;

 

结果:和笛卡尔积一样,如上图。

 

select * from R cross join S where R.C = S.C;

 

结果:


内连接

内连接分为三种:自然连接、等值连接、非等值连接。

 

自然连接 natural join:在连接条件中使用等于=运算符比较被连接列的列值,但删除连接表中重复列。

 

select * from R natural join S;

 

结果:



 等值连接  :使用等于=比较连接列的列值,在查询结果中列出接连表中的所有列,包括其中的重复列。

 

select * from R  join S where R.C = S.C;

select * from R inner join S where R.C = S.C;

 


非等值连接 :在连接条件中,可以使用其他比较运算符,比较被连接列的列值,如:<、>、!=等。

 

 

外连接

外连接分为三类:全外连接、左外连接、右外连接。

 

左外连接 left join / left outer join

 

select * from R left join S on R.C = S.C;

 

 

左外连接要遍历左表的所有记录,右表没有的用null表示。

 

右外连接 right join / right outer join

 

select * from R right join S on R.C = S.C;

 

 

右外连接要遍历右表所有的记录,左表没有的用null表示。

 

全外连接 full join / full outer join

 

select * from R full join S on R.C = S.C;

 

 

 

 转载自:http://huaxia524151.iteye.com/blog/1423614

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值