-2

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

4

4 回答 4

2

这两者有些无关,尽管 aJOIN可能会受益于在外键上创建。

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

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

SQL 外键约束

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

因此,如果您想按名称返回父级的子级,您可以执行以下操作:

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

SQL 连接

于 2013-10-08T16:30:17.343 回答
1

他们是两个不同的东西:

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

要从两个表中检索数据,您必须将它们连接起来,并且要连接它们,您将使用主键列和外键列

于 2013-10-08T16:31:17.737 回答
1

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

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

于 2013-10-08T16:31:18.007 回答
0

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

于 2013-10-08T16:30:48.367 回答