-- 查询类型 cate_name 为 '超级本' 的商品名称 name 、价格 price ( where )
select
name,price
from goods
where cate_name =
"超级本";
-- 显示商品的种类
-- 1 分组的方式( group by )
select cate_name
from goods
group by
-- 2 去重的方法( distinct )
select distinct cate_name
from
-- 求所有电脑产品的平均价格 avg ,并且保留两位小数( round )
select
round(
avg(price),
2)
from
-- 显示 每种类型 cate_name (由此可知需要分组)的 平均价格
select
avg(price),cate_name
from goods
group by
-- 查询 每种类型 的商品中 最贵 max 、最便宜 min 、平均价 avg 、数量 count
select
max(price),
min(price),
avg(price),
count(*),cate_name
from goods
group by
-- 查询所有价格大于 平均价格 的商品,并且按 价格降序 排序 order desc
-- 1 查询平局价格(avg_price)
select
avg(price)
from
-- 2 使用子查询
select *
from goods
where price > (
select
avg(price)
from goods)
order by price
desc;
-- 查询每种类型中最贵的电脑信息(难)
-- 1 查找 每种类型 中 最贵的 max_price 价格
select cate_name,
max(price)
as max_price
from goods
group by
-- 2 关联查询 inner join 每种类型 中最贵的物品信息
-- select * from goods
-- inner join
-- (select cate_name,max(price) as max_price from goods group by cate_name) as max_price_goods
-- on goods.cate_name=max_price_goods.cate_name and goods.price=max_price_goods.max_price;
select *
from
inner join
select cate_name,
max(price)
as max_price
from goods
group by cate_name)
as
on goods.cate_name = max_price_goods.cate_name
and
-- 创建"商品分类"表
第一步 创建表 (商品种类表 goods_cates )
create
table
if
not
exists
int unsigned
primary
key
name
varchar(
40)
not
null
);
第二步 同步 商品分类表 数据 将商品的所有 (种类信息) 写入到 (商品种类表) 中
-- 按照 分组 的方式查询 goods 表中的所有 种类(cate_name)
select cate_name
from goods
group by
insert
into
insert
into goods_cates(
name)
select cate_name
from goods
group by
第三部 同步 商品表 数据 通过 goods_cates 数据表来更新 goods 表
-- 因为要通过 goods_cates表 更新 goods 表 所以要把两个表连接起来
select *
from goods
inner join goods_cates
on
-- 把 商品表 goods 中的 cate_name 全部替换成 商品分类表中的 商品id ( update ... set )
update (goods
inner join goods_cates
on goods.cate_name = goods_cates.name)
set
第四部 修改表结构
-- 查看表结构(注意 两个表中的 外键类型需要一致)
-- 修改表结构 alter table 字段名字不同 change,把 cate_name 改成 cate_id int unsigned not null
alter
table goods change cate_name cate_id
int unsigned
not
null;
-- 创建 商品品牌表 goods_brands
"商品品牌表"
-- 第一种方式 先创建表
create
table
int unsigned
primary
key
name
varchar(
40)
not
null);
-- 插入数据 brand_name(分组)
-- 按照 分组 的方式查询 goods 表中的所有 种类(brand_name)
--(注意) 把查询出来的 结果 写入 goods_brands 表里去 ( insert into ) 只插入name
-- 第二种方式 创建表的同时插入数据(了解,不建议使用)
create
table
int unsigned
primary
key
name
varchar(
40)
not
null)
select brand_name
as
name
from goods
group by
第二步 同步数据
-- 通过goods_brands数据表来更新goods数据表 g.brand_name=b.id
第三部 修改表结构
-- 通过alter table语句修改表结构 brand_id int unsigned not null
-- 外键的使用(了解)
-- 向goods表里插入任意一条数据
insert
into goods (
name,cate_id,brand_id,price)
values(
'老王牌拖拉机',
10,
10,
'6666');
-- 约束 数据的插入 使用 外键 foreign key
-- alter table goods add foreign key (brand_id) references goods_brands(id);
alter
table goods add
foreign key (cate_id)
references
alter
table goods add
foreign key(brand_id)
references
-- 失败原因 老王牌拖拉机 delete
-- delete from goods where name="老王牌拖拉机";
delete
from goods
where
name=
"老王牌拖拉机";
-- 创建表的同时设置外键 (注意 goods_cates 和 goods_brands 两个表必须事先存在)
create
table
int
primary
key auto_increment
not
null,
name
varchar(
40) default
'',
decimal(
5,
2),
int
int
bit default
1,
bit default
0,
foreign key(cate_id)
references
foreign key(brand_id)
references
);
-- 如何取消外键约束
-- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称
create
table
-- 获取名称之后就可以根据名称来删除外键约束
alter
table goods
drop
foreign key
alter
table goods
drop
foreign key
总结:在实际开发中,很少会使用到外键约束,会极大的降低表更新的效率
-- python与mysql的交互使用
-- 基本流程 1 connection对象 |2 cursor对象 |3 关闭cursor |4 关闭connection
-- sql注入 ' or 1=1 or '1
select *
from goods
where
name =
'%s' %
name
' or 1 or '
select *
from goods
where
name =
''
or
1
or
''
MySQL统计商品总数 mysql计算所有产品总价格
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章