CREATE VIEW
功能描述
创建一个视图。视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。
注意事项
- 被授予CREATE ANY TABLE权限的用户,可以在public模式和用户模式下创建视图。
- 不可与同一模式下已存在的synonym产生命名冲突。
语法格式
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ FORCE | NOFORCE ] VIEW view_name [ ( column_name [, ...] ) ]
[ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ]
AS query [ WITH READ ONLY ];
- 创建视图时使用WITH(security_barrier)可以创建一个相对安全的视图,避免攻击者利用低成本函数的RAISE语句打印出隐藏的基表数据。
- 当视图创建后,不允许使用REPLACE修改本视图当中的列名,也不允许删除列。
参数说明
OR REPLACE
当CREATE VIEW语句中存在OR REPLACE时,表示若以前存在该视图就进行替换,但新查询不能改变原查询的列定义,包括顺序、列名、数据类型、类型精度等,只可在列表末尾添加其他的列。
TEMP | TEMPORARY
创建临时视图。
FORCE | NOFORCE
强制创建视图。正常情况下,如果基表不存在,创建视图就会失败。指定force选项可以强制创建视图。
如果仅在存在基表且包含视图的模式的所有者对基表具有特权的情况下才希望创建视图,则指定NOFORCE。NOFORCE是默认值。
view_name
要创建的视图名称。可以用模式修饰。
取值范围:字符串,符合标识符命名规范。
column_name
可选的名称列表,用作视图的字段名。如果没有给出,字段名取自查询中的字段名。
取值范围:字符串,符合标识符命名规范。
view_option_name [= view_option_value]
该子句为视图指定一个可选的参数。
目前view_option_name支持的参数仅有security_barrier,当VIEW试图提供行级安全时,应使用该参数。
取值范围:Boolean类型,TRUE、FALSE
query
为视图提供行和列的SELECT或VALUES语句。
with read only
指定此选项将被标记为只读视图。
此功能仅在Vastbase G100 V2.2 Build 10(Patch No.7)及以后版本的Oracle兼容模式下支持使用,参见CREATE VIEW创建只读视图。
示例
1、创建字段spcname为pg_default组成的视图。
CREATE VIEW myView AS SELECT * FROM pg_tablespace WHERE spcname = 'pg_default';
2、查看视图。
SELECT * FROM myView ;
返回结果如下:
spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative | spcthreshold ------------+----------+--------+------------+------------+----------+-------------- pg_default | 10 | | | | f | (1 row)
3、删除视图myView。
DROP VIEW myView;
相关链接