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
    评论
MySQL中的左连接和左外连接是指一种关联查询的方式,可以用来联结两个表并按照指定的条件进行匹配。左连接是指左表的记录将会全部显示出来,而表只会显示符合搜索条件的记录。如果表记录不足,将会以NULL填充。左外连接是左连接的简写形式。 例如,使用左连接可以通过以下语句找出每个员工的上级领导(包括所有员工): ``` SELECT * FROM 员工表 e LEFT JOIN 上级表 s ON e.上级领导ID = s.员工ID; ``` 在这个查询中,左表是员工表,表是上级表。使用LEFT JOIN关键字可以实现左连接,通过指定ON条件来进行匹配。结果集中将包含所有员工的记录,如果有上级领导,则显示上级领导的信息,否则显示NULL。 总结来说,左连接和左外连接MySQL中是用来联结两个表并显示符合条件的记录的一种方法。左连接会显示左表的所有记录,而左外连接是左连接的简写形式。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL 内连接、外连接、左连接、连接、全连接](https://blog.csdn.net/qq_41512902/article/details/125655617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [【MySQL】十六、外连接(左连接,连接)](https://blog.csdn.net/weixin_43519707/article/details/113838054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值