PostgreSQL 视图
概述
视图(View)是基于 SQL 查询结果定义的虚拟表。视图本身不存储数据,而是在每次查询时动态执行其定义的 SQL 语句。视图的主要用途包括简化复杂查询、提供数据访问安全控制,以及为应用程序提供稳定的数据接口。
创建视图
使用 CREATE VIEW 语句创建视图:
使用 CREATE OR REPLACE VIEW 可以在视图已存在时更新其定义:
使用视图
视图的使用方式与普通表完全相同:
可更新视图
满足以下条件的简单视图支持 INSERT、UPDATE、DELETE 操作:
- 视图基于单个表
- 不包含聚合函数、
DISTINCT、GROUP BY、HAVING、UNION - 不包含子查询
WITH CHECK OPTION
使用 WITH CHECK OPTION 可以防止通过视图插入或更新不符合视图条件的数据:
物化视图
物化视图(Materialized View)与普通视图不同,它会将查询结果实际存储在磁盘上,适合计算量大但数据更新不频繁的场景:
提示
使用 CONCURRENTLY 选项进行并发刷新时,物化视图上必须有唯一索引。
删除视图
小结
视图要点:
- 视图是基于查询定义的虚拟表,不实际存储数据
- 简化复杂查询,提供数据安全控制
- 简单视图可以执行插入、更新、删除操作
WITH CHECK OPTION确保通过视图修改的数据始终符合视图条件- 物化视图将结果缓存到磁盘,适合计算密集型查询,需手动刷新