PostgreSQL 视图

17 Mar 2025 | 6 分钟阅读

在本节中,我们将了解 PostgreSQL 视图 的工作原理,例如 如何创建 PostgreSQL 视图、更改 PostgreSQL 视图、修改 PostgreSQL 视图删除 PostgreSQL 视图

PostgreSQL 视图简介

视图是 PostgreSQL 中的一个伪表;它不是一个实体表,但看起来像一个普通的表进行选择。视图也可以表示连接表。它可能包含表的所有行或来自一个或多个表的选定行。

视图简化了用户执行以下方面的工作

  • 它自然而直观地组织数据,使其易于查找。
  • 我们可以授权用户对视图的权限,视图具有用户被授权查看的完整记录。
  • 它限制了对数据的访问,以便用户只能看到有限的数据而不是完整的数据。
  • 即使必要表的列被修改,视图也提供了一个可靠的层。
  • 它汇总来自不同表的数据以生成报告。
  • 视图帮助我们描述语句的复杂性,因为我们可以借助 SELECT 命令根据复杂查询编写视图的命令。

PostgreSQL 中,我们可以在 SQL shell (psql) 中执行视图的所有活动

使用 SQL shell (PSQL) 的 PostgreSQL 视图

在此,我们将使用 SQL shell (psql) 创建视图、更改视图和删除视图。 因此,为此,我们需要遵循以下过程

创建 PostgreSQL 视图

要创建 PostgreSQL 视图,我们使用 CREATE VIEW 命令

语法

Create view 命令的语法如下

在上面的语法中,我们有以下参数

参数描述
OR REPLACEOR REPLACE 参数将替换该视图(如果已存在)。
视图名称这是我们想要创建的视图的名称。
WHERE 条件这些条件是可选的,对于要添加到视图中的任何值,它们必须满足。

要在 psql 中创建视图,我们将遵循以下步骤

步骤 1

首先,我们将在我们的本地系统中打开 psql,我们将提供密码并登录到 psql。

PostgreSQL View

步骤 2

现在,我们将使用以下命令选择或连接所需的数据库 (javatpoint)。

一旦我们执行了上述命令,我们将连接到 javatpoint 数据库,如下图所示

PostgreSQL View

步骤 3

我们将使用在 PostgreSQL 教程的前面部分中创建的 Book 表。

要查看 Book 表中存在的所有列,我们将使用 select 命令,如下所示

PostgreSQL View

步骤 4

现在,我们准备好使用 CREATE VIEW 命令 借助 Book 表来 创建视图,如下所示

输出

一旦我们执行了上述命令,我们将收到以下消息,表明 book_view 已成功创建。

PostgreSQL View

步骤 5

之后,我们将使用 Select 命令来检查 book_view 中记录的价值是否高于 200。

输出

执行上述命令后,我们将获得 book_cost 大于 200 的那些记录。

PostgreSQL View

虽然 Book 表有 条记录,但在这里,我们将获得 三条记录,这些记录已添加到特定视图中。

我们正在创建一个视图,该视图仅包含 Book 表的一列,借助以下命令

输出

执行上述命令后,我们将收到以下消息,表明 book_view2 已成功创建。

PostgreSQL View

book_view2 仅包含 Book 表中的 Book_cost 列。 在这里,我们将使用 Select 命令来查看 book_view2 视图的数据

输出

执行上述命令后,我们将获得成本大于 225 的那些记录。

PostgreSQL View

更改 PostgreSQL 视图

要在 psql 中更改 PostgreSQL 视图,我们将使用 CREATE OR REPLACE VIEW 命令,因为视图的定义可以在不删除它的情况下进行修改。

更改 PostgreSQL 视图的语法

更改 PostgreSQL 视图的语法如下

注意:PostgreSQL 9.4 之前的版本不支持删除视图中剩余的列。 如果我们需要执行它,我们将收到以下错误消息 “[Err] ERROR: 无法从视图中删除列”。 这就是为什么查询必须创建与创建视图时创建的列相似的列。

详细来说,新列需要相似的数据类型、相似的名称和与它们生成时相似的顺序。 但 PostgreSQL 允许我们在列列表的末尾添加更多列。

所以,为此,我们需要 三个表 Book、User1 和 book_view2 来更改 PostgreSQL 视图。

我们将使用 SELECT 命令来检查 Book、User1book_view2 表中存在的记录。

借助 select 命令,Book_view2 表如下


PostgreSQL View

借助 Select 命令,Book 表如下


PostgreSQL View

我们可以借助 Select 命令查看 User1 表中现有的数据


PostgreSQL View

例如,在以下命令中,我们将使用 Create or Replace view 命令 来更新视图 book_view2

输出

执行上述命令后,我们将收到以下消息窗口,显示 book_view2 已成功创建。

PostgreSQL View

现在,我们将使用 Select 命令来检查该操作在执行上述命令后是否正常工作

输出

一旦我们执行了上述命令,我们将获得以下结果,我们可以在其中看到视图已更改,因为我们使用了 JOIN 命令,现在我们有两个来自两个不同表的列。

PostgreSQL View

修改 PostgreSQL 视图

要更改视图的定义,我们使用 ALTER VIEW 命令。

例如,我们可以使用以下语句将视图的名称从 book_view2 修改为 book_info

输出

一旦我们执行了上述命令,我们将收到以下消息窗口,显示 book_view2 已成功修改。

PostgreSQL View

如果我们从 book_view2 中选择数据,我们将收到以下 错误,正如我们可以在下面的屏幕截图中看到的那样

PostgreSQL View

删除 PostgreSQL 视图

要删除 PostgreSQL 视图,我们可以使用 DROP VIEW 命令。

语法

drop view 命令的语法如下

在上面的语法中,我们有以下参数

参数描述
视图名称视图名称 参数用于指定视图的名称,我们想要删除。
如果存在它是一个可选参数,只有当我们不定义它并尝试删除一个不存在的视图时,我们才会收到一个错误。

在这里,我们删除在上述部分使用 drop view 命令创建的 book_info

输出

执行上述命令后,我们将收到以下消息,显示该特定视图已成功删除。

PostgreSQL View
下一主题PostgreSQL Join