MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结

【0】README
0.1)本文旨在review MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结 的相关知识;

【1】自然联结
1)自然联结定义:无论何时对表进行联结,应该至少有一个列出现不止一个表中(被联结的列)。标准的联结返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,使每个列只返回一次;(干货——自然联结的作用就是排除多次出现,使每个列只返回一次)

看个荔枝)
自然连接怎么连接?
R表                S表
A  B  C                     D  B  E
1  a  3                      2  c  7
2  b  6                      3  d  5
3  c  7                      1  a  3    <span style="font-family: SimSun; background-color: rgb(255, 255, 255);">   </span>
step1)自然连接是第一步R×S结果是(
就是用R表中的每一项乘以S表中的每一项):
A   B     C      D     B       E
1   a     3      2     c       7
1   a     3      3     d       5
1   a     3      1     a       3
2   b     6      2     c       7
2   b     6      3     d       5
2   b     6      1     a       3
3   c     7      2     c       7
3   c     7      3     d       5 
3   c     7      1     a       3

step2)选择R.B=S.B的记录:
R.A    R.B     R.C       S.D     S.B    S.E
1       a       3         1       a       3 
3       c       7         2       c       7
step3)然后去掉相同且值也相同的B属性,最后R∞S的值为:
   A     B      C      D       E
   1     a      3      1        3
   3     c      7      2        7


以下部分文字描述转自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html
【supplement】测试前的准备
1)假设有A,B两个表:
// 表A记录如下
aID     aNum  
1     a2010  
2     a2011  
3     a2012  
4     a2012  
5     a2013  
 
// 表B记录如下:  
bID     bName  
1     b2010  
2     b2011  
3     b2012  
4     b2013  
8     b2014 

【2】left join (左外联结)sql语句如下: 
select*from A  left join B   on A.aID = B.bID   

对以上结果的分析(Analysis)
A1)left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.  
A2)换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的地方均为NULL;

【3】right join  (右外联结)
 

【4】内联结
sql语句如下: select*from A  innerjoin B   on A.aID = B.bID  
对以上结果的分析(Analysis):
A1)很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.  
A2)LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFTJOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。    
A3)语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2    
A3.1)说明:table1, table2参数用于指定要将记录组合的表的名称。  
A3.2)field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。  
A3.3)compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。  
A3.4)如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。 
Attention)left和right是外连接,Inner是内连接。(left join=left outer join,right join=right outer join)

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值