首页 > 其他 > 详细

表与表之间建立关系

时间:2019-08-20 18:35:38      阅读:129      评论:0      收藏:0      [点我收藏+]

技术分享图片一、表的概念与分类

  主要通过外键关键字:pirmary key 来建立连系

1、表与表之间的关系可以分为三种:一对多,多对多,一对一的关系

  建立表关系的原因?:

2、 针对数据量大的情况下讨论

  1:表的结构不清晰(一张表中涵盖多种数据)

  2:浪费硬盘空间(有重复的数据)

  3:表的扩展性极差(不便于增加,修改,删除等操作)

二、表与表的关系:一对多

例如:一个公司的员工和部门之间的连系,把员工和部门分别抽离出来分析

  (1)先站在员工表看能否有多个员工对应一个部门>>>一个部门能否有多个员工(可以)

  (2)再站在部门表看能否有多个部门对应一个员工>>>一个员工能否属于多个部门(不可以)

结论:员工表和部门表之间的关系是“一对多”的关系(一对多或者多对一),根据id索引来寻找匹配的内容

技术分享图片  技术分享图片

先通过列表的形式,把一张完整的表切分出来,分析它们之间的关系多对一还是多对多就可以看出情况,换位思考!

 

foreign key:外键约束

  1、创建表的时候,必须先创建被关联的表

  2、插入数据的时候,也必须先插入被关联表的数据(先后顺序不能颠倒,不然会报错!)

代码如下:

  建表:

# 先建被关联的表

create table dep(
    id int primary key auto_increment,
    dep_name varcher(32),
    dep_desc varcher(128)

);

# 后建数据多的表
create table emp(
id int primary key auto_increment,
emp_naem varchar(64),
emp_gender enum(male,female,others) default male,
dep_id int,
foreidn key(dep_id) references dep(id)

);

插入数据: 

insert into dep(dep_name,dep_desc) values(外交部,搞外交),
        (教学部,教书育人),
        (技术部,技术能力有限部门)
        ;

insert into emp(emp_name,dep_id) values(jack,1),
     (reso,2),
     (gelen,3),
     (james,2);

技术分享图片    技术分享图片

2、修改表数据

  通过主键和对应的关系可以对表中的记录增加,修改,删除等操作,也是有先后顺序的 

update dep set id=200 where id=1; # 修改id
update emp set dep_id =300 where id=1;

delect from dep where id=3; # 删除id3的数据记录

外键虽然能够强制的建立表的关系,但是也会给表的数据之间增加了相关的约束

 

1.删除数据的时候  先删员工表的数据 再删部门表的数据
    delete from emp where id = 4;
    delete from dep where id = 3;
2.级联更新级联删除

3、级联更新、级联删除

create table dep(
id int primary key auto_increment,
dep_name varchar(32),
dep_desc varchar(128)

);
 
caeate table emp(
id int primary key auto_increment,
emp_name carchar(64),
emp-gender enum(male,female,othres) default male,
foreign key(dep_id) references dep(id)
on update cascade
on delete cascade
);

# 插入数据
 insert into dep (dep_name,dep_desc) values(外交部,‘搞外交’),
(’教学部‘,’教书育人‘),
(’技术部‘,’技术能力有限部门‘) insert into emp(emp_name,dep_id) values(
jack,2),
(rose,1),
(kevin,3),
(galen,1); # 修改 删除数据 update dep set id=200 where id=3; delect from dep where id=2;

 

  

 

 

  

  

 

表与表之间建立关系

原文:https://www.cnblogs.com/Gaimo/p/11384225.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!