外键

1.外键 foreign key

如果一个实体A的某个字段,指向(引用)另一个实体B的主键,就称当前实体A的这个字段是外键


这里称class_id 为外键。class 表称为主表,或主实体,父表,或父实体。

student 表 称为子表或子实体,从表,或从实体。

2.两个问题:

1)在增加子表的记录时,是否有与之对应的父表记录?

2)在删除或者更新子表记录时,父表如何处理?


3.定义外键

在从表上,增加一个外键字段,指向主表的主键

Foreign Key (外键字段)references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作]

创建父表:

create table class(
class_id int primary key auto_increment,
class_name varchar(10) not null default 'class_one' comment '班级名称' 
) ;


创建子表:

create table student(
t_id int primary key auto_increment,
t_name varchar(10) not null default ''
) ;

在定义的时候定义foreign key

即创建子表应该这样定义:

create table student(
t_id int primary key auto_increment,
t_name varchar(10) not null default '',
class_id int,
foreign key (class_id) references class (class_id)
) ;

4.设置级联操作

1)主表更新 on update

2)主表更新 on delete

允许的级联操作

1)cascade 当主表被更新或删除时,从表也会执行相应的动作

2)set null 表示从表不指向从表的任何记录,主表删除或更新时,从表的foreign key 设置为null

3)restrict 拒绝主表的对应操作


5.修改外键

1)先删除外键,在新建外键

删除外键时,必须指定外键名称(非创建时的列名称),可以通过show create table table_name 查看外键名称

alter table table_name drop foreign key key_name;
alter table student drop foreign key student_ibfk_1;

2) 新建foreign key

alter table table_name add foreign key (列名) references 父表 (父表字段)on delete set null;
alter table student add foreign key (class_id) references class (class_id) on delete set null;


3)级联操作

alter table student drop foreign key student_ibfk_1;
alter table student add foreign key (class_id) references class (class_id) on delete cascade;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值