【学习笔记】——Ubuntu下MySQL 之 800年 也用不到一次的高级操作

标题确实夸张了,这里面有些方法真的不太常用到,在一般情况下我们用得最多的其实还是增、删、改、查。

 

将查询结果插入到其它表中

情景一:当前有一个天猫超市的商品信息表(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;

猜你喜欢

转载自blog.csdn.net/xyx_x/article/details/87895273