PG中的视图

0    797    6

Tags:

👉 本文共约5940个字,系统预计阅读时间或需23分钟。

简介

View(视图)是一张假表,只不过是通过相关的名称存储在数据库中的一个 PostgreSQL 语句。

View(视图)实际上是一个以预定义的 PostgreSQL 查询形式存在的表的组合。

View(视图)可以包含一个表的所有行或从一个或多个表选定行。

View(视图)可以从一个或多个表创建,这取决于要创建视图的 PostgreSQL 查询。

View(视图)是一种虚拟表,允许用户实现以下几点:

  • 用户或用户组认为更自然或直观查找结构数据的方式。
  • 限制数据访问,用户只能看到有限的数据,而不是完整的表。
  • 汇总各种表中的数据,用于生成报告。

PostgreSQL 视图是只读的,因此可能无法在视图上执行 DELETE、INSERT 或 UPDATE 语句。但是可以在视图上创建一个触发器,当尝试 DELETE、INSERT 或 UPDATE 视图时触发,需要做的动作在触发器内容中定义。

CREATE VIEW(创建视图)

在 PostgreSQL 用 CREATE VIEW 语句创建视图,视图创建可以从一张表,多张表或者其他视图。

CREATE VIEW 基础语法如下:

您可以在 SELECT 语句中包含多个表,这与在正常的 SQL SELECT 查询中的方式非常相似。如果使用了可选的 TEMP 或 TEMPORARY 关键字,则将在临时数据库中创建视图。

实例

创建 COMPANY 表,数据内容如下:

现在,下面是一个从 COMPANY 表创建视图的实例。视图只从 COMPANY 表中选取几列:

现在,可以查询 COMPANY_VIEW,与查询实际表的方式类似。下面是实例:

得到结果如下:

DROP VIEW (删除视图)

要删除视图,只需使用带有 view_name 的 DROP VIEW 语句。DROP VIEW 的基本语法如下:

下面的命令将删除我们在前面创建的 COMPANY_VIEW 视图:

PG中的临时视图

与oracle不同,pg可以创建临时视图

创建完后,在别的会话中是无法查看该视图的,这个会话退出后,这个视图的定义也被清除掉了

可更新视图

从PG 9.3开始,创建的简单视图,默认是可以更新的。如果是老版本,那么可以通过定义一个规则来更新视图。

需要创建规则来使视图可更新

同理插入,删除都需要创建规则

删除

视图和规则系统

http://postgres.cn/docs/13/rules-views.html

PostgreSQL中的视图是通过规则系统来实现的。事实上,下面的命令

与下面两个命令相比没有不同:

因为这就是CREATE VIEW命令在内部所作的。 这样做有一些副作用。其中之一就是在PostgreSQL系统目录中的视图信息与表的信息完全一样。所以对于解析器来说,表和视图之间完全没有区别。它们是同样的事物:关系。

1. SELECT规则如何工作

规则ON SELECT被应用于所有查询作为最后一步,即使给出的是一条INSERTUPDATEDELETE命令。而且它们与其他命令类型上的规则有着不同的语义,它们会就地修改查询树而不是创建一个新的查询树。因此我们首先描述SELECT规则。

目前,一个ON SELECT规则中只能有一个动作, 而且它必须是一个无条件的INSTEADSELECT动作。 这个限制是为了令规则足够安全,以便普通用户也可以打开它们,并且它限制ON SELECT规则使之行为类似视图。

本章的例子是两个连接视图,它们做一些运算并且某些更多视图会轮流使用它们。最前面的两个视图之一后面将利用对INSERTUPDATEDELETE操作增加规则的方法被自定义,这样最终结果将是一个视图,它表现得像一个具有魔力的真正的表。这个例子不适合于作为简单易懂的例子,它可能会让本章更难懂。但是用一个覆盖所有关键点的例子来一步一步讨论要比举很多例子搞乱思维好。

在前两个规则系统描述中我们需要真实表是:

如你所见,它们表示鞋店的数据。

视图被创建为:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复