PostgreSQL View(视图)


PostgreSQL View 技术文档

简介

在关系型数据库中,视图(View)就是一个虚拟的表,是由一个或多个表的行数据产生的结果集。一个视图不是存储的数据,而是一个预定义的SELECT语句。经过预定义的SELECT语句中的条件,如果匹配行被发现,那么它们将会出现在视图中。所以,通过创建视图,我们可以方便地重用SELECT查询语句,尤其是对于复杂的SELECT查询语句。

创建视图

我们可以使用以下语法创建视图:

CREATE VIEW view_name AS
    SELECT column1, column2....
    FROM table_name
    WHERE [condition];

其中,view_name是我们想要创建的视图的名称,column1、column2…为需要在视图中展示的列名称,table_name表示我们需要从哪个表中获取数据,[condition]为过滤条件。

举例:

CREATE VIEW country_ecommerce AS
   SELECT
      country,
      sum(sales) as total_sales
   FROM
      sales_summary
   WHERE
      ecommerce = true
   GROUP BY
      country;

使用视图

创建成功后,我们可以使用以下语句查询视图:

SELECT * from view_name;

这个语句将会从创建的视图中获取数据。

除了这个,我们也可以使用视图在其他的语句中进行其他操作。例如:

SELECT country, total_sales/1000 as sales_k
FROM country_ecommerce
WHERE total_sales > 1000000
ORDER BY sales_k desc;

这样,我们就可以在视图中进行筛选、排序等操作,从而实现我们的目标。

优点

  • 视图可以隐藏表的细节和复杂性,从而简化了SQL语句。

  • 视图是虚拟的,因此,我们可以选择公开哪些数据,并且不会影响到原始数据的安全性。

  • 视图可以使得复杂查询更加容易。

  • 视图可以简化我们的应用程序中的SQL调用。

缺点

  • 视图可以对性能造成影响。尤其是在于视图所关联的表的数量或大小增加时,影响会更加明显。

  • 视图们不支持外键或其他约束。

总结

视图是一个非常有用的工具,可以帮助我们保护敏感数据、简化数据库访问,并提高我们 SQL 应用程序的性能。除此以外,还可以为应用程序提供更好的性能和数据访问安全性。