MySQL外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
建表时先建立主表,限制从表的引用,从表的外键对应主表的主键(不是主键也不会报错)
CREATE TABLE if not EXISTS department ( id INT PRIMARY KEY, dept_name VARCHAr (20) ); -- 主表插入数据 insert into department VALUES(1,'教学'); insert into department VALUES(2,'开发'); -- 建立从表,外键引用刚才的主表,这里外键字段的类型一定要和主表的字段类型保持一致 create table employee( e_id int, u_name varchar(20), dept_id int, ConSTRAINT emp_fk FOREIGN key(dept_id) REFERENCES department(id) ); -- 从表插入数据 INSERT into employee VALUES(1001,'张三',1); INSERT into employee VALUES(1002,'李四',1); INSERT into employee VALUES(1003,'赵武',2); INSERT into employee VALUES(1004,'王柳',2); -- 注意外键字段的数据一定是主表中存在的,否则会报错 INSERT into employee VALUES(1005,'题库',3); -- 删除外键约束 -- alter table 从表 drop foreign key emp_fk alter table employee drop foreign key emp_fk; -- 添加外键 alter table employee add FOREIGN key(dept_id) REFERENCES department(id); -- 想要删除主表中的字段时,要先将从表的引用删除,否则会报错 delete from employee where dept_id=1; delete from department where id=1; -- 删除外键约束,也可以实现主表的成功删除 alter table employee drop foreign key employee_ibfk_1; delete from department where id=2; -- 有外键约束的从表字段在外键存在时,是不能成功删除的 alter table employee drop column dept_id; -- 级联操作可以实现删除主表数据的同时,把从表对应的数据一并删除,并且不受以上所说的限制 on delete CASCADE create table employee( e_id int, u_name varchar(20), dept_id int, ConSTRAINT emp_fk FOREIGN key(dept_id) REFERENCES department(id) on DELETE CASCADE ); delete from department where id=1;
有帮到你的点赞、收藏一下吧
需要更多教程,微信扫码即可
别忘了扫码领资料哦【高清Java学习路线图】
和【全套学习视频及配套资料】



