MySQL数据库入门与实践(五):视图与各种子查询


一、视图

视图究竟是什么呢?如果用一句话概述的话,就是“从 SQL 的角度来看视图就是一张表”。实际上,在 SQL 语句中并不需要区分哪些是表,哪些是视图,只需要知道在更新时它们之间存在一些不同就可以了。
我们在创建表时,会通过 INSERT 语句将数据保存到数据库之中,而数据库中的数据实际上会被保存到计算机的存储设备(通常是硬盘)中。因此,我们通过 SELECT 语句查询数据时,实际上就是从存储设备(硬盘)中读取数据,进行各种计算之后,再将结果返回给用户这样一个过程。
但是使用视图时并不会将数据保存到存储设备之中,而且也不会将数据保存到其他任何地方。实际上视图保存的是 SELECT 语句,其实也就是把 select 语句封装了起来。我们从视图中读取数据时,视图会在内部执行该 SELECT 语句并创建出一张临时表。
视图无需保存数据,因此可以节省存储设备的容量。将频繁使用的 SELECT 语句保存成视图,这样就不用每次都重新书写了。
而且,视图中的数据会随着原表的变化自动更新。视图归根到底就是SELECT 语句,所谓“参照视图”也就是“执行SELECT 语句”的意思,因此可以保证数据的最新状态。这也是将数据保存在表中所不具备的优势 。
创建视图需要使用 create view 语句

--使用 create view 视图名(列1,列2,.....)  as select语句
CREATE VIEW ProductSum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
FROM Product
GROUP BY product_type;

可以看出创建视图的语句好像和创建一个表 create 的语句差不多,都是 create table 表名(列1,列2,…)。而且长的样子也和表差不多,甚至说好像就是个表。但是需要注意的是在 create 和 select 子句之间的 as 很重要,不可省略。在创建完视图之后,我们需要使用视图:

SELECT product_type, cnt_product FROM ProductSum;

在这里插入图片描述
查询的结果貌似也就是一个表。
但是可以看出,该视图将根据商品种类(product_type)汇总的商品数量(cnt_product)作为结果保存了起来。这样如果需要频繁进行汇总时,就不用每次都使用 GROUP BY 和 COUNT 函数写select语句来从 Product 表中取得数据了。
Product

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

素梦秋影

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

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

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

打赏作者

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

抵扣说明:

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

余额充值