--准备数据
--创建京东数据库
create database jingdong charset=utf8;
--使用京东数据库
use jingdong;
--创建一个商品数据表(编号 名字 分类名 品牌名 价格 是否展示 是否售空)
create table goods(
id int unsigned primary key not null auto_increment,
name varchar(150) not null,
cate_name varchar(40) not null,
brand_name varchar(40) not null,
price decimal(10,3) not null default 0,
is_show bit not null default 1,
is_sale_off bit not null default 0
);
--插入数据
insert into goods values(0,'gehbch 15.6 英寸电脑', '笔记本', '华硕',3399,default,default);
....
和视频上插入的数据是不一样的,先这样,之后可以再插入。
--SQL语句的强化
--查询类型为超极本的商品名称 价格
select name,price from goods where cate_name='超级本';
--显示商品种类
select distinct cate_name from goods;
select cate_name from goods group by cate_name;
--求所有产品的平均价格,保留两位小数
select round(avg(price),2) from goods;
--显示每种商品的平均价钱
select cate_name,avg(price) from goods group by cate_name;
--查询每种类型的商品中 最贵 最便宜 平均价 数量
select cate_name as 产品类型,max(price) as 最贵价格, min(price) as 最便宜价格,avg(price) as 平均价格,count(*) as 数量 from goods group by cate_name;
--查询所有价格大于平均价格的商品,并且按照价格降序排列
select id,name,price,(select avg(price) from goods) from goods where price>(select avg(price) from goods) order by price desc;
--查询每种类型中最贵的电脑信息
select * from (select cate_name,max(price) as max_price from goods group by cate_name) as g_new left join goods as g on g_new.cate_name=g.cate_name and g_new.max_price=g.price;
--上面的要求 如果最贵的电脑有两款 就会显示两种 显然不符合我们的要求
--改进
select * from (select cate_name,max(price) as max_price from goods group by cate_name) as g_new left join goods as g on g_new.cate_name=g.cate_name and g_new.max_price=g.price order by g_new.cate_name;