6-[表操作]--foreign key表与表的关系

Posted venicid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6-[表操作]--foreign key表与表的关系相关的知识,希望对你有一定的参考价值。

1、 foreign key

  (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

以上是关于6-[表操作]--foreign key表与表的关系的主要内容,如果未能解决你的问题,请参考以下文章

mysql foreign key(外键) 说明与实例

SQL表与表之间建立外键约束之后,怎么建立连级更新和删除?

多表查询

重修课程day40(mysql四之表与表关联和表操作)

数据库表与表的连接方式

mysql学习第6篇:数据库之表与表之间的关系