-- 创建商品品牌分类表
create table if not exists goods_brands(
id int unsigned primary key auto_increment,
name varchar(40) not null
);

-- 查询goods表中商品品牌的种类
select brand_name from goods group by brand_name;

-- 将分组结果写入到goods_brands数据表
insert into goods_brands (name) select brand_name from goods group by brand_name; -- select前面不能加values

-- 通过goods_brands数据表来更新goods表
update goods as g inner join goods_brands as b
on g.brand_name=b.name set g.brand_name=b.id;

-- 通过alter table语句修改表结构(即改名字又改类型) change:重命名
alter table goods change brand_name brand_id int unsigned not null;
-- 类别的名称brand_name重命名为brand_id

-- 关联外键
如何防止无效信息的插入,就是可以在插入前判断类型或者品牌名称是否存在呢? 外键可以解决
外键约束:对数据的有效性进行验证
关键字: foreign key,只有 innodb数据库引擎 支持外键约束
alter table goods add foreign key (brand_id) references goods_brands(id);
-- 取消外键
alter table goods drop foreign key goods_ibfk_2;
网友评论