数据库练习题

该篇博客展示了创建和操作数据库表的SQL语句,包括插入数据、查询平均价格、筛选高价商品等操作。此外,还涉及了数据类型分表,创建了商品类别和品牌表,并进行了表关联和更新,最后讨论了如何通过内连接和左连接查询商品信息及无商品品牌的展示。
摘要由CSDN通过智能技术生成
-- 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)









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值