MySQL数据库外键的使用
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情
使用场景
- 问题: 在新建一些数据库关系表的时候经常会遇到不同表之间的关联关系,不同数据库之间的连接使用外键是一个很好的解决方法
- 外键约束(foreign key):建⽴不同表之间的关联关系
- 外键约束:将⼀个列添加外键约束与另⼀张表的主键(唯⼀列)进⾏关联之后,这个外键 约束的列添加的数据必须要在关联的主键字段中存在
- 外键约束-级联
级联:当用户表中存在借书数量关联借阅表的某条记录时,就不能对借阅表的这条记录进⾏修 改 外键级联可以解决这个问题
- 用户表
- 借阅表
使用过程
数据库脚本 (两个表)
-- book 表
create table book
(
bid int not null auto_increment,
bname varchar(100) not null,
author varchar(255) not null,
publish varchar(255) not null,
bprice float,
isborrow char(10) not null default '可借',
primary key (bid)
);
-- 借阅表
create table borrow
(
sid char(20) not null,
bid int not null,
bdata date not null,
isreturn char(10) not null
);
-- 外键级联
alter table borrow add constraint FK_borrow foreign key (sid)
references user (sid) on delete restrict on update restrict;
alter table borrow add constraint FK_borrow2 foreign key (bid)
references book (bid) on delete restrict on update restrict;
通过外键级联,可以在borrow后者book 变化的使用同时更新,关联的外键
多表关联
⽅法:额外创建⼀张关系表来维护多对多关联——在关系表中定义两个外键,分别与两个数 据表的主键进⾏关联
例如:
学⽣ --- 课程 ⼀个学⽣可以选择多⻔课、⼀⻔课程也可以由多个学⽣选择
会员 --- 社团 ⼀个会员可以参加多个社团、⼀个社团也可以招纳多个会员