4-MySQL拆分表

如上图,将goods表中的cate_name字段拆分一个商品分类表goods_cates,步骤如下:

 

1,创建商品分类表-goods_cates;

create table goods_cates(

id int unsigned primary key auto_increment,

name varchar(40) not null
);

 

2,将goods表数据根据字段cate_name分组,将分组后的商品种类信息添加到goods_cates表;

注: 这里insert into 语句没有values 关键字!

insert into goods_cates (name) select cate_name from goods group by cate_name;

 

3,同步表数据-使用goods_cates表的id字段数据更新goods表的cate_name字段数据;

update goods as g inner join goods_cates as c on g.cate_name=c.name set g.cate_name=c.id;

 

4,将goods表的cate_name字段修改为cate_id,并修改数据类型属性与goods_cates表的id字段的数据类型属性一致;

alter table goods change cate_name cate_id int unsigned not null;

 

5,在goods表中添加外键(foreign key)

外键约束:对数据的有效性进行验证
关键字: foreign key,只有 innodb数据库引擎 支持外键约束

在实际开发中,很少会使用到外键约束,会极大的降低表更新的效率

alter table goods add foreign key(cate_id) references goods_cates(id);

 

拆分后的goods表

 

拆分后的goods_cates表

posted on 2019-06-18 16:51  Summer儿  阅读(2018)  评论(0编辑  收藏  举报

导航