联接

为什么使用表联接
什么是表联接
如果数据来自多个表,那么可以采用连接查询的方式来实现。因此表联接就是指将多个表联合在一起实现查询效果。
表联接的原理
与UNION不同
表联接采用笛卡尔乘积,称之为横向联接。
笛卡尔乘积
表联接的基本原理就是采用笛卡尔乘积。笛卡尔乘积是指将两张表的所有数据相连,最后联接的结果数为两张表数量的乘积。
在表连接时就要根据其外检来过滤没用的数据。         使用ON关键字来确定是否匹配
select 列1,列2 from 表1 join 表2
on 表1.列=表2.列
表联接的分类
内联接inner join:内部链接两个表中的记录,仅当至少一个同属于两个表的行符合联接条件时才返回行。也就是只要记录不符合ON条件,就不会显示在结果集中。
select 表1.属性名,表2.属性名 from 表1 (inner)join 表2 on 表1.属性名=表2.属性名;


外联接outer join:
1)左外联接left join/left outer join:外部联接2个表中的记录,并包含左表中的全部记录。如果左表的某记录在右表中没有匹配记录,则在相关联的结果集中,右边的所有选择列均为null值。也就是即使不符合on条件,左边中的记录也全部显示出现,且结果集中该类记录的右表字段为null值。
select 表1.属性名,表2.属性名 from 表1 (inner)left join 表2 on 表1.属性名=表2.属性名;
2)右外联接right join/right outer join:外部联接两个表中的记录,并包含右表中的全部记录,也就是和左表联接相反。
select 表1.属性名,表2.属性名 from 表1 (inner)right join 表2 on 表1.属性名=表2.属性名;
3)全外联接:full join/full outer join:完整外部联接返回左表和右表的所有行。也就是左外联接和右外联接的合并,左右两表的记录都全部显示。
select 表1.属性名,表2.属性名 from 表1 (inner)full join 表2 on 表1.属性名=表2.属性名;
mysql不支持全外联接




自联接:自联接其实就是内联接或者外联接的一个特例。同样可以使用内连接或外联接。自联接所联接的表是来自己与同一张表。                                                                                        当一个子查询是相关子查询的时候会严重影响性能。使用联接表提高性能                                                                                                                                                                                                                                                                  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值