SQL 中的视图类型 | SQL 中的视图 [2022]

已发表: 2021-01-02

编写复杂的 SQL 查询和保护数据库访问是数据库管理员和用户一直面临的挑战,这些查询可能会变得非常复杂。 在原始表上使用代理有助于简化此类查询。 此外,在某些情况下,管理员希望限制对数据库的直接访问。 对于这两种情况,都可以使用视图。

目录

什么是视图?

SQL 有一个特殊版本的表,称为 View,它是在运行时编译的虚拟表。 视图只是一条 SQL 语句,与它相关的数据并没有物理存储在视图中,而是存储在视图的基表中。

学习构建 Swiggy、Quora、IMDB 等应用程序

如果需要限制访问,它可以包含表的所有行和列,或者仅包含少数选定的行和列。 根据用于创建视图的书面 SQL 查询,可以从一个或多个表创建它。

视图可用于以用户自然的方式构建数据、简化复杂的查询、限制对数据的访问以及汇总多个表中的数据以创建报告。

管理视图

有与管理视图相关的不同方面,在此处定义。

创建视图:可以使用“create view”语句创建视图。 视图由引用物化视图、表或其他视图的查询定义。

重命名视图:可以重命名视图,并且应该确保所有引用视图旧名称的对象现在都应该有一个新名称。

列出视图:可以通过查询系统目录视图列出 SQL Server 数据库中的所有视图。

删除视图:使用“drop view”语句,可以删除现有视图。

阅读: SQL 与 PlSQL

报名参加世界顶尖大学的在线软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

SQL 中的视图类型

SQL Server 中有两种视图,即系统定义视图和用户定义视图。 本节包含对这两种类型的描述。

系统定义的视图

系统定义视图是 SQL Server 数据库中已经存在的预定义视图,例如 Tempdb、Master 和 temp。 每个数据库都有自己的属性和功能。

所有用户定义视图的模板数据库都来自主数据库。 它包含许多预定义视图,这些视图是表和其他数据库的模板。 它包含近 230 个预定义视图。

系统定义的视图将自动附加到所有用户定义的数据库。 这些提供有关数据库、表以及数据库和表的所有属性的信息。 共有三种类型的系统定义视图,信息模式、目录视图和动态管理视图。

信息模式

SQL 服务器中有二十种不同的模式视图。 它们用于显示数据库的物理信息,例如表、约束、列和视图。 此视图以 INFORMATION_SCHEMA 开头,后跟视图名称。 INFORMATION_SCHEMA.CHECK_CONSTRAINTS 用于接收有关数据库中任何可用约束的信息。

约束用于表中的特定列,以确保该列遵循某些数据规则。 INFORMATION_SCHEMA.COLUMNS 用于接收有关表列的信息,例如表名、列名、列的位置、默认值等。要返回当前数据库中存在的视图,使用 INFORMATION_SCHEMA.VIEWS。

目录视图

这些用于返回 SQL 服务器使用的信息。 目录视图提供了一种有效的方式来获取、呈现和转换自定义形式的信息。 但它们不包括任何关于备份、复制或维护计划等的信息。这些视图用于访问数据库的元数据,名称和列名是描述性的,帮助用户查询预期的内容。

动态管理视图

这些是 2005 年在 SQL Server 中引入的。管理员可以获取有关服务器状态的信息以诊断问题、监控服务器实例的运行状况并通过这些视图调整性能。 服务器范围的动态管理视图仅存储在主数据库中,而数据库范围的动态管理视图存储在每个数据库中。

用户定义的视图

这些是用户定义的视图类型。 用户定义视图下有两种类型,简单视图和复杂视图。

简单视图

这些视图只能包含一个基表或只能从一个表创建。 这里不能使用MAX()、COUNT()等分组函数,也不包含分组数据。

通过使用 Simple View,可以执行 DML 操作。 插入、删除和更新是直接可以的,但简单视图不包含分组依据、伪列如rownum、distinct、由表达式定义的列。 简单视图也不包括基表中的 NOT NULL 列。

复杂视图

这些视图可以包含多个基表或可以在多个基表上构建,并且它们包含 group by 子句、连接条件和 order by 子句。 这里可以使用组函数,它包含数据组。 复杂视图不能总是用于执行 DML 操作。

插入、删除和更新不能直接应用于复杂视图。 但与简单视图不同的是,复杂视图可以包含 group by、伪列(如 rownum、distinct、由表达式定义的列)。 NOT NULL 列可以包含在复杂视图中,而它们不被简单视图选中。

还有其他视图,例如 Inline View 和 Materialized View。 内联视图基于 FROM 子句中的子查询,子查询创建一个临时表,这简化了复杂的查询。

这些视图用于编写复杂的 SQL 查询,而不需要连接和子查询操作。 物化视图存储定义甚至数据。 数据的副本是通过物理存储来创建的。 此视图减少了重新生成整个数据的处理时间。

阅读:令人兴奋的 SQL 项目想法和主题

结论

本文介绍SQL 中的视图类型 SQL 中的 View 被定义和详细解释,并且还定义了 Views 的不同管理方式。 SQL 中不同类型的视图如系统定义视图和用户定义视图,以及每种类型下的各种子类型都进行了详细描述。

如果您有兴趣了解有关全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为在职专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目,和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

为未来的职业做准备

立即申请软件工程硕士