要在 MySQL 中制作关系表,使用 INNER JOIN 连接表和使用 FOREIGN KEY REFERENCES 设置外键之间的结构区别是什么?在什么样的具体情况下,一种必须用,另一种不能用?一般情况下应该使用哪一种?
4 回答
这两者有些无关,尽管 aJOIN
可能会受益于在外键上创建。
FK 引用是一种强制引擎保持引用完整性的工具。它要求一个表中的条目具有与另一个表中的键匹配的值。
例如,考虑一个名为“Parents”的表和一个名为“Children”的表。根据定义,Children 表必须有一个 Parent。因此,您将在“ParentID”之类的列上创建从子表到父表的外键约束。这可以防止将没有匹配父项的行输入到子表中。同样,如果父母有相应的孩子,它会阻止他们被删除。
AJOIN
是查询或指令中的一个条件,它在给定条件下出于该查询的目的和范围逻辑链接两个表。
因此,如果您想按名称返回父级的子级,您可以执行以下操作:
SELECT
parent.name
,child.name
FROM
parent
JOIN
child
ON child.parentid = parent.id
WHERE
parent.name = 'Bob'
他们是两个不同的东西:
外键用于确保引用完整性,它允许您跨表交叉引用相关数据
要从两个表中检索数据,您必须将它们连接起来,并且要连接它们,您将使用主键列和外键列
您可以使用“create table”语句创建表,并且可以使用 FOREIGN KEY REFERENCES 语句来显式识别当前表与其他表之间的关系。
当您可以使用 JOIN 语句将表相互链接时,您可以使用“select ...”语句查询表。
这些是不同的东西。当存在引用完整性(外键关系)时,您应该始终强制执行,以免产生无效记录(指向任何内容的外键)。这JOIN
是一个匹配来自两个表(或更多,如果合并)的记录的操作。