SQL-DAY 6(SQL查询语句的应用案例:多表联合查询)

本文介绍了如何使用SQL进行数据准备,创建家电分类和商品表,并通过内联接和子查询查询家电分类下的所有商品信息。内容包括创建数据库、表,插入数据,以及使用笛卡尔积、where条件、显式内连接和子查询进行多表关联操作,展示商品分类和价格等关键信息。
摘要由CSDN通过智能技术生成


数据准备

查询家电分类下,都有哪些商品,需要有分类表+商品表


#创建db3_2数据库,指定编码
create database db3_2 character set utf8;

#创建分类表与商品表
#分类表(一方 主表)
create table category(
	cid varchar(32) primary key,
	cname varchar(50)
);

#商品表(多方 从表)
create table products(
	pid varchar(32) primary key,
	pname varchar(50),
	price int,
	flag varchar(2)#是否上架标记为:1表示上架、0表示下架
	category_id varchar(32),
--添加外键约束
	foreign key(category_id) references category(cid)
);

#分类数据
insert into category(cid,cname) values('c001','家电');
insert into category(cid,cname) values('c002','鞋服');
insert into category(cid,cname) values('c003','化妆品');
insert into category(cid,cname) values('c004','汽车');

#商品数据
insert into products(pid,pname,price,flag,category_id) values('p001','小米电视机',5000,'1','c001');
insert into products(pid,pname,price,flag,category_id) values('p002','格力空诚',3000,'1','c001');
insert into products(pid,pname,price,flag,category_id) values('p003','美的冰箱',4500,'1','c001');
insert into products(pid,pname,price,flag,category_id) values('p004','篮球鞋',800,'1','c002');
insert into products (pid,pname,price,flag,category_id) values('p005','运动裤',200,'1','c002');
insert into products (pid,pname,price,flag,category_id) values('p006','T恤',300,'1','c002');
insert into products (pid,pname,price,flag,category_id) values('p007','冲锋衣',2000,'1','c002');
insert into products (pid,pname,price,flag,category_id) values('p008 ','神仙水',800, '1','c003');
insert into products (pid,pname,price,flag,category_id) values('p009','大宝',200,'1','c003');


多表关联内联接

笛卡尔积+where条件,实现查询家电分类下的所有商品
笛卡尔积

#笛卡尔积
select * from category c ,products p where cname = '家电'

在这里插入图片描述

笛卡尔积+where

#笛卡尔积+where
select * from category c ,products p where c.cid = p.category_id and cname = '家电'

在这里插入图片描述

显式内连接
查询所有商品信息和对应的分类信息

select * from category c inner join products  p on c.cid = p.category_id

子查询

通过子查询的方式,查询价格最高的商品信息

#查询最高的价格
select max(price) from products;

#查询价格最高的商品信息
select * from products where price =select max(price) from products);

查询价格小于2000的商品,来自于哪些分类(分类名称)

#查询价格小于2000的商品信息
select distinct(category_id) from products where price<2000;

#查询价格小于2000的商品,来自于哪些分类
select * 
from products 
where cid in (select distinct(category_id) 
				from products 
				where price<2000);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值