标题确实夸张了,这里面有些方法真的不太常用到,在一般情况下我们用得最多的其实还是增、删、改、查。
将查询结果插入到其它表中
情景一:当前有一个天猫超市的商品信息表(goods),我们需要为该表增加一个商品分类信息,由于主键及其他字段的非空约束。仅仅添加商品信息的操作往往会失败。
此时我们可以:
1、创建一个商品分类表(goods_cate),把goods的商品分类信息(cate_name)信息添加到该表中。
2、将goods表中的分类名改成商品分类表中对应的id。
如果商品分类很多,我们怎样实现把商品分类快速插入商品分类表呢?
代码:
-- 查询goods表中商品的分类信息
select cate_name from goods group by cate_name;
-- 将查询结果插入到good_cates表中
--语法和一般插入类似,insert into 表名(字段名)values(值);
insert into good_cates(name) select cate_name from goods group by cate_name;
-- 添加移动设备分类信息
insert into good_cates(name) values('新品种');
--使用连接更新goods表中商品分类信息
--使用别名 as 可以省略
-- 犯错写成了updata select * from goods g inner... update操作的是连接的虚表,select * from是从连接的虚表中查询 oods g inner jion goods_cate gc 才是虚表。
updata goods g inner jion goods_cate gc on g.cate_name=gc.name set goods.cate_name=goods_cate.id;
创建表并给某个字段添加数据
--必须要给brand_name指定为name 才能把值传给 name 否则name为空
create table goods_name(
id int unsigned primary key auto_increment,
price varchar(20) not null) select brand_nmae as name from goods group brand_name;
update goods as g inner join good_brands gb on g.brand_name = gb.name set g.brand_name = gb.id;
修改goods表结构
-- 查看表结构
desc goods;
-- 通过alter table语句修改表结构
--将 change 后的第一个字段改成change后的第二个字段,支持多字段修改
alter table goods change cate_name cate_id int not null, change brand_name brand_id int not null;