小编典典

什么是 MySQL 外键?

sql

我看到了这段代码:

CREATE TABLE Favorites (
    user_id INT NOT NULL,
    movie_id INT NOT NULL,
    PRIMARY KEY (user_id, movie_id),
    FOREIGN KEY (user_id) REFERENCES Users(user_id),
    FOREIGN KEY (movie_id) REFERENCES Movies(movie_id)
);

我以前从未使用过“外键”关系关键字。

它是什么?


阅读 69

收藏
2021-06-08

共2个答案

小编典典

外键是对另一个表中的主键或表本身的引用。它用于所谓的参照完整性。基本上,你的表提供给记录被插入Favorites-你必须提供一个有效的user_idUsers表,并有效的movie_idMovies表。使用外键强制,我无法从Users或 中删除记录Movies。如果我没有外键,我可以删除那些记录。然后,如果我SELECT ... JOINFavorites它上面做了一个就会坏掉。

参见维基百科。

2021-06-08
小编典典

外键描述了两个表之间的关系。它有很多好处:

  • 您可以强制规定,如果一个值在一个表中,那么它也必须存在于另一个表中。任何打破此约束的尝试都会出错。
  • 它允许数据库管理员或程序员仅通过查看表定义就更容易理解表之间的关系。
  • 它允许工具检查模式并绘制显示表之间关系的图表,或者创建类,其中对象的子对象可以通过成员从父对象访问。
  • 在 InnoDB 中,添加外键也会自动在该列上添加索引,以便可以在任一方向有效地进行连接。
2021-06-08