【mysql】将一张表拆分成多张表

目前已有jing_dong表,里面有id、name、cate_name、brand_name、price、is_show、is_saleoff几个字段

1.创建新的表


新建的good_cates表有id和name两个字段

create table good_cates(
    id int not null primary key auto_increment, 
    name varchar(50) not null
);

2.把原表的数据插入到新表中

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

3.更新原表中的字段信息


把goods表中的cate_name数据替换成good_cates表中的id数据

 update goods g inner join good_cates gc on g.cate_name=gc.name set g.cate_name=gc.id;

4.创建表时同时插入数据


创建good_brands表并且把goods表中的brand_name字段数据插入到good_brands表的name字段

create table good_brands( 
	id int unsigned primary key auto_increment, 
	name varchar(50) not null) 
	select brand_name as name from goods group by brand_name;

把goods表中的brand_name替换成成good_brands表中的id字段数据
update goods g inner join good_brands gb on g.brand_name=gb.name set g.brand_name=gb.id;

注意:被插入数据的字段名要和as后的名一致,并且分号放在最后

5.修改字段名和类型

修改goods表中的cate_name和brand_name两个字段的名和类型
alter table goods change cate_name cate_id int not null,change brand_name brand_id int not null;

你可能感兴趣的:(mysql,mysql,sql,数据库)