历史版本。 PostgreSQL 6.4 已结束支持。 请参阅 当前版本手册.
CREATE VIEW
CREATE VIEW — 构造一个虚拟表
大纲
CREATE VIEWviewAS SELECTquery
输入
- →
view 要创建的视图的名称。
- →
query 一条 SQL 查询,它将提供视图的列和行。
关于有效参数的更多信息,参见 SELECT 语句。
输出
- →
CREATE 视图创建成功时返回的消息。
- →
WARN amcreate: "view" relation already exists 如果指定的视图已存在于数据库中,就会出现这个错误。
- →
NOTICE create: attribute named "column" has an unknown type 如果你不指定类型,创建出的视图就会带有一个未知类型的列。例如,下面的命令会产生一个错误:
CREATE VIEW vista AS SELECT 'Hello World'
而这条命令则不会:
CREATE VIEW vista AS SELECT 'Hello World'::text
描述
CREATE VIEW 将定义一个表的一个视图。该视图不会被物理物化。具体来说,会自动生成一条查询重写检索规则来支持对视图的检索操作。
注意
使用 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
兼容性
SQL92
SQL92 为 CREATE VIEW 语句规定了一些额外的能力:
CREATE VIEWview[column[, ...] ] AS SELECTexpression[AScolname] [, ...] FROMtable[ WHEREcondition] [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
- CHECK OPTION
此选项与可更新视图有关。视图上的所有 INSERT 和 UPDATE 都会被检查,以确保数据满足定义视图的条件。如果不满足,更新将被拒绝。
- LOCAL
在该视图上检查完整性。
- CASCADE
在该视图以及任何依赖视图上检查完整性。如果既未指定 CASCADE 也未指定 LOCAL,则假定使用 CASCADE。