MySQL学习笔记7——视图和存储过程

一、视图

1、视图的作用

视图是一种虚拟表,我们可以把一段查询语句作为视图存储在数据库中,在需要的时候,可以把视图看做一个表, 对里面的数据进行查询。

创建视图语法结构:

CREATE [OR REPLACE]
VIEW 视图名称[(字段列表)]
AS 查询语句

现在,假设我们要查询一下商品的每日销售明细,这就要从销售流水表(demo.mytrans) 和商品信息表(demo.goodmaster)中获取到销售数据和对应的商品信息数据:

销售流水表(mytrans):
在这里插入图片描述
商品信息表(goodmaster):
在这里插入图片描述
在不使用视图的情况下,我们可以通过对销售流水表和商品信息表进行关联查询,得到每天商品销售统计的结果,包括销售日期、商品名称、每天销售数量的合计和每天销售金额的合计,如下所示:

SELECT
a.transdate,
a.itemnumber,
b.goodsname,
SUM(a.salesquantity) AS quantity, -- 统计销售数量
SUM(a.salesvalue) AS salesvalue -- 统计销售金额
FROM
demo.mytrans AS a
LEFT JOIN		-- 连接查询
demo.goodmaster AS b ON (a.itemnumber = b.itemnumber)
GROUP BY a.transdate , a.itemnumber;

在实际项目中,我们发现,每日商品销售查询使用的频次很高,而且经常需要以这个查询的结果为基础,进行更进一步的统计。

举个例子,超市经营者要查一下“每天商品的销售数量和当天库存数量的对比”,如果用一个SQL语句查询,就会比较复杂。历史库存表(inventoryhist)如下所示:
在这里插入图片描述
接下来我们的查询步骤会使用到子查询和派生表

  • 子查询:就是嵌套在另一个查询中的查询。
  • 派生表:如果我们在查询中把子查询的结果作为一个表来使用,这个表就是派生表。

这个查询的具体步骤是:

  1. 通过子查询获得单品销售统计的查询结果;
  2. 把第一步中的查询结果作为一个派生表,跟历史库存表进行连接,查询获得包括销售日期、商品名称、销售数量和历史库存数量在内的最终结果。
SELECT
a.transdate,
a.itemnumber,
a.goodsname,
a.quantity, 		-- 获取单品销售数量
b.invquantity		-- 获取历史库存数量
FROM
(SEL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值