5、查询练习

文章目录

准备数据

create table goods(
	id int unsigned primary key auto_increment,    
	name varchar(150),    
	cate varchar(40),    
	brand_name varchar(40),    
	price decimal(10,3) default 0,    
	is_show bit default 1,    
	is_saleoff bit default 0 
); 
insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default ); 
insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default); 
insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default); 
insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default); 
insert into goods values(0,'x240 超极本','超级本','联想','4999',default,default); 
insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default) ; 
insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default); 
insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default); 
insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default); 
insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default); 
insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default); 
insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default); 
insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default); 
insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default, default); 
insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default, default);
insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default); 
insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default ,default); 
insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default);
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default); 
insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default); 
insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default); 
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);

练习1:查询大于或等于“超级本”价格的商品,并且按价格降序排列

select * from goods where price > some (select price from goods where cate='超级本') order by price desc;

练习2:求所有电脑产品大于平均价格,按降序排序

select name, cate, price from goods where price > (select round(avg(price), 2) as avg_price from goods) order by price desc;

数据分表

  1. 创建“商品分类表”
create table if not exists goods_cates(
	cate_id int unsigned primary key auto_increment,
	cate_name varchar(40)
)
  1. 查询goods表的所有记录,并且按“类别”分组
select cate from goods group by cate;
  1. 将查询的数据插入goods_cates数据表中
insert into goods_cates (cate_name) select distinct cate from goods;
  1. 通过goods_cates更新goods表
update goods as g 
inner join goods_cates as c 
on g.cate = c.cate_name set g.cate = c.cate_id;
  1. 通过create … select 创建数据表并且同时写入记录,一步到位
create table goods_brands (
	brand_id int unsigned primary key auto_increment,    
	brand_name varchar(40)
) 
select brand_name from goods group by brand_name;
  1. 更新goods_brands表
update goods as g 
inner join goods_brands as c 
on g.brand_name = c.brand_name set g.brand_name = c.brand_id;
  1. 插入数据
# 插入goods_cates
insert into goods_cates(cate_name) values ('路由器'),('交换机'),('网卡'); 
# 插入goods_brands
insert into goods_brands(brand_name) values ('海尔'),('清华同方'),('神舟');
  1. 在goods数据表中写入任意记录
insert into goods (name,cate_id,brand_id,price) values('LaserJet Pro P1606dn 黑白激光打印机','12','4','1849');
  1. 查询所有商品的详情(通过左右连接来生成)
select * from goods 
left join goods_cates on goods.cate=goods_cates.cate_id 
inner join goods_brands on goods.brand_name=goods_brands.brand_id

返回目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值