↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 8.0 已结束支持。 请参阅 当前版本手册.

CREATE VIEW

CREATE VIEW — 定义一个新视图

大纲

CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query

描述

CREATE VIEW定义一个视图,其内容来自一个查询。该视图不会被实际物化。相反,每次在查询中引用该视图时,都会执行定义它的查询。

CREATE OR REPLACE VIEW与之类似,但如果已经存在同名视图,则会替换它。只能用一个生成相同列集合(即相同的列名和数据类型)的新查询来替换视图。

如果给出了模式名称(例如,CREATE VIEW myschema.myview ...),则视图将在指定的模式中创建。否则,它将在当前模式中创建。视图的名称必须与同一模式中的任何其他视图、表、序列或索引的名称不同。

参数

name

要创建的视图名称(可以带模式限定)。

column_name

视图各列使用的名称列表,可选。若未给出,则从查询中推断列名。

query

一个查询(即SELECT语句),它将提供该视图的列和行。

有关有效查询的更多信息,请参见SELECT。

注解

当前,视图是只读的:系统不允许在视图上执行插入、更新或删除。你可以通过创建规则,把对视图的插入等操作重写为对其他表的适当动作,来获得可更新视图的效果。更多信息见CREATE RULE。

使用DROP VIEW语句删除视图。

应留意视图列的名称和类型是否按预期确定。例如:

CREATE VIEW vista AS SELECT 'Hello World';

这种写法在两方面都不好:列名默认是?column?,而且列数据类型默认为unknown。如果想要在视图结果中使用字符串字面量,可使用类似下面的写法:

CREATE VIEW vista AS SELECT text 'Hello World' AS hello;

对视图中引用的表的访问由视图所有者的权限决定。不过,视图中调用的函数与直接从使用该视图的查询中调用时的处理方式相同。因此,视图的使用者必须拥有调用视图所用全部函数的权限。

示例

创建一个由所有喜剧电影组成的视图:

CREATE VIEW comedies AS
    SELECT *
    FROM films
    WHERE kind = 'Comedy';

兼容性

SQL 标准为CREATE VIEW语句指定了一些额外的能力:

CREATE VIEW name [ ( column [, ...] ) ]
    AS query
    [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]

完整 SQL 命令的可选子句有:

CHECK OPTION

该选项与可更新视图有关。对视图的所有 INSERT 和 UPDATE 命令都会被检查,以确保数据满足视图定义条件(也就是说,新数据可以通过视图看到)。如果不满足,更新将被拒绝。

LOCAL

在该视图上检查完整性。

CASCADE

在该视图以及任何依赖视图上检查完整性。如果既未指定CASCADE也未指定LOCAL,则假定使用CASCADE。

CREATE OR REPLACE VIEW 是 PostgreSQL的一种语言扩展。

另见

DROP VIEW

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.