要在MySQL中创建关系表,使用INNER JOIN连接表和使用FOREIGN KEY REFERENCES设置外键之间的结构差异是什么?在什么样的具体情况下,必须使用一个而另一个不能使用?在一般情况下应该使用哪一个?
答案 0 :(得分:2)
这两者有些不相关,但JOIN
可能会受益于外键。
FK引用是强制引擎维护引用完整性的工具。它要求一个表中的条目具有与另一个表中的键匹配的值。
例如,考虑一个名为“Parents”的表和一个名为“Children”的表。根据定义,子表必须具有父级。因此,您将在子表中创建一个外键约束,在某些列上创建父表,如“ParentID”。这可以防止将行输入到没有匹配父项的Children表中。同样,如果父母有相应的孩子,也会阻止他们被删除。
JOIN
是查询或指令中的条件,它在给定条件下逻辑链接两个表,用于查询的目的和范围。
所以,如果你想通过名字返回父母的孩子,你可能会这样做:
SELECT
parent.name
,child.name
FROM
parent
JOIN
child
ON child.parentid = parent.id
WHERE
parent.name = 'Bob'
答案 1 :(得分:1)
它们是两回事:
外键用于确保参照完整性,并允许您跨表交叉引用相关数据
要从两个表中检索数据,您必须加入它们并加入它们,您将使用主键和外键列
答案 2 :(得分:1)
使用“create table”语句创建表,并且可以使用FOREIGN KEY REFERENCES语句明确标识当前表与其他表之间的关系。
当您可以使用JOIN语句将表链接到彼此时,使用“select ...”语句查询表。
答案 3 :(得分:0)
那些是不同的东西。当存在无法生成无效记录(外键指向任何内容)时,应始终强制执行引用完整性(外键关系)。 JOIN
是一个匹配两个表中记录的操作(如果合并则更多)。