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表

转载于:https://www.cnblogs.com/summer1019/p/11046143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值