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 的扩展。
最新文章
- python -->; 递归 以及装饰器
- OA(权限管理初步模块)
- Linux安全基础:网络配置命令
- 后台系统组件:一丶bootstrap table
- 【BZOJ】2084: [Poi2010]Antisymmetry
- switch多分支语句简析
- 主程序底部TabBar功能跟登录页面布局
- zookeeper 配置详解
- Machine Schedule(poj 1274)
- 亿级Web系统搭建——单机到分布式集群[转]
- Oracle —— 函数 length() 和 lengthb() 的区别
- BZOJ 3563 DZY Loves Chinese
- 类型转换之 PropertyEditorSupport类
- ${param.name}和${name}的区别
- 联合查询到gridview
- (数字IC)低功耗设计入门(八)——物理级低功耗设计&;to be continued?
- Centos7的目录结构
- linux随机生成密码
- 我发起并创立了一个 .Net 平台上的 Web 业务系统 基础库 开源项目 WebEasy
- 异步陷阱之IO篇