一文说明白MYSQL的视图、储存过程和函数

1、视图-View

1.1 视图是什么

在数据库中,我们将存储数据的地方叫做物理表。大多数时候我们读取的数据都是直接从物理表中查询的。视图(view)是基于物理表的逻辑查询,即将select的结果集以虚拟表(逻辑表)的形式储存。也就是说物理表中的数据如果发生改变,视图中的数据也一样会发生改变。
视图也可以被更新,但更新的是底层物理表的值。

1.2 视图应用场景

业务场景1:权限控制,分为字段控制和记录控制。字段控制就是给特定用户指定可见的字段,记录控制就是给特定的用户查询筛选后的记录。

业务场景2:简化查询,有的时候我们可能需要关联N多张表进行查询,如果每次都进行分步查询就太繁琐了。此时就可以通过视图事先将需要查询的语句组装起来。

业务场景3:计算统计,在面向用户时有些需求业务本省可能尚未满足,我们此时可以通过视图对数据进行计算和统计,将处理好的数据通过可视化面板进行展示。

以上三个应用场景可能是我们会经常用到的。

1.3 视图的操作

视图的操作分为创建视图、更新视图和删除视图。

  • 创建视图
    -创建视图的语法
CREATE VIEW  视图名 AS  select 字段名1,字段名2,字段名3 from 表名;
  • 更新视图
    更新视图包括插入记录、修改记录、删除记录,其语法可参照SQL的数据操纵语言DML。 以更新视图为例
update v_day_energy set usage_value=6.3 where f_gathertime='2022-06-07 00:00:00' and f_name='测试'

一般情况下不推荐使用视图的更新,因为对于多个物理表连接来说,视图的更新大概率是不成功的,而且不安全。所以我们一般还是对物理表进行更新。
比如对于以下的视图删除操作,就会不成功。

DELETE from v_day_energy where f_gathertime='2022-06-08 00:00:00' and f_name='测试'

f_gathertime和
f_gathertime和f_name的数据来源于两张不同的表。

  • 删除视图
    删除视图的语法如下:
drop view user_view(视图名)

1.4 视图的优缺点

优点:总结一下应用场景就知道了,如:简化计算、保证数据安全等。
缺点
效率低:因为在查询物理表时只是一次查询,查询视图相当于两次查询,所以效率有所降低。
维护成本高:一旦物理表的结构发生变化,也需要对视图进行调整。

下一篇文章我将详细介绍储存过程,主要讲述储存过程的动态查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

开心编码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值