Coursera 笔记

Module 03 · MySQL and PostgreSQL

Views数据库视图

Coursera ↗

通过本指南,您将能够了解视图的定义、创建与使用方法,掌握物化视图 (Materialized Views) 与普通视图的区别,并学习如何操作物化视图。


一、 什么是视图 (View)?

视图是展示来自一个或多个表(或其他视图)信息的另一种方式。你可以像操作普通表一样与视图进行交互,根据需要执行插入、更新和删除数据等操作。

视图的核心价值

  • 🔐 保护敏感数据:限制用户仅访问特定列。
  • 🛠️ 简化数据检索:预定义复杂的连接逻辑。
  • 📉 减少直接访问:降低用户直接操作底层基础表的频率。

应用案例:

假设有两张表存储员工信息。您可以创建一个视图,仅包含“姓名”和“邮箱”列。这样,用户无需了解数据存储在两张不同的表中,且无法访问敏感的“薪资 (Salary)”信息。


二、 在 pgAdmin 中创建与使用视图

在 PostgreSQL 的图形管理工具 pgAdmin 中,视图是在模式 (Schema) 级别创建的:

  1. 启动创建:在左侧树状视图中,右键点击 "Views" ➡️ 选择 "Create" ➡️ 点击 "View"。
  2. 命名与编码:在弹出的对话框中为视图命名,然后在 "Code" 页面输入定义该视图的 SQL 代码,最后点击 "Save"。
  3. 查看结构:保存后,视图将显示在文件夹中。展开视图即可查看其包含的列。
  4. 运行视图:右键点击视图名称 ➡️ 选择 "View/Edit Data" ➡️ 点击 "All rows",即可查看视图中的所有数据。

三、 物化视图 (Materialized View)

PostgreSQL 还支持一种特殊类型的视图——物化视图。

1. 核心机制

当您首次刷新物化视图时,查询结果会被物化(Materialized),即物理保存下来以备后用。

  • 性能优势:由于结果集已预先计算并通常存储在内存中,后续查询性能显著提升。
  • 操作限制:与普通视图不同,物化视图仅支持查询,无法执行更新、删除或插入操作。

2. 创建流程

过程与普通视图类似,但起始位置不同:

  1. 起始位置:必须从树状目录中的 "Materialized Views" 文件夹开始。
  2. 定义逻辑:输入视图名称及代码。
    • 示例:仅从 employee_details 表中提取 employee_id 和 salary 列,以实现薪资信息的匿名化处理。
  3. 数据刷新:由于物化视图存储的是数据的副本,在首次使用前必须进行刷新 (Refresh) 以获取当前行。

3. 数据同步

您可以随时刷新物化视图,以便将底层基础表中的最新数据更新到视图中。


视图 vs. 物化视图 对比表

特性 普通视图 (Regular View) 物化视图 (Materialized View)
存储方式 仅存储 SQL 逻辑,不存储数据 物理存储查询结果集
数据实时性 实时反映基础表的变化 需手动刷新方可同步最新数据
性能 查询时执行逻辑,对复杂查询较慢 查询速度极快(结果已预存)
DML 操作 支持插入、更新、删除 (视条件而定) 仅限查询 (Read-only)

总结回顾

  • 视图是呈现一个或多个表数据的另一种方式。
  • 视图常用于限制敏感数据访问和简化检索流程。
  • 物化视图通过存储结果集实现更快的访问速度。
  • 使用物化视图时,无法对行进行插入、更新或删除操作。