定义一个新的视图。

语法

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

说明

CREATE VIEW 定义查询视图。该视图不会实物化。相反,每次在查询中引用该视图时都会运行查询。

CREATE OR REPLACE VIEW 与此相似,但如果已经存在同名的视图,会将其替换。

如果已给出 schema 名称(例如,CREATE VIEW myschema.myview ...),则会在指定的 schema 中创建视图。否则在当前 schema 中创建。视图名称不得与同一 schema 中其他所有视图、表、序列或索引的名称相同。

参数

参数 说明
name 要创建的视图的名称(可能是 schema 限定的)。
column_name 用于视图列的可选名称列表。如果未给出,可以通过查询推断出列名称。
query 提供视图中行和列的查询(即 SELECT 语句)。
说明 有关有效查询的更多信息,请参见 SELECT

注释

视图在当前是只读的,即系统不允许在视图上执行插入、更新或删除。要了解可更新视图的效果,可以创建规则以将在视图上插入等操作重写为对其他表执行相应操作。

对视图中所引用表的访问权限由视图所有者的权限决定。不过,对于视图中调用的函数,按照通过使用视图的查询直接调用它们的相同方式处理。因此,视图用户必须有权调用视图使用的所有函数。

示例

创建一个包括部门 30 中所有员工的视图:

CREATE VIEW dept_30 AS SELECT * FROM emp WHERE deptno = 30;