mysql数据库中的sql语句2

本文详细介绍了一种在京东数据库中进行多表查询的方法,包括创建数据库、商品信息表,以及通过联表查询获取商品详细信息的过程。文章还探讨了如何创建商品分类和品牌表,以及如何通过外键实现数据表之间的关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、多表查询案例

-- 创建 "京东" 数据库;
create database jing_dong charset=utf8;

-- 使用 "京东" 数据库
use jing_dong;

-- 创建一个商品goods数据表
create table goods(
id int unsigned primary key auto_increment not null,
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_saleoff bit not null 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 超极本','超级本','联想','4880',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,'商务双肩背包','笔记本配件','索尼','99',default,default);


--查询类型cate_name为 '超级本' 的商品名称、价格
select name,price from goods where cate_name='超级本';


--显示商品的种类
select cate_name from goods group by cate_name;

--求所有电脑产品的平均价格,并且保留两位小数
select round(avg(price),2) as avg_price from goods;

--显示每种商品的平均价格
select cate_name,avg(price) from goods group by cate_name;

--查询每种类型的商品中 最贵、最便宜、平均价、数量
select cate_name,max(price),min(price),avg(price),count(*) from goods group by cate_name;

--查询所有价格大于平均价格的商品,并且按价格降序排序
select id,name,price from goods where price>(select round(avg(price),2) as avg_price from goods) order by price desc;


--查询每种类型中最贵的电脑信息
--1、select cate_name,max(price) from goods group by cate_name;
--2、select * from goods;
select * from goods inner join (select cate_name,max(price) as max_price from goods group by cate_name)
as goods_new_info on goods.cate_name=goods_new_info.cate_name and goods.price=goods_new_info.max_price;


--创建 "商品分类"" 表
-- 创建商品分类表
create table if not exists goods_cates(
id int unsigned primary key auto_increment,
name varchar(40) not null
);

--查询goods表中商品的种类
select cate_name from goods group by cate_name;

--将分组结果写入到goods_cates数据表

insert into goods_cates (name) select cate_name from goods group by cate_name; 

--通过goods_cates数据表来更新goods表
update goods as g inner join goods_cates as c on g.cate_name=c.name set g.cate_name=c.id;

--在goods_cates表中插入数据
insert into goods_cates(name) values ('网卡'),('交换机'),('路由器');

--在 goods 数据表中写入任意数据
insert into goods (name,cate_name,brand_name) values ('Pro 彩色打印机',12,'打印机');

--通过alter table语句修改表结构
alter table goods change cate_name cate_id int unsigned not null;

--给cate_id设置外键
alter table goods add foreign key (cate_id) references goods_cates(id);

--什么外键?  就是做了约束


--创建商品品牌表
--通过create...select来创建数据表并且同时写入记录,一步到位
select brand_name from goods group by brand_name;

-- 在创建数据表的时候一起插入数据
-- 注意: 需要对brand_name 用as起别名,否则name字段就没有值
create table goods_brand (
id int unsigned primary key auto_increment,
name varchar(40) not null) select brand_name as name from goods group by brand_name;
	
--通过goods_brands数据表来更新goods数据表
update goods as g inner join goods_brand as b on g.brand_name=b.name set g.brand_name=b.id;

--修改表结构
alter table goods change brand_name brand_id int unsigned not null;

--添加外键
alter table goods add foreign key (brand_id) references goods_brand(id);

--如何取消外键约束?
--查看外键约束
show create table goods;
--获取外键名称删除外键约束
alter table goods drop foreign key 外键名称;
alter table goods drop foreign key goods_ibfk_1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值