如上圖,將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表