MySQL 什么是外键?
作者:野牛程序员:2024-11-18 14:27:40数据库阅读 2008
MySQL 什么是外键?
外键(Foreign Key)是用来在两个表之间建立和加强数据关联的一种约束。通过外键,可以在一个表中引用另一个表的主键或唯一键,从而实现表与表之间的关系。
特点
数据完整性
外键约束用于确保引用表中的值是有效的。如果在外键列中插入一个在目标表中不存在的值,将会引发错误。关联性
外键用来表示表之间的一对一或一对多的关系。例如,一个“订单表”可以通过外键与“用户表”关联,表示哪个用户下了哪些订单。级联操作
外键支持级联操作(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 DELETE 和 ON UPDATE
允许设置在删除或更新目标表数据时的行为:CASCADE
:级联删除或更新。SET NULL
:设置外键列为 NULL。NO ACTION
:不允许删除或更新(默认行为)。RESTRICT
:禁止删除或更新目标表中被引用的数据。
示例
父表:
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
- 上一篇:C语言中关于堆栈的基础操作
- 下一篇:C语言:函数调用堆栈