↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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类型的访问方法。详见第 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

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

WITH [ NO ] DATA

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

兼容性

CREATE MATERIALIZED VIEW是一种 PostgreSQL扩展。

另见

语法演化

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

  1. PostgreSQL 18← 17正文更新

    正文更新
  2. PostgreSQL 17← 16正文更新

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

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

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

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

    + [ (column_name [, ...] ) ]+ [ USING method ]正文更新
  7. PostgreSQL 11← 10正文更新

    正文更新

同组命令

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