pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
CREATE VIEW — 定义一个新视图
CREATE [ OR REPLACE ] VIEWview[ (column name list) ] AS SELECTquery
view要创建的视图名称(可以带模式限定)。
column name list一个可选的名称列表,用作视图的列。如果给出,这些名称会覆盖本应从 SQL 查询推导出的列名。
query一条 SQL 查询(即 SELECT 语句),它将提供视图的列和行。
关于有效参数的更多信息,参见 SELECT。
CREATE VIEW视图创建成功时返回的消息。
ERROR: Relation 'view' already exists如果指定的视图已存在于数据库中,就会出现这个错误。
WARNING: Attribute 'column' has an unknown type如果你不指定类型,创建出的视图就会带有一个未知类型的列。例如,下面的命令会产生一条警告:
CREATE VIEW vista AS SELECT 'Hello World'
而这条命令则不会:
CREATE VIEW vista AS SELECT text 'Hello World'
CREATE VIEW 定义一个查询的视图。视图不会被物理物化;相反,会自动生成一条查询重写规则(一条 ON SELECT 规则)来支持对视图的 SELECT 操作。
CREATE OR REPLACE VIEW与之类似,但如果已经存在 同名视图,则会替换它。只能用一个生成相同列集合 (即相同的列名和数据类型)的新查询来替换视图。
如果给出了模式名(例如 CREATE VIEW myschema.myview ...),那么视图创建在指定的模式中。否则它创建在当前模式中(即搜索路径最前面的那个;见 CURRENT_SCHEMA())。视图名必须与同一模式中任何其他视图、表、序列或索引的名称都不同。
当前,视图是只读的:系统不允许在视图上执行插入、更新或删除。你可以通过创建规则,把对视图的插入等操作重写为对其他表的适当动作,来获得可更新视图的效果。更多信息见CREATE RULE。
使用DROP VIEW语句删除视图。
创建一个由所有喜剧(Comedy)影片组成的视图:
CREATE VIEW kinds AS
SELECT *
FROM films
WHERE kind = 'Comedy';
SELECT * FROM kinds;
code | title | did | date_prod | kind | len
-------+---------------------------+-----+------------+--------+-------
UA502 | Bananas | 105 | 1971-07-13 | Comedy | 01:22
C_701 | There's a Girl in my Soup | 107 | 1970-06-11 | Comedy | 01:36
(2 rows)
SQL92 为 CREATE VIEW 语句规定了一些额外的能力:
CREATE VIEWview[column[, ...] ] AS SELECTexpression[ AScolname] [, ...] FROMtable[ WHEREcondition] [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
完整 SQL92 命令的可选子句有:
此选项与可更新视图有关。视图上的所有 INSERT 和 UPDATE 命令都会被检查,以确保数据满足定义视图的条件。如果不满足,更新将被拒绝。
在该视图上检查完整性。
在该视图以及任何依赖视图上检查完整性。如果既未指定 CASCADE 也未指定 LOCAL,则假定使用 CASCADE。
CREATE OR REPLACE VIEW 是一种 PostgreSQL 语言扩展。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。