七周七数据库读书笔记(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 JOIN和RIGHT JOIN
LEFT JOIN和RIGHT JOIN与INNER 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 |
时间: 2024-10-23 16:24:09