七周七数据库读书笔记(1)

七周七数据库读书笔记(1)

看到别人推荐买了这本书,决定以后每读一本书都开始写读书笔记

这本书的第二章开始部分简单的回顾了关系数据库的CRUD,这里主要讲一下数据库中INNER JOIN, LEFT JOIN和RIGHT JOIN的区别。这块很多初学数据库的人会搞不清楚而很多Blog写得又比较深反而不易理解。

先谈谈INNER JOIN

INNER JOIN 我们一般解释为内联,通常来说INNER在SQL中可以被省略。简单来说就是通过两个表的某列将两个表相连。这里举例来说有假设数据库中有两张表(表A和表B)

  Country ID Country Name Postal Code
1 ch China 001
2 us U.S.A 002
3 uk United Kingdom 003
4 mx Mexico 004
  Event ID Event Name Postal Code Country Name
1 0001 boom 001 China
2 0002 crash 006 Australia
3 0003 break 008 Germany
4 0004 train 010 Canada

通过SQL  SELECT Event Name From A INNER JOIN B ON A.Postal Code=B.Postal Code 通过内联我们把两张表通过A.Postal Code=B.Postal Code最后得到如下数据的一张表

  Country ID Country Name Postal Code Event ID Event Name Country Name
1 ch China 001 0001 boom China

我们从结果可以看到使用内联的结果是将两张表都符合条件的数据根据关系连在一起。

随后我们谈谈外联LEFT JOINRIGHT JOIN

LEFT JOINRIGHT JOININNER JOIN的区别就是外联部要求两张表的所有数据都与关系相同,他们会保留在左边或在右边表的内容。仍然以上边的内容举例

如果我们将SQL改为SELECT Event Name From A LEFT JOIN B ON A.Postal Code=B.Postal Code则左边表的值会被保留得到结果如下而右表只有满足条件的值才会留下来

  Country ID Country Name Postal Code Event ID Event Name Country Name
1   ch China 001 0001 boom China
2 us U.S.A 002      
3 uk United Kingdom 003      
4 mx Mexico 004      

同理使用RIGHT JOIN则会保留右边表的内容而左表则只会保留符合条件的值,如SQL改为SELECT Event Name From A RIGHT JOIN B ON A.Postal Code=B.Postal Code

  Country ID Country Name Postal Code Event ID Event Name Country Name
1 ch China 001 0001 boom China
2     006 0002 crash Australia
3     008 0003 break Germany
4     010 0004 train Canada
原文地址:https://www.cnblogs.com/loneliness20141112/p/4279035.html