域名 AXUM.RS 将于2025年10月到期。我们无意再对其进行续费,我们希望你能够接续这个域名,让更多 AXUM 开发者继续受益。
  • 方案1️⃣AXUM.RS 域名 = 3000
  • 方案2️⃣方案1️⃣ + 本站所有专题原始 Markdown 文档 = 5000
  • 方案3️⃣方案2️⃣ + 本站原始数据库 = 5500
如果你有意接续这份 AXUM 情怀,请与我们取得联系。
说明:
  1. 如果有人购买 AXUM.RS 域名(方案1️⃣),或者该域名到期,本站将启用新的免费域名继续提供服务。
  2. 如果有人购买了 AXUM.RS 域名,且同时购买了内容和/或数据库(方案2️⃣/方案3️⃣),本站将关闭。届时我们或许会以另一种方式与你再相遇。

视图

本章我们将讨论视图:创建、修改、删除视图。为高级篇的物化视图、递归视图等打好基础。

视图是一种存储在数据库中的,已命名的查询。它是一种逻辑表,通过 SELECT 语句表示一个或多个基础表的数据 。除了物化视图(将在高级篇进行讲解)外,视图不会在数据库中物理存储数据。

创建视图的语法为:

示例:为示例数据库建立 customer_master 视图,用于简化获取完整客户数据的查询操作:

CREATE VIEW customer_master AS
  SELECT cu.customer_id AS id,
    cu.first_name || ' ' || cu.last_name AS name,
    a.address,
    a.postal_code AS "zip code",
    a.phone,
    city.city,
    country.country,
        CASE
            WHEN cu.activebool THEN 'active'
            ELSE ''
        END AS notes,
    cu.store_id AS sid
   FROM customer cu
     INNER JOIN address a USING (address_id)
     INNER JOIN city USING (city_id)
     INNER JOIN country USING (country_id);

创建完视图之后,可以简单的:

SELECT
	*
FROM
	customer_master;

修改视图

CREATE OR REPLACE 视图名 AS 查询;
-- 或
ALTER VIEW 视图名 AS 查询;

删除视图

虽然 PostgreSQL 允许你在视图上使用 UPDATE/DELETE 语句,但强烈建议你不要在视图上对数据进行更改/删除。

视图应该是作为只读的存在,目的是为了简化查询,请不要通过视图对数据进行任何写操作。如果要对数据进行写操作,请通过对基础表的相关操作进行实现。

要查看完整内容,请先登录