Module 03 · MySQL and PostgreSQL
Views数据库视图
通过本指南,您将能够了解视图的定义、创建与使用方法,掌握物化视图 (Materialized Views) 与普通视图的区别,并学习如何操作物化视图。
一、 什么是视图 (View)?
视图是展示来自一个或多个表(或其他视图)信息的另一种方式。你可以像操作普通表一样与视图进行交互,根据需要执行插入、更新和删除数据等操作。
视图的核心价值
- 🔐 保护敏感数据:限制用户仅访问特定列。
- 🛠️ 简化数据检索:预定义复杂的连接逻辑。
- 📉 减少直接访问:降低用户直接操作底层基础表的频率。
应用案例:
假设有两张表存储员工信息。您可以创建一个视图,仅包含“姓名”和“邮箱”列。这样,用户无需了解数据存储在两张不同的表中,且无法访问敏感的“薪资 (Salary)”信息。
二、 在 pgAdmin 中创建与使用视图
在 PostgreSQL 的图形管理工具 pgAdmin 中,视图是在模式 (Schema) 级别创建的:
- 启动创建:在左侧树状视图中,右键点击 "Views" ➡️ 选择 "Create" ➡️ 点击 "View"。
- 命名与编码:在弹出的对话框中为视图命名,然后在 "Code" 页面输入定义该视图的 SQL 代码,最后点击 "Save"。
- 查看结构:保存后,视图将显示在文件夹中。展开视图即可查看其包含的列。
- 运行视图:右键点击视图名称 ➡️ 选择 "View/Edit Data" ➡️ 点击 "All rows",即可查看视图中的所有数据。
三、 物化视图 (Materialized View)
PostgreSQL 还支持一种特殊类型的视图——物化视图。
1. 核心机制
当您首次刷新物化视图时,查询结果会被物化(Materialized),即物理保存下来以备后用。
- 性能优势:由于结果集已预先计算并通常存储在内存中,后续查询性能显著提升。
- 操作限制:与普通视图不同,物化视图仅支持查询,无法执行更新、删除或插入操作。
2. 创建流程
过程与普通视图类似,但起始位置不同:
- 起始位置:必须从树状目录中的 "Materialized Views" 文件夹开始。
- 定义逻辑:输入视图名称及代码。
- 示例:仅从
employee_details表中提取employee_id和salary列,以实现薪资信息的匿名化处理。
- 示例:仅从
- 数据刷新:由于物化视图存储的是数据的副本,在首次使用前必须进行刷新 (Refresh) 以获取当前行。
3. 数据同步
您可以随时刷新物化视图,以便将底层基础表中的最新数据更新到视图中。
视图 vs. 物化视图 对比表
| 特性 | 普通视图 (Regular View) | 物化视图 (Materialized View) |
|---|---|---|
| 存储方式 | 仅存储 SQL 逻辑,不存储数据 | 物理存储查询结果集 |
| 数据实时性 | 实时反映基础表的变化 | 需手动刷新方可同步最新数据 |
| 性能 | 查询时执行逻辑,对复杂查询较慢 | 查询速度极快(结果已预存) |
| DML 操作 | 支持插入、更新、删除 (视条件而定) | 仅限查询 (Read-only) |
总结回顾
- 视图是呈现一个或多个表数据的另一种方式。
- 视图常用于限制敏感数据访问和简化检索流程。
- 物化视图通过存储结果集实现更快的访问速度。
- 使用物化视图时,无法对行进行插入、更新或删除操作。