mysql---外键

外键的只要作用在于子表在插入数据的时候,要首先考虑到父表中是否有这个数据:
外键的删除;


--foreign key     (本表的外键的列名 master)      references         父表teacher(父表的主键)


是先有父表,再有子表;此时父表中必须有数据才行,不然字表中也插入不进去数据


--外键约束
--foreign key(本表的外键的列名 master) references 父表teacher(父表的主键)
drop table if exists classes;
create table if not exists classes (
	id int auto_increment,
	name varchar(20),
	classroom char(3) default '308',
	master int, -- 班主任
	primary key(id),
	foreign key (master) references teacher(id)
);
alter table classes 
add begindate date after classroom;


insert into classes (
	name,
	begindate,
	master
) values (
	'h51128',
	now(),
	1
)



-- 添加外键
alter table classes 
add foreign key(master) references teacher(id);

-- 尝试再添加班级数据, 测试外键的有效性.

-- 丢弃外键
alter table classes 
drop foreign key classes_ibfk_1;

alter table classes 
add constraint myfk foreign key(master) references teacher(id);

外键约束时, 默认情况下父表中的被引用的记录不可以删除 

在添加外键时,可以指定父表中被引用的记录的处理选项
alter table classes 
add constraint myfk2 foreign key(master) references teacher(id) on delete [do nothing(默认选项)][cascade(级联), set null(设置为null)];

-- 当删除或者修改父表中的被引用的记录时, 子表中相应的记录也被级联删除
alter table classes 
add constraint myfk2 foreign key(master) references teacher(id) on delete cascade on update cascade; 

-- 当删除或者修改父表中的被引用的记录时, 子表中相应的记录的外键列的值被置为null
alter table classes 
add constraint myfk3 foreign key(master) references teacher(id) on delete set null on update set null;

添加外键, 实现级联删除. 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值