MySQL外键

匿名 (未验证) 提交于 2019-12-02 22:02:20

数据库表的外键约束

外键约束要有两张表
其中一张是主键表,另外一张是外键表
关系就是一对多, 主键是不允许重复(主键表)

班级表(主键表)和学生表(外键表)
(1)先创建主键表,再创建外键表
(2)为外键表添加外键约束
(3)先为主键表添加测试数据,再为外键表添加测试数据
--如果要是删除,则需要先删除外键表的数据,再删除主键表的数据


create table clazz(



);
-- 创建外键表
create table student(




);
-- 为学生表添加外键约束
alter table student add constraint fk_clazzid foreign key (clazzid)
REFERENCES clazz (clazzid);
-- 添加测试数据
insert into clazz (clazzname,room) values ('零基础java班','403');
insert into clazz (clazzname,room) values ('高薪大数据就业班','506');
insert into clazz (clazzname,room) values ('美女最多前端班','508');
-- 向学生表添加测试数据
insert into student (stuname,clazzid) values ('zhangsan',4); -- 报错clazz只能在1,2,3中选择
insert into student (stuname,clazzid) values ('zhangsan',2);
select * from clazz
select * from student
delete from clazz where clazzid=2; -- 无法删除成功,因为2号班级有学生
/** 外键的三种策略





*/
-- 删除外键
alter table student drop foreign key fk_clazzid ;
-- 测试外键是否被删除

delete from student where stuno=7;
-- 重新添加外键



update student set clazzid=1 where stuno=6;
-- 重新添加外键约束
alter table student add constraint fk_clazzid foreign key (clazzid)

select * from clazz;
select *from student;
delete from clazz where clazzid=3;

添加外键时要求先查看两个表中的数据,是否一致,否则添加不成功


alter table student add constraint fk_clazzid foreign key (clazzid)

文章来源: https://blog.csdn.net/HanYueQian/article/details/96560855
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!