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

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

如何在MySQL中创建表外键约束? 步骤一:创建基础表并指定主键 首先,需要创建两个表:一个是主表(父表),另一个是从表(子表)。主表必须包含一个主键,而从表将引用这个主键作为外键。 CREATE TABLE parent_table ( id INT NOT NULL, name ...

在数据库设计中,外键约束是确保数据一致性和参照完整性的重要手段。MySQL作为广泛使用的关系型数据库管理系统,支持外键约束的创建与管理。本文将详细介绍如何在MySQL中创建表外键约束,并重点阐述创建外键约束时需要遵循的规则

如何在MySQL中创建表外键约束?

步骤一:创建基础表并指定主键

首先,需要创建两个表:一个是主表(父表),另一个是从表(子表)。主表必须包含一个主键,而从表将引用这个主键作为外键。

CREATE TABLE parent_table (
    id INT NOT NULL,
    name VARCHAR(255) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE child_table (
    id INT NOT NULL,
    parent_id INT,
    value VARCHAR(255),
    PRIMARY KEY (id)
    -- 注意:此时还未添加外键约束
);

步骤二:在子表中添加外键约束

接下来,在子表中添加外键约束,引用主表的主键。

ALTER TABLE child_table
ADD CONSTRAINT fk_parent_child
FOREIGN KEY (parent_id) REFERENCES parent_table(id);

这里,fk_parent_child是外键约束的名称,parent_id是子表中作为外键的列,parent_table(id)指定了主表和主键列。

可选:指定引用操作

你还可以指定在父表进行删除或更新操作时,子表中相关记录的行为。

ALTER TABLE child_table
ADD CONSTRAINT fk_parent_child
FOREIGN KEY (parent_id) REFERENCES parent_table(id)
ON DELETE CASCADE
ON UPDATE RESTRICT;
  • ON DELETE CASCADE:当从父表中删除记录时,自动从子表中删除相关记录。
  • ON UPDATE RESTRICT:当父表中的记录被更新时,阻止对子表中受影响记录的任何更新。

创建外键约束的规则

  1. 主表必须先存在:在创建外键约束之前,必须确保被引用的主表已经存在于数据库中。

  2. 主键与外键的数据类型必须相同:从表的外键列与主表的主键列的数据类型必须完全一致。

  3. 外键列可以为空:外键列允许包含空值,但如果不为空,则每个外键值必须匹配主表中的某个主键值。

  4. 一个表可以有多个外键:一个表可以包含多个外键,分别指向不同的主表。

  5. 外键列与主键列名可不同:从表的外键列名可以与主表的主键列名不同,但数据类型必须相同。

  6. 外键约束的命名:每个外键约束都需要一个唯一的名称,以便在需要时可以进行引用或修改。

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

总结:通过外键约束,MySQL能够确保数据库表之间的参照完整性,避免数据不一致的问题。在创建外键约束时,需要严格遵守上述规则,以确保数据库设计的合理性和有效性。

推荐阅读