PostgreSQL View


PostgreSQL View

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

PostgreSQL View介绍

VIEW 是 PostgreSQL 中的一个伪表;它不是一个实体表,而是一个普通的表以供选择。View还可以表示连接表。它可以包含一个表的所有行或从一个或多个表中选择的行。

一个View简化了用户执行以下方面的工作:

  • 它自然而直观地构建数据,并且易于查找。
  • 我们可以通过一个View向用户授权,它有一个完整的记录,用户有权查看。
  • 它限制对数据的访问,使用户只能看到有限的数据而不是完整的数据。
  • View提供了一个可靠的层,甚至是必要的表修改的列。
  • 它汇总来自各种表格的数据以生成报告。
  • View可以帮助我们描述语句的难度,因为我们可以借助 SELECT 命令编写基于复杂查询的View命令。

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

使用 SQL shell (PSQL) 查看 PostgreSQL

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

创建 PostgreSQL View

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

句法

创建View命令的语法如下:

CREATE [OR REPLACE] VIEW view-name AS  
 SELECT column(s)  
 FROM table(s)  
 [WHERE condition(s)];

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

参数 描述
OR REPLACE 如果View已经存在,则 OR REPLACE 参数将替换该View。
The view name 它是我们想要创建的View的名称。
WHERE conditions 这些条件是选项,对于必须添加到View中的任何值,必须满足这些条件。

要在 psql 中创建View,我们将按照以下步骤操作:

步骤1

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

PostgreSQL View

第2步

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

postgres-# \c javatpoint

一旦我们执行了上面的命令,我们就会连接到javatpoint数据库,如下图所示:

PostgreSQL View

第 3 步

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

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

Select * public."Book";

PostgreSQL View

第四步

现在,我们准备好在Book\表的帮助下使用CREATE VIEW 命令**创建一个View**,如下所示:

CREATE VIEW book_View AS SELECT BookID, Book_cost   
FROM public."Book"   
where Book_cost > '200';

输出

一旦我们执行了上面的命令,我们将得到以下消息,即book_view已成功创建。

PostgreSQL View

第 5 步

之后,我们将使用 Select 命令检查book_view 中值大于 200 的记录。

SELECT * FROM book_View;

输出

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

PostgreSQL View

虽然Book\表有四个记录,但在这里,我们将获得添加到特定View的三个记录

我们正在创建一个View,其中仅包含Book\表的一列,借助以下命令:

CREATE VIEW Book_View2 AS   
SELECT book_cost   
FROM public."Book"   
WHERE book_cost > '225';

输出

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

PostgreSQL View

book_view2只包含Book_cost从列表。这里我们将使用 Select 命令查看book_view2View的数据:

SELECT * FROM book_view2;

输出

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

PostgreSQL View

更改 PostgreSQL View

要在 psql 中更改 PostgreSQL View,我们将使用CREATE OR REPLACE VIEW命令,因为可以修改View的定义而不必删除它。

更改 PostgreSQL View的语法

在 PostgreSQL 中更改View的语法如下:

CREATE OR REPLACE view_name   
AS   
query

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

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

因此,为此,我们需要三个表 Book、User1 和 book_view2来更改 PostgreSQL View。

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

所述Book_view2\表是如下通过使用选择的命令:

Select * from book_view2;

PostgreSQL View

书\表如下用的帮助下选择命令:

Select * from public."Book";

PostgreSQL View

Select命令的帮助下,我们可以看到User1\表中可用的现有数据:

Select * from User1;

PostgreSQL View

例如,在下面的命令中,我们将使用创建或替换View命令来更新Viewbook_view2

CREATE or REPLACE VIEW book_view2 AS  
SELECT book_cost, user_name  
FROM public."Book"  
INNER JOIN User1  
ON public."Book".UserID = User1.UserID  
WHERE book_cost > '225';

输出

执行上面的命令后,我们会得到下面的消息窗口,显示book_view2已经创建成功。

PostgreSQL View

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

Select * from book_view2;

输出

一旦我们执行了上面的命令,我们将得到下面的结果,我们可以看到在我们使用 JOIN 命令时View已经改变,现在我们有来自两个不同表的两列。

PostgreSQL View

更改 PostgreSQL View

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

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

ALTER VIEW book_view2 RENAME TO book_info;

输出

一旦我们执行了上面的命令,我们会得到下面的消息窗口,这表明book_view2已经被修改成功。

PostgreSQL View

如果我们从book_view2 中选择数据,我们将收到以下错误,如下面的屏幕截图所示:

PostgreSQL View

删除 PostgreSQL View

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

句法

drop view命令的语法如下:

DROP VIEW [IF EXISTS] view-name;

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

参数 描述
View-name View名称参数用于指定的观点,这是我们想放弃的名称。
If Exists 它是一个可选参数,只有当我们没有定义它并试图删除一个不存在的View时才需要它,我们会得到一个错误。

在这里,我们将删除book_info,它是我们在上一节中使用 drop view 命令创建的:

DROP VIEW book_info;

输出

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

PostgreSQL View