数据库实验 嵌套查询和连接查询

题目:
商品(编号,品名,进价,库存,售价,厂商编号)
顾客(卡号,姓名,电话,积分)
厂商(编号,厂址,名称、电话)
销售(顾客卡号,商品编号,数量,日期)
根据上面基本表的信息完成下列查询。
1 查询积分100以上的顾客买的商品名称和价格
2 查询比“伊利乳品”所有产品都贵的商品价格
3 查询库存不足100的商品名称和厂商名称及电话

要求:
1 第一个查询要求分别用连接查询和嵌套查询完成,给出查询命令、初始数据、执行果,比较不同方法的效率。
2 其它查询要求给出查询命令、初始数据、执行结果,说明你选择连接查询或嵌套查询的原因

具体操作:

create database student
on primary(
	Name='student.mdf',
	Filename='d:\student.mdf',
	Size=5mb,
	Maxsize=100mb,
	Filegrowth=10%
)
log on(
	Name='student.ldf',
	Filename='d:\student.ldf',
	Size=5,
	Maxsize=unlimited,
	Filegrowth=1mb
)


create table 商品
(编号 bigint,
 品名 nchar(30),
 进价 float,
 库存 int,
 售价 float,
 厂商编号 bigint,
 primary key(编号)
);

create table 顾客
(卡号 bigint,
 姓名 nchar(15),
 电话 bigint,
 积分 float,
 primary key(卡号)
);

create table 厂商
(编号 bigint,
 厂址 nchar(30),
 名称 nchar(30),
 电话 bigint,
 primary key(电话),
);

create table 销售
(顾客卡号 bigint,
 商品编号 bigint,
 数量 int,
 日期 nchar(20),
 primary key(顾客卡号),
);



alter table 商品
add constraint fksc1
check(进价 between 0 and 200)

alter table 商品
add constraint fksc2
check(售价 between 20 and 300)

alter table 顾客
add constraint fksc3
check(积分 between 0 and 5000)

alter table 商品
add constraint fksc4
check(库存 between 0 and 1000)

alter table 销售
add constraint fksc5
foreign key(商品编号) references 商品(编号)



insert into 商品
values(101,'伊利牛奶',88,205,100,3541);
insert into 商品
values(102,'蒙牛牛奶',90,98,120,3542);
insert into 商品
values(103,'旺旺牛奶',98,434,150,3543);

insert into 顾客
values(1702043,'王博',13709999999,89);
insert into 顾客
values(1702044,'李卫',15033333333,121);
insert into 顾客
values(1702045,'李帅',18004444444,105);

insert into 厂商
values(3541,'内蒙古','伊利乳品',14888888888);
insert into 厂商
values(3542,'内蒙古','蒙牛乳品',15044555555);
insert into 厂商
values(3543,'台湾','旺旺乳品',16099999999);

insert into 销售
values(1702043,101,5,'20190203');
insert into 销售
values(1702044,102,5,'20190204');
insert into 销售
values(1702045,103,5,'20190205');


select * from 商品

select * from 顾客

select * from 厂商

select * from 销售

--第一题  嵌套查询

select 品名'商品名称',售价'价格' 
from 商品
where 编号 in 
	(select 商品编号 
	 from 销售
	 where 顾客卡号 in
		(select 卡号 
		 from 顾客
		 where 积分 > 100)
	)
	
--第一题  连接查询①

select 品名'商品名称',售价'价格' 
from 商品,销售,顾客
where 积分>100 
and 顾客.卡号=销售.顾客卡号
and 销售.商品编号=商品.编号

--第一题  连接查询②

select 品名'商品名称',售价'价格' 
from 销售 join 顾客
on 顾客.卡号=销售.顾客卡号
join 商品
on 销售.商品编号=商品.编号
and 积分>100 

--第二题

select 售价'商品价格'
from 商品
where 售价 > 
	(select MAX(售价) 
	 from 商品
	 where 厂商编号 in	
		(select 编号 
		 from 厂商
		 where 名称='伊利乳品')
	 )

--第三题

select 品名'商品名称',名称'厂商名称',电话
from 商品,厂商
where 厂商编号=厂商.编号
and 库存 < 100
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只爭朝夕不負韶華

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值