数据库练习题

-- 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);

-- 求所有电脑产品的平均价格,并且保留两位小数

-- select avg(price) from goods

-- select round(avg(price),2) as avg_price from goods;

-- 查询所有价格大于平均价格的商品,并且按价格降序排序

--  select * from goods where (select avg(price) from goods ) order by price desc

-- 查询类型为'超极本'的商品价格

-- select price from goods where cate_id='超极本'(以前字段是文字,后来修改成int,所以不显示)

-- 查询价格大于或等于"超级本"价格的商品,并且按价格降序排列

-- select * from goods where price = any (select price from goods where cate_id='超级本') order by price desc  (以前字段是文字,后来修改成int,所以不显示 用in也可以)


-- ...............................................................................................................

-- 数据类型分表

-- create table if not exists goods_cates(
--     cate_id int unsigned primary key auto_increment,
--     cate_name varchar(40)
-- );

-- insert into goods_cates(cate_name)select distinct cate from goods  {添加数据}

-- 新建一个品牌表

-- create table goods_brands (
-- brand_id int unsigned primary key auto_increment,
-- brand_name varchar(10)
-- )select distinct brand_name from goods       {添加数据}


-- insert into goods_cates (cate_name) values ('路由器'),('交换机'),('网卡');
-- insert into goods_brands (brand_name)values ('海尔'),('清华同方'),('神舟');
-- insert into goods (name,cate,brand_name,price)
--  values('LaserJet Pro P1606dn 黑白激光打印机','12','4','1849');


-- (当两个表字段一样 起别名 查询字段需要加表名.字段)

--  goods表 cate 字段修改为类型表数字 用一个表去操作另一个表
 
--     1.首先建立关联,用内连接

-- select * from goods g inner join goods_cates gc on g.cate_id=gc.cate_id
 
--  2.修改表 将上面关联mysql语句中 select *from 替换update set cate=cate_id

--  update goods g inner join goods_cates gc on g.cate_id=gc.cate_id set g.cate_id=gc.cate_id

-- 3.goods表 brand_name 字段要修改为品牌表数字 用一个表去操作另一个表

--  update goods g inner join goods_brands gb on g.brand_id=gb.brand_id set g.brand_id=gb.brand_id

-- 4.三表连接查看产品 品牌 类型 用内连接

--  select g.name, gc.cate_name,gb.brand_name from goods g inner join goods_cates gc on g.cate_id=gc.cate_id
--  inner join goods_brands gb on  g.brand_id=gb.brand_id
 
-- 5.查询所有的商品信息,三表左连接,商品表作为左表全部显示
--   select name,cate_name,brand_name,price,is_show,is_saleoff from goods g left join goods_cates gc on g.cate_id=gc.cate_id
--   left join goods_brands gb on  g.brand_id=gb.brand_id

 -- select name,cate_name,brand_name,price,is_show,is_saleoff from goods g left join goods_cates gc on g.cate_id=gc.cate_id
-- inner join goods_brands gb on  g.brand_id=gb.brand_id

-- 显示没有商品的品牌(通过右链接+子查询来做) 右连接

-- 1)有商品的品牌 2)取反

-- 有商品的品牌的所有信息(右连接)

-- select * from goods g right join goods_brands gb on g.brand_id=gb.brand_id  where g.brand_id in(select distinct brand_id from goods)
 
-- 显示有商品的品牌
 
-- select * from goods_brands gb where gb.brand_id  in (select distinct brand_id from goods )

-- 显示没有商品的品牌

-- select * from goods_brands gb where  not gb.brand_id  in (select distinct brand_id from goods)









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值