选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / SQL 命令 / 表与视图

SQL COMMAND · 表与视图

CREATE MATERIALIZED VIEW

定义一个新物化视图

CREATE表与视图引入 10(基线)现存至 20 devel1 次语法变更

动词
CREATE
对象
MATERIALIZED VIEW
引入版本
10(基线)
状态
现存
语法变更次数
1
手册小节数
4

本站手册 · 18官方文档 ↗

版本轨迹

相对 PostgreSQL 17 语法未变,正文有更新。

语法铁道图 PostgreSQL 18

沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。

CREATE MATERIALIZED VIEW IF NOT EXISTS table_name ( column_name , ) USING method WITH ( storage_parameter = value , ) TABLESPACE tablespace_name AS query WITH NO DATA

语法概要

CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
    [ (column_name [, ...] ) ]
    [ USING method ]
    [ WITH ( storage_parameter [= value] [, ... ] ) ]
    [ TABLESPACE tablespace_name ]
    AS query
    [ WITH [ NO ] DATA ]

PostgreSQL 18 手册 · 查看完整参考页

描述

CREATE MATERIALIZED VIEW定义一个基于查询的物化 视图。在发出该命令时,会执行该查询并用其结果填充该视图(除非使用了 WITH NO DATA),之后可以使用 REFRESH MATERIALIZED VIEW来刷新它。

CREATE MATERIALIZED VIEW类似于 CREATE TABLE AS,不过它还会记住用于初始化该视图的 查询,以便后续按需刷新。物化视图具有很多与表相同的属性,但不支持临 时物化视图。

CREATE MATERIALIZED VIEW要求对该物化视图所用的模 式具有CREATE权限。

参数

IF NOT EXISTS

如果已存在同名物化视图,则不要抛出错误。在这种情况下会发出一条通 知。请注意,不能保证现有的物化视图与原本会创建出来的那个物化视图 有任何相似之处。

table_name

要创建的物化视图名称(可以带模式限定)。该名称必须与同一模式中的 任何其他关系(表、序列、索引、视图、物化视图或外部表)的名称不同。

column_name

新物化视图中的列名。如果没有提供列名,则采用查询输出列的名称。

USING method

该可选子句指定用于存储新物化视图内容的表访问方法;该方法必须是 TABLE类型的访问方法。详见 Chapter 62。如果未指定此选项,则会为新物化视图选择默 认表访问方法。详见default_table_access_method

WITH ( storage_parameter [= value] [, ... ] )

该子句为新物化视图指定可选的存储参数;更多信息见 CREATE TABLE文档中的 Storage Parameters。凡是 CREATE TABLE支持的参数, CREATE MATERIALIZED VIEW也同样支持。另见 CREATE TABLE

TABLESPACE tablespace_name

tablespace_name是 在其中创建新物化视图的表空间名称。如果没有指定, 将查阅default_tablespace

query

一个SELECTTABLEVALUES命令。 该查询将在一种安全受限的操作中运行。特别是,调用那些自身会创建临 时表的函数将会失败。另外,在该查询运行期间, search_path会被临时改为 pg_catalog, pg_temp

WITH [ NO ] DATA

该子句指定是否在创建时填充物化视图。如果不填充,则该物化视图会被 标记为不可扫描,在使用REFRESH MATERIALIZED VIEW 之前不能查询。

兼容性

CREATE MATERIALIZED VIEW是一种 PostgreSQL扩展。

另见

语法演化

相邻大版本之间的差异,新的在前。版本号链接到对应快照。

  1. PostgreSQL 18← 17正文更新

    正文更新
  2. PostgreSQL 15← 14正文更新

    正文更新
  3. PostgreSQL 14← 13正文更新

    正文更新
  4. PostgreSQL 13← 12正文更新

    正文更新
  5. PostgreSQL 12← 11语法变化

    + [ USING method ]正文更新
  6. PostgreSQL 11← 10正文更新

    正文更新

同组命令

命令动词对象版本变动最近变更
TABLES & VIEWS表与视图15 条
TRUNCATETRUNCATE
清空一个表或一组表现存
CREATE MATERIALIZED VIEWCREATEMATERIALIZED VIEW 121 次
定义一个新物化视图现存
ALTER MATERIALIZED VIEWALTERMATERIALIZED VIEW 142 次
更改一个物化视图的定义现存
DROP MATERIALIZED VIEWDROPMATERIALIZED VIEW
移除一个物化视图现存
REFRESH MATERIALIZED VIEWREFRESHMATERIALIZED VIEW
替换物化视图的内容现存
CREATE SEQUENCECREATESEQUENCE 141 次
定义一个新的序列发生器现存
ALTER SEQUENCEALTERSEQUENCE 141 次
更改序列发生器的定义现存
DROP SEQUENCEDROPSEQUENCE
移除一个序列现存
CREATE TABLECREATETABLE 206 次
定义一个新表现存
ALTER TABLEALTERTABLE 206 次
更改一个表的定义现存
DROP TABLEDROPTABLE
移除一个表现存
CREATE TABLE ASCREATETABLE AS 192 次
根据查询结果定义一个新表现存
CREATE VIEWCREATEVIEW
定义一个新视图现存
ALTER VIEWALTERVIEW 142 次
更改视图的定义现存
DROP VIEWDROPVIEW
移除一个视图现存