浙江网站建设方案,菜鸟做网站,wordpress在线支付表单,cms门户网站模板下载什么是外键约束#xff1f;
外键#xff1a;用来让两张表的数据之间建立连接#xff0c;从而保证数据的一致性和完整性。
外键约束是用于建立两个表之间关系的一种约束#xff0c;它定义了一个表中的列与另一个表中的列之间的关系。外键约束可以保证数据的完整性和一致性…什么是外键约束
外键用来让两张表的数据之间建立连接从而保证数据的一致性和完整性。
外键约束是用于建立两个表之间关系的一种约束它定义了一个表中的列与另一个表中的列之间的关系。外键约束可以保证数据的完整性和一致性确保表与表之间的关系得到正确维护
外键约束的使用方法
基本语法
-- 创建表时添加外键
create table 表名(
字段名 数据类型,
...
[constraint] [外键名称] foreign key (外键字段名) references 主表 (主表列名)
);-- 单独添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名)
references 主表 (主表列名) ;-- 删除外键
alter table 表名 drop foreign key 外键名称;外键产生的行为(删除/更新行为)
添加了外键之后再删除父表数据时产生的约束行为我们就称为删除/更新行为。具体的删除/更新行为有以下几种:
行为说明no action当在父表主表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则不允许删除/更新。 (与 RESTRICT 一致) 默认行为restrict当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则不 允许删除/更新。 (与 NO ACTION 一致) 默认行为cascade当在父表中删除/更新对应记录时首先检查该记录是否有对应外键如果有则 也删除/更新外键在子表中的记录。set null当在父表中删除对应记录时首先检查该记录是否有对应外键如果有则设置子表 中该外键值为null这就要求该外键允许取null。set default父表有变更时子表将外键列设置成一个默认的值 (Innodb不支持)
可以添加行为
-- 设置update和delete为cascade行为
alter table 表名 add constraint 外键名称 foreign key (外键字段) references
主表名 (主表字段名) on update cascade on delete cascade;
实例介绍
假设有两个表 students 学生表和 courses 课程表。每个学生可以选择多门课程因此我们希望通过外键约束来确保学生表中的 course_id 列与课程表中的 course_id 列保持一致。
1. 数据完整性通过外键约束我们可以确保学生表中的 course_id 列只引用了课程表中存在的有效 course_id 值。这样可以防止无效的或不存在的课程ID被插入到学生表中保证数据的完整性。
2. 数据一致性外键约束可以确保学生表中的 course_id 列与课程表中的 course_id 列保持一致。如果在课程表中更新或删除了某门课程的记录外键约束会自动处理相关的学生表中的数据以保持数据的一致性。
3. 数据查询和关联使用外键约束可以简化数据查询和关联操作。通过外键关联我们可以轻松地从学生表中获取与特定课程相关的学生信息或者从课程表中获取与特定学生相关的课程信息。 注意事项
1. 外键约束只能在InnoDB存储引擎下使用因此需要确保表使用的是InnoDB引擎。
2. 外键列和主键列的数据类型和长度必须相同否则无法建立外键约束。
3. 当删除或更新主表中的数据时需要谨慎选择ON DELETE和ON UPDATE子句以确保从表中的数据处理方式符合业务需求。
4. 外键约束可能会影响数据库的性能特别是在大量数据插入或更新时。因此在设计数据库时需要权衡使用外键约束的必要性和性能影响。 上一篇MySQL - 关于约束类型和作用的介绍
下一篇MySQL 多表关系多表查询 一