请用简单的语言解释MySQL连接

时间:2010-04-10 04:56:20

标签: mysql join

请向我解释加入简单的语言。请不要发布网络链接,因为我需要阅读开发者如何理解它,而不是作者。

3 个答案:

答案 0 :(得分:15)

我能指出你最好的是A Visual Explanation of SQL Joins

这些图给了我很多帮助。


在此处添加链接帖子中的主要图表。

内部加入

inner join diagram

  

内部联接仅生成表A和表B中匹配的记录集。

全外连接

full outer join diagram

  

全外连接生成表A和表B中所有记录的集合,两侧的匹配记录可用。如果没有匹配,则缺少的一方将包含null。

左外连接

left outer join diagram

  

左外连接从表A中生成一组完整的记录,其中包含表B中的匹配记录(如果可用)。如果没有匹配,则右侧将包含null。

答案 1 :(得分:3)

给出表人和信息

SELECT *
FROM Person INNER JOIN
Information ON Person.ID = Information.ID

仅返回两个表具有相同ID的两个表中的行。因此,只有在Person和Information中都存在ID时才会返回该行。

SELECT *
FROM Person LEFT JOIN
Information ON Person.ID = Information.ID

将返回Person中的所有行,并且只返回那些与Information匹配的行,它不匹配,它将返回NULL

SELECT *
FROM Person LEFT JOIN
Information ON Person.ID = Information.ID
WHERE Information.ID IS NULL

将返回Person中没有条目的所有行。这将显示尚未更新Informaton的人员列表。

答案 2 :(得分:2)

我正在将你的问题解释为一般意义上的连接,而不是每种类型的连接,所以如果这是不合适的,那么我道歉:

基本上,通过连接,您可以通过向结果集添加列来从单个查询中的多个表中获取数据。所以,如果您有以下表格:

Books   (ID, Title, AuthorID)
Authors (ID, Name)

您可以获得如下所示的结果集:

  Book                    |   Author
'The Sirens of Titan'     | 'Kurt Vonnegut'
'The Old Man and the Sea' | 'Earnest Hemingway'

将两个表一起加入:

select Books.Title as Book, Authors.Name as Author
from Books
inner join Authors on Authors.ID = Books.AuthorID

内连接是最简单的连接类型;如果没有先掌握内连接及其用途,可能很难理解外连接点。