复杂查询与视图使用

本文主要介绍如何在数据库中进行复杂的查询操作,并利用视图简化查询步骤。通过示例代码step1.sql和shell脚本step1_test.sh,详细展示了具体实现过程。

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

复杂查询与视图使用,废话不多说直接上代码
step1.sql

USE 订单数据库
GO
SET NOCOUNT ON

/*1.查询*/
/*
(1)查询仓库编号为1002的产品总库存量,显示仓库编号,总库存量;
*/
--   第一题SQL语句开始   --

select 仓库编号,sum(库存量) as 总库存量 from 产品  group by 仓库编号 having 仓库编号=1002
 

--   第一题结束  --
GO


/*
(2)查询提成金额最高的代理商,显示代理商编号、姓名、地址、提成金额;
*/
--  第二题SQL语句开始  --

select 代理商编号,姓名,地址,提成金额 from 代理商 where 提成金额=(select max(提成金额) from 代理商 )

--  第二题结束  --
GO


/*
(3)查询编号为300的客户通过的代理商的姓名和地址。
 */
--  第三题SQL语句开始 --
 
 select 代理商.姓名,代理商.地址 from  客户 join 代理商  on 客户.代理商编号=代理商.代理商编号 where 客户编号='300' 
  
--  第三题结束   --
GO

/*
(4)查询产品编号为0033、订单编号为55、订购数量等于100的客户编号及其姓名。
 */
--  第四题SQL语句开始 --
 select 客户.客户编号,客户.姓名 from 客户 
  join 订单  on 订单.客户编号 = 客户.客户编号
  join 订货项目 on 订货项目.订单编号 = 订单.订单编号  
  where 订货项目.产品编号 = '0033' and 订货项目.订购数量=100 and 订货项目.订单编号='555'
--  第四题结束   --
GO 

/*
(5)查询每个客户的订单,显示客户编号、客户名、订单编号及订货日期。
 */
--  第五题SQL语句开始 --
 
 select 客户.客户编号, 客户.姓名,订单.订单编号,订单.订货日期 from  客户  join 订单 on 客户.客户编号=订单.客户编号
 
--  第五题结束   --
GO

/*
(6)查询所有2000年以后(不包括2000年)的订货项目,显示且仅显示订单编号,产品编号,订购数量,订购单价。
 */
--  第六题SQL语句开始 --
 
 select 订货项目.订单编号,订货项目.产品编号,订货项目.订购数量,订货项目.订购单价 from 
 订货项目 join 订单 on 订货项目.订单编号=订单.订单编号 
 where CONVERT(int,year(订单.订货日期)) >2000


--  第六题结束   --
GO

/*
(7)查询提成金额为100000以上(含100000)的代理商所对应的客户姓名。
 */
--  第七题SQL语句开始 --
select 客户.姓名 from 客户 join 代理商 on 客户.代理商编号 =代理商.代理商编号 where 代理商.提成金额>=100000
 
 
--  第七题结束   --
GO


/*1.视图*/
/*
(1)建立含有订单编号及该订单的客户编号和代理商编号三个字段的视图,名为订单信息视图。
*/
--   第一题SQL语句开始   --
create view 订单信息视图 as
	select 订单.订单编号,订单.客户编号, 客户.代理商编号
	from 订单 join 客户 on 客户.客户编号=订单.客户编号 


--   第一题结束  --
GO


/*
(2)从订单信息视图中,查询订单编号为111的产品信息(包括订单编号、客户编号、代理商编号)
*/
--  第二题SQL语句开始  --

select * from 订单信息视图 where 订单编号='111' 

--  第二题结束  --
GO


/*
(3)建立一个含有产品编号、产品库存量及产品在订量三个字段的视图,
名为产品信息视图。
注:① 产品在定量指产品已经累计被订购的数量
   ② group by 子句可以将查询结果按某一列或多列的值进行分组ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值