Man page - create_view(7)

Manual

CREATE VIEW

NAME
SYNOPSIS
DESCRIPTION 描 述
PARAMETERS 参 数
NOTES 注 意
EXAMPLES 例 子
COMPATIBILITY 兼 容 性
译 者


NAME

CREATE VIEW - 定 义 一 个 视 图

SYNOPSIS

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

DESCRIPTION 描 述

CREATE VIEW 定 义 一 个 查 询 的 视 图 。 这 个 视 图 不 是 物 理 上 实 际 存 在 ( 于 磁 盘 ) 的 。 具 体 的 说 , 自 动 生 成 一 个 改 写 索 引 规 则 ( 一 个 ON SELECT 规 则 ) 的 查 询 用 以 支 持 在 视 图 上 的 检 索 。

CREATE OR REPLACE VIEW 类 似 , 不 过 是 如 果 一 个 同 名 的 视 图 已 经 存 在 , 那 么 就 替 换 它 。 你 只 能 用 一 个 生 成 相 同 字 段 的 新 查 询 替 换 一 个 视 图 ( 也 就 是 说 , 同 样 字 段 名 和 数 据 类 型 ) 。

如 果 给 出 了 一 个 模 式 名 ( 比 如 , CREATE VIEW myschema.myview ...) , 那 么 该 视 图 是 在 指 定 的 模 式 中 创 建 的 。 否 则 它 是 在 当 前 模 式 中 创 建 的 。 该 视 图 名 字 必 需 和 同 一 模 式 中 任 何 其 它 视 图 , 表 , 序 列 或 者 索 引 的 名 字 不 同 。

PARAMETERS 参 数

name

所 要 创 建 的 视 图 名 称 ( 可 以 有 模 式 修 饰 ) 。

column_name

一 个 可 选 的 名 字 列 表 , 用 于 当 作 视 图 的 字 段 名 。 如 果 没 有 给 出 , 字 段 名 取 自 查 询 。

query

一 个 将 为 视 图 提 供 行 和 列 的 查 询 ( 也 就 是 一 条 SELECT 语 句 ) 。

请 参 阅 SELECT [ select (7)] 获 取 有 效 查 询 的 更 多 信 息 。

NOTES 注 意

目 前 , 视 图 是 只 读 的 : 系 统 将 不 允 许 在 视 图 上 插 入 , 更 新 , 或 者 删 除 数 据 。 你 可 以 通 过 在 视 图 上 创 建 把 插 入 等 动 作 重 写 为 向 其 它 表 做 合 适 操 作 的 规 则 来 实 现 可 更 新 视 图 的 效 果 。 更 多 信 息 详 见 CREATE RULE [ create_rule (7)].

使 用 DROP VIEW 语 句 删 除 视 图

请 注 意 视 图 字 段 的 名 字 和 类 型 不 一 定 是 你 们 期 望 的 那 样 。 比 如 ,

CREATE VIEW vista AS SELECT ’Hello World’;

在 两 个 方 面 很 糟 糕 : 字 段 名 缺 省 是 ?column?, 并 且 字 段 的 数 据 类 型 缺 省 是 unknown。 如 果 你 想 视 图 的 结 果 是 一 个 字 串 文 本 , 那 么 用 类 似 下 面 这 样 的 东 西

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

对 视 图 引 用 的 表 的 访 问 的 权 限 由 视 图 的 所 有 者 决 定 。 不 过 , 在 视 图 里 调 用 的 函 数 当 作 他 们 直 接 从 使 用 视 图 的 查 询 里 调 用 看 待 。 因 此 , 视 图 的 用 户 必 须 有 使 用 视 图 调 用 的 所 有 函 数 的 权 限 。

EXAMPLES 例 子

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

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

COMPATIBILITY 兼 容 性

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 的 扩 展 。

译 者

Postgresql 中 文 网 站 何 伟 平 <laser@pgsqldb.org>

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。
中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh