标签:employee from img inno cas 技术 -- src 级联
(1)快速理解foreign key
员工信息表有三个字段:工号 姓名 部门
公司有3个部门,但是有1个亿的员工,那意味着部门这个字段需要重复存储,部门名字越长,越浪费
解决方法:
我们完全可以定义一个部门表
然后让员工信息表关联该表,如何关联,即foreign key
(2)建立表关系
#表类型必须是innodb存储引擎,且被关联的字段,即references指定的另外一个表的字段,必须保证唯一 # 先建立被关联的表,并且保证被关联的字段唯一 create table dep( id int primary key, name char(16), comment char(50) ); #dpt_id外键,关联父表(department主键id),同步更新,同步删除 # 再建立关联的表 create table emp( id int primary key, name char(10), sex enum(‘male‘,‘female‘,‘other‘), dep_id int, foreign key(dep_id) references dep(id) on delete cascade on update cascade );
foreign key(dep_id) references dep(id) on delete cascade on update cascade # 外键 dep_id, 引用 dep 表的id字段 删除,更新 级联
(2)插入数据
#先往被关联表插入记录 #先往父表department中插入记录 insert into dep values (1,"IT","技术能力有限部门"), (2,"销售","销售能力不足部门"), (3,"财务","花钱特别多部门"); #再往关联表插入记录 #再往子表employee中插入记录 insert into emp values (1,‘egon‘,‘male‘,1); insert into emp values (2,‘alex‘,‘male‘,1), (3,‘wupeiqi‘,‘female‘,2), (4,‘yuanhao‘,‘male‘,3), (5,‘jinximn‘,‘male‘,2);
(4)删除更新
#删父表department,子表employee中对应的记录跟着删 delete from dep where id=3; #更新父表department,子表employee中对应的记录跟着改 mysql> update department set id=22222 where id=2;
4
5
6
标签:employee from img inno cas 技术 -- src 级联
原文地址:https://www.cnblogs.com/venicid/p/9026489.html