【14.0】MySQL进阶知识之视图

【一】视图介绍

【1】什么是视图

视图就是通过查询得到一张虚拟表,然后保存下来,下次可以直接使用

视图也是一张表

  • 在计算机科学中,视图(View)是一种虚拟表,其内容是一个或多个基本表的查询结果。
    • 视图基于数据库中的数据,通过定义查询语句来构建,并在需要时动态地计算数据。
    • 与基本表不同,视图不存储实际的数据,而是根据查询语句在使用时进行实时计算。
  • 视图可以用于简化复杂查询、隐藏敏感数据、实现数据安全性和完整性约束等。
    • 通过定义视图,用户可以从一个或多个基本表中选择所需的列和行,以满足特定的查询需求。
    • 用户可以对视图执行与表相同的查询操作,如SELECT、INSERT、UPDATE 和 DELETE。
  • 视图可以是虚拟的,也可以是物化的。
    • 虚拟视图是基于查询结果的定义,每次查询时都会计算最新的结果。
    • 物化视图是基于查询结果的缓存,用于提高查询性能。
    • 虚拟视图适用于经常变动的数据,而物化视图适用于查询频繁但数据变动较少的情况。
  • 总之,视图是一种查询结果的抽象表示,它提供了一种灵活和安全的方式来访问和操作数据库中的数据。
    • 通过使用视图,用户可以根据自己的需求获取所需的数据,而无需直接访问底层的基本表。

【2】为什么要用视图

如果要频繁操作一张虚拟表(拼表组成),就可以制作成视图,后续直接操作

【3】视图的优点

  • 简化复杂查询:
    • 视图可以对基本表进行复杂的操作,包括连接多个表、过滤条件、聚合函数等。
    • 通过定义视图,可以将复杂的查询逻辑封装到一个简单的视图中,使用户能够以更简洁明了的方式进行数据检索。
  • 数据安全性:
    • 视图可以限制用户对数据的访问权限,通常用于隐藏敏感数据或只提供部分数据给特定的用户。
    • 通过定义视图并设置相应的权限,可以保护数据的安全性,防止未经授权的用户访问敏感信息。
  • 数据完整性:
    • 视图可以用于实现数据完整性约束,即对数据的有效性进行验证。
    • 通过定义视图并添加计算列、过滤条件等约束,可以确保所返回的数据满足一定的条件,提高数据的准确性和一致性。
  • 逻辑数据独立性:
    • 视图使得应用程序与数据之间解耦,即应用程序不需要了解底层表结构的细节。
    • 这样,当底层数据库发生变化时(如表结构修改),只需调整底层视图的定义而无需修改应用程序,从而提高系统的可维护性和扩展性。
  • 性能优化:
    • 物化视图是一种缓存机制,可以将视图的查询结果存储在磁盘上,以提高查询性能。
    • 当基本表的数据频繁变动时,物化视图可以减少查询的计算开销和响应时间,提升系统的性能。

【4】总结

  • 使用视图可以简化查询操作、保护数据安全性、实现数据完整性、提高系统的可维护性和性能优化。
  • 视图提供了一种灵活且安全的数据访问方式,使用户能够根据自身需要方便地获取和操作数据。

【二】如何使用视图

【1】语法结构

create view 视图名(表名) as 虚拟表的查询SQL语句

【2】创建视图

  • 首先,您需要使用CREATE VIEW语句创建一个视图。
    • 在创建视图时,您需要指定视图的名称以及要查询的源表和过滤条件。
  • 例如,下面是一个创建视图的示例语句:
CREATE VIEW my_view AS SELECT column1, column2 FROM my_table WHERE condition;
  • 在上述语句中
    • my_view是视图的名称
    • my_table是源表的名称
    • column1column2是要选择的列
    • condition是过滤条件。

【3】使用视图进行查询

  • 一旦视图创建成功,您可以像查询普通表一样使用视图进行数据检索操作。
    • 例如,下面是一个使用视图查询数据的示例语句:
SELECT * FROM my_view;
  • 上述语句将返回视图my_view中的所有数据行。

【4】更新视图

  • 如果需要对视图进行更新操作,您可以使用UPDATE语句。
    • 注意,不是所有的视图都可以进行更新,只有满足一定条件的视图才支持更新操作。
    • 以下是一个更新视图的示例语句:
UPDATE my_view SET column1 = value1 WHERE condition;
  • 在上述语句中,column1是要更新的列,value1是要设置的值,condition是更新条件。

【5】删除视图

  • 如果您不再需要某个视图,可以使用DROP VIEW语句将其删除。
  • 示例如下:
DROP VIEW my_view;
  • 上述语句将删除名为my_view的视图。

【三】总结

  • 创建视图咋硬盘上只会有表结构,没有表数据
    • 表数据还是来自之前的表
  • 视图一般只用来查询
    • 不建议对视图内的数据进行更改,有可能会对原始数据产生影响
  • 视图的使用频率并不高
    • 当创建了较多视图后,会造成数据的难以维护
posted @ 2024-01-29 21:44  Chimengmeng  阅读(60)  评论(0编辑  收藏  举报