SQL中的各种联结

SQL中的各种联结

一、定义

联结是一种机制,用来在一条select语句中关联表,因此称为联结。
SQL不限制一条SELECT语句中可以联结的表的数量。但不要联结不必要的表,会耗费资源,联结的表越多,性能下降
越厉害。
虽然SQL本身不限制表的数量,但数据库会有限制,需参考数据库文档以了解限制。

二、内联结(inner join)

基于两个表之间的相等测试,这种联结称为内联结(inner join),也称为等值联结(equijoin)。
select name,price from vendors
inner join products on vendors.vend_id=products.vend_id;

三、自联结(self-join)

一个表与其自身相联结,称为自联结。可以使用表别名来区分结构表。
select name,id from vendors v1, vendors v2 
where v1.vend_id=v2.vend_id;

四、自然联结(natural join)

自然联结排除多次出现,使每一列只返回一次。
前面介绍的内联结和自然联结若不是人工选择了那些唯一的列,则可能会出现重复的列。
系统无法完成这项工作,自然联结要求你只能选择那些唯一的列,一般通过对一个表使用通配符(select *),而对
其他表的列使用明确的子集来完成。

五、外联结(outer join)

联结包含了那些在相关表中没有关联行的行,这种联结称为外联结。
在使用 outer join 语法时,必须使用 right  或  left  关键字指定包括所有行的表(RIGHT值出的是 outer join 右边的表,LEFT值出的是 outer join 左边的表)。
全外联结(FULL OUTER JOIN)包含两个表的不关联的行。
//左外联结,包含vendors表中不关联的行
select name,price from vendors
left outer join products on vendors.vend_id=products.vend_id;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值