当前位置:首页数据库 > 正文

MySQL 什么是外键?

作者:野牛程序员:2024-11-18 14:27:40数据库阅读 2139
MySQL 什么是外键?

外键(Foreign Key)是用来在两个表之间建立和加强数据关联的一种约束。通过外键,可以在一个表中引用另一个表的主键或唯一键,从而实现表与表之间的关系。

特点

  1. 数据完整性
    外键约束用于确保引用表中的值是有效的。如果在外键列中插入一个在目标表中不存在的值,将会引发错误。

  2. 关联性
    外键用来表示表之间的一对一或一对多的关系。例如,一个“订单表”可以通过外键与“用户表”关联,表示哪个用户下了哪些订单。

  3. 级联操作
    外键支持级联操作(CASCADE),在目标表中更新或删除主键值时,可以选择自动更新或删除相关的外键值。

创建外键的语法

在创建表时可以定义外键,也可以在表创建后添加外键。

在创建表时定义

CREATE TABLE 子表 (
    id INT PRIMARY KEY,
    父表_id INT,
    FOREIGN KEY (父表_id) REFERENCES 父表(id)
);

在已有表上添加

ALTER TABLE 子表
ADD CONSTRAINT fk_父表_id
FOREIGN KEY (父表_id)
REFERENCES 父表(id);

外键的常见选项

  • ON DELETEON UPDATE
    允许设置在删除或更新目标表数据时的行为:

    • CASCADE:级联删除或更新。

    • SET NULL:设置外键列为 NULL。

    • NO ACTION:不允许删除或更新(默认行为)。

    • RESTRICT:禁止删除或更新目标表中被引用的数据。

示例

  1. 父表

CREATE TABLE 用户 (
    id INT PRIMARY KEY,
    用户名 VARCHAR(50)
);

子表

CREATE TABLE 订单 (
    id INT PRIMARY KEY,
    用户_id INT,
    FOREIGN KEY (用户_id) REFERENCES 用户(id) ON DELETE CASCADE ON UPDATE CASCADE
);

在此例中,如果删除或更新用户表中的记录,订单表中的相关记录也会被自动删除或更新。

注意事项

  • 外键列必须与目标表的主键或唯一键列的数据类型一致。

  • 创建外键约束的列必须已经建立索引,否则可能导致错误。

  • 并非所有存储引擎都支持外键,MySQL 中通常使用 InnoDB 存储引擎来支持外键功能。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • MySQL
  • 最新推荐

    热门点击