SQL中的视图(虚拟表)

本文概述

  • 什么是视图?
  • 视图类型
  • 简单检视
  • 复杂视图
  • 内联视图
  • 物化视图
  • 视图和实例化视图之间的比较
  • 在SQL中创建和删除视图
  • 观点的利弊
  • 总结
数据库管理员和数据库用户将面临两个挑战:编写复杂的SQL查询和保护数据库访问。有时, 由于在单个查询中使用多个联接, 子查询和GROUP BY, SQL查询变得更加复杂。为了简化此类查询, 你可以在原始表上使用一些代理。另外, 有时从安全性角度来看, 数据库管理员希望限制对数据库的直接访问。例如, 如果一个表包含各种列, 但用户只需要3列数据, 则DBA将创建一个3列的虚拟表。出于这两个目的, 你可以使用视图。视图可以充当代理或虚拟表。视图降低了SQL查询的复杂性, 并提供了对基础表的安全访问。
在本教程中, 你将涵盖以下主题:
  • 什么是视图?
  • 视图类型
  • 简单检视
  • 复杂视图
  • 内联视图
  • 物化视图
  • 视图和实例化视图之间的区别
  • 在SQL中创建和删除视图
  • 观点的利弊
  • 总结
什么是视图? 视图是SQL中表的特殊版本。它们为各种复杂的操作提供了一个虚拟表环境。你可以从多个表中选择数据, 也可以基于视图中的特定条件选择特定数据。它不保存实际数据;它仅包含数据字典中视图的定义。
SQL中的视图(虚拟表)

文章图片
视图是存储在数据字典中的查询, 用户可以像在表上一样在其上查询。它不使用物理内存, 仅查询存储在数据字典中。每当用户对其执行任何查询时, 它都是动态计算的。在任何角度进行的更改都会反映在实际的基础表中。
该视图主要有两个目的:
  • 简化复杂的SQL查询。
  • 限制用户访问敏感数据。
SQL中的视图(虚拟表)

文章图片
视图类型
  • 简单视图:仅基于单个表的视图, 该表不包含GROUP BY子句和任何函数。
  • 复杂视图:基于多个表的视图, 其中包含GROUP BY子句和函数。
  • 内联视图:基于FROM子句中子查询的视图, 该子查询创建一个临时表并简化了复杂查询。
  • 物化视图:用于存储定义和数据的视图。它通过物理存储来创建数据的副本。
SQL中的视图(虚拟表)

文章图片
简单检视
SQL中的视图(虚拟表)

文章图片
复杂视图
SQL中的视图(虚拟表)

文章图片
SQL中的视图(虚拟表)

文章图片
内联视图 【SQL中的视图(虚拟表)】内联视图是另一个SELECT语句的FROM子句中的SELECT语句, 用于创建可由SELECT语句引用的临时表。内联视图用于编写复杂的SQL查询, 而无需进行联接和子查询操作。这称为临时表, 因为存储的子查询返回的数据的副本没有存储在数据库中。在Oracle和Postgres社区中, 此临时表称为内联视图。它称为子选择。
SQL中的视图(虚拟表)

文章图片
物化视图 物化视图以物理方式复制检索到的数据。可以重复使用此复制的数据, 而无需再次执行视图。这种类型的视图也称为” 快照” 。物化视图减少了重新生成整个数据的处理时间。它可以帮助远程用户在本地复制数据并提高查询性能。这里具有挑战性的部分是同步表下的物化视图中的更改。
SQL中的视图(虚拟表)

文章图片
SQL中的视图(虚拟表)

文章图片
视图和实例化视图之间的比较
SQL中的视图(虚拟表)

文章图片
在SQL中创建和删除视图 可以使用CREATE VIEW和REPLACE VIEW创建和替换视图。
SQL中的视图(虚拟表)

文章图片
可以使用DROP VIEW命令删除视图。
SQL中的视图(虚拟表)

文章图片
观点的利弊 视图可以用作实际数据的子集以执行某些操作。它帮助我们为各种用户提供抽象或为正在访问表中数据的用户隐藏复杂性。例如, 用户有权访问特定数据列而不是整个表。它可以帮助我们将复杂的查询简化为更简单的查询。它还简化了来自多个联接表的数据访问。可以使用group by操作将其用作汇总表。视图可以用于安全目的, 或者可以从安全角度增加附加值。它不包含任何空间, 因为它仅在数据字典中具有定义, 而没有实际数据的副本。
除了具有很多优点之外, 视图还具有一些缺点, 例如基本表结构依赖性, 计算时间和限制。视图还具有表结构依赖性。如果更改表结构, 则必须更改与其关联的视图定义。
总结 恭喜, 你已完成本教程的结尾!
在本教程中, 你涵盖了有关视图的许多详细信息。你已经了解了什么是视图, 视图的类型, 简单视图, 复杂视图, 内联视图, 实例化视图, 用于创建和删除视图的语法以及视图的优缺点。
现在, 利用” 视图” 概念分析你自己的数据集。感谢你阅读本教程!
如果你想了解有关SQL的更多信息, 请在SQL课程中学习srcmini的关系数据库简介。

    推荐阅读