表的外键

阅读量: 208 编辑

表的外键

对于两个表而言,如果他们建立了关联,我们通过外键来实现;

外键所在的表就是从表(子表),外键引用了另一个表的字段,被引用字段所在的表就是主表(父表)。外键充当的是两个字段之间的桥梁。从而建立联系,让两张表有了约束限制。

我们可以通过"课程表classify字段"和"课程分类表的code字段"进行关联,表示某个课程一定要在某个分类下。

一旦建立的关系,就是强制约束,如果我们想修改、删除主表数据,对于从表的外键来说,这个约束就发挥作用了。

主表和从表的关系又分为:

  • 1 对 1 的关系;
  • 1 对 n 的关系;// 1 对 多
  • n 对 1 的关系;
  • n 对 n 的关系;

比如

  • 学生 和 家庭 是1:1的关系;
  • 老师 和 学生 是1:n的关系;
  • 学生 和 老师 是n:1的关系;
  • 学生 和 课程 是n:n的关系;

外键类型

  • RESTRICT: 拒绝删除或者更新父表

  • NO ACTION: InnoDB拒绝删除或者更新父表

  • CASCADE: 从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行。ON DELETE CANSCADE 和 ON UPDATE CANSCADE都被InnoDB所支持

  • SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为 NOT NULL 时才有效