2倍速学习网  >  数据库教程  >  [MySQL如何创建表外键约束?有什么规则?]

[MySQL如何创建表外键约束?有什么规则?]

创建外键约束的步骤 定义父表:首先,你需要有一个包含主键的表作为外键引用的基础。主键是表中每行数据的唯一标识。 设计子表:在子表中,你需要指定一个或多个列作为外键,这些列将引用父表的主键。 创建外键约束:在创建或修改子表时,使用FOREIGN KEY子句来定义外键约束。同时,指定外键列和...

在数据库设计中,表之间的关系是构建复杂数据架构的基石。外键约束(Foreign Key Constraint)是维护数据库表之间引用完整性的重要手段。它确保了子表中的数据必须在父表中有对应的记录,从而避免了数据的不一致性和孤立记录的存在。接下来,我们将深入探讨如何在MySQL中创建表外键约束,并解析其关键规则

创建外键约束的步骤

  1. 定义父表:首先,你需要有一个包含主键的表作为外键引用的基础。主键是表中每行数据的唯一标识。

  2. 设计子表:在子表中,你需要指定一个或多个列作为外键,这些列将引用父表的主键。

  3. 创建外键约束:在创建或修改子表时,使用FOREIGN KEY子句来定义外键约束。同时,指定外键列和对应的父表及父表的主键列。

    CREATE TABLE 子表名 (
       ...
       外键列名 数据类型,
       ...
       CONSTRAINT 外键约束名 FOREIGN KEY (外键列名) REFERENCES 父表名(主键列名)
       ON DELETE [CASCADE | SET NULL | NO ACTION | RESTRICT]
       ON UPDATE [CASCADE | SET NULL | NO ACTION | RESTRICT]
    );

    重点内容FOREIGN KEY子句用于定义外键,REFERENCES指明父表和对应的列,ON DELETEON UPDATE定义了当父表中的数据被删除或更新时,子表应该如何响应。

外键约束的规则

  1. 参照完整性:外键列中的每个值都必须是父表主键列中的一个值,或者为NULL(如果外键列允许NULL值)。

  2. 数据类型匹配:外键列和引用的父表主键列必须具有相同的数据类型和大小。

  3. 唯一性要求:虽然外键列的值在父表中必须唯一存在,但外键列本身在子表中并不要求唯一(除非另有定义)。

  4. 索引要求:MySQL会自动为外键列创建索引,以提高查询效率。

  5. ON DELETE 和 ON UPDATE 规则

    • CASCADE:如果父表中的记录被删除或更新,子表中的相关记录也会被相应地删除或更新。
    • SET NULL:将子表中相关外键列的值设置为NULL(仅当外键列允许NULL时)。
    • NO ACTION:如果尝试删除或更新父表中的记录,且这些记录在子表中有外键引用,则操作会被拒绝。
    • RESTRICT:与NO ACTION类似,也是拒绝删除或更新操作,但主要用于与其他数据库系统的兼容性。

[MySQL如何创建表外键约束?有什么规则?]

通过遵循这些步骤和规则,你可以有效地在MySQL中创建表外键约束,从而维护数据库的数据完整性和一致性。

推荐阅读