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_name的数据来源于两张不同的表。
- 删除视图
删除视图的语法如下:
drop view user_view(视图名)
1.4 视图的优缺点
优点:总结一下应用场景就知道了,如:简化计算、保证数据安全等。
缺点:
效率低:因为在查询物理表时只是一次查询,查询视图相当于两次查询,所以效率有所降低。
维护成本高:一旦物理表的结构发生变化,也需要对视图进行调整。