📜  PostgreSQL视图

📅  最后修改于: 2020-11-30 09:17:52             🧑  作者: Mango

PostgreSQL视图

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

PostgreSQL视图介绍

VIEW是PostgreSQL中的伪表。它不是实体表,但显示为要选择的普通表。视图也可以表示联接的表。它可以包含一个表的所有行或一个或多个表中的选定行。

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

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

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

使用SQL Shell(PSQL)的PostgreSQL视图

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

创建PostgreSQL视图

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

句法

Create view命令的语法如下:

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

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

Parameters Description
OR REPLACE The OR REPLACE parameter will replace the view if it already exists.
The view name It is the name of the view that we wanted to create.
WHERE conditions These conditions are options, and they must be fulfilled for any values which have to be added in the view.

要在psql中创建视图,我们将执行以下步骤:

步骤1

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

第2步

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

postgres-# \c javatpoint  

一旦执行了以上命令,就将连接到javatpoint数据库,如下图所示:

第三步

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

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

Select * public."Book";

第四步

现在,我们已经准备好使用CREATE VIEW命令,如下所示创建书籍表的帮助下图

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

输出量

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

第5步

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

SELECT * FROM book_View;

输出量

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

尽管Book表具有四个记录,但在这里,我们将获得三个记录,这些记录已添加到特定视图中。

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

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

输出量

执行完上述命令后,我们将得到以下消息,即book_ view2已成功创建。

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

SELECT * FROM book_view2;

输出量

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

更改PostgreSQL视图

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

更改PostgreSQL视图的语法

在PostgreSQL中更改视图的语法如下:

CREATE OR REPLACE view_name 
AS 
query

注意:PostgreSQL 9.4之前的版本不支持删除视图中的其余列。如果需要执行此操作,则会收到以下错误消息“ [Err]错误:无法从视图中删除列”。这就是查询必须创建在创建视图时创建的类似列的原因。

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

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

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

通过使用select命令, Book_view2表如下所示:

Select * from book_view2;

在选择命令的帮助下, Book表如下所示:

Select * from public."Book";

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

Select * from User1;

例如,在以下命令中,我们将使用“创建”或“替换”视图命令来更新视图book_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已成功创建。

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

Select * from book_view2;

输出量

一旦执行了上面的命令,我们将获得以下结果,在该结果中,我们可以看到使用JOIN命令时视图已更改,现在,我们从两个不同的表中获得了两列。

更改PostgreSQL视图

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

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

ALTER VIEW book_view2 RENAME TO book_info;

输出量

一旦执行了以上命令,我们将获得以下消息窗口,该窗口显示book_view2已成功更改。

如果从book_view2中选择数据,则会得到以下错误,如下面的屏幕截图所示:

删除PostgreSQL视图

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

句法

drop view命令的语法如下:

DROP VIEW [IF EXISTS] view-name;

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

Parameters Description
View-name The view-name parameter is used to specify the name of the view, which we wanted to drop.
If Exists It is an optional parameter, and it is only necessary when we don’t define it and try to drop a view which does not exist, we will get an error.

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

DROP VIEW book_info;

输出量

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