使用INNER JOIN连接表和使用FOREIGN KEY REFERENCES设置外键之间有什么区别?

时间:2013-10-08 16:28:13

标签: mysql

要在MySQL中创建关系表,使用INNER JOIN连接表和使用FOREIGN KEY REFERENCES设置外键之间的结构差异是什么?在什么样的具体情况下,必须使用一个而另一个不能使用?在一般情况下应该使用哪一个?

4 个答案:

答案 0 :(得分:2)

这两者有些不相关,但JOIN可能会受益于外键。

FK引用是强制引擎维护引用完整性的工具。它要求一个表中的条目具有与另一个表中的键匹配的值。

例如,考虑一个名为“Parents”的表和一个名为“Children”的表。根据定义,子表必须具有父级。因此,您将在子表中创建一个外键约束,在某些列上创建父表,如“ParentID”。这可以防止将行输入到没有匹配父项的Children表中。同样,如果父母有相应的孩子,也会阻止他们被删除。

SQL FOREIGN KEY Constraint

JOIN是查询或指令中的条件,它在给定条件下逻辑链接两个表,用于查询的目的和范围。

所以,如果你想通过名字返回父母的孩子,你可能会这样做:

SELECT
    parent.name
    ,child.name
FROM
    parent
JOIN
    child
    ON child.parentid = parent.id
WHERE
    parent.name = 'Bob'

SQL Joins

答案 1 :(得分:1)

它们是两回事:

外键用于确保参照完整性,并允许您跨表交叉引用相关数据

要从两个表中检索数据,您必须加入它们并加入它们,您将使用主键和外键列

答案 2 :(得分:1)

使用“create table”语句创建表,并且可以使用FOREIGN KEY REFERENCES语句明确标识当前表与其他表之间的关系。

当您可以使用JOIN语句将表链接到彼此时,使用“select ...”语句查询表。

答案 3 :(得分:0)

那些是不同的东西。当存在无法生成无效记录(外键指向任何内容)时,应始终强制执行引用完整性(外键关系)。 JOIN是一个匹配两个表中记录的操作(如果合并则更多)。