CREATE VIEW
功能描述
创建一个视图。视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。
注意事项
无。
语法格式
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW view_name [ ( column_name [, ...] ) ]
[ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ]
AS query;
创建视图时使用WITH(security_barriers)可以创建一个相对安全的视图,避免攻击者利用低成本函数的RAISE语句打印出隐藏的基表数据。
参数说明
OR REPLACE
如果视图已存在,则重新定义。
TEMP | TEMPORARY
创建临时视图。
view_name
要创建的视图名称。可以用模式修饰。
取值范围:字符串,符合标识符命名规范。
column_name
可选的名称列表,用作视图的字段名。如果没有给出,字段名取自查询中的字段名。
取值范围:字符串,符合标识符命名规范。
view_option_name [= view_option_value]
该子句为视图指定一个可选的参数。
目前view_option_name支持的参数仅有security_barrier,当VIEW试图提供行级安全时,应使用该参数。
取值范围:Boolean类型,TRUE、FALSE
query
为视图提供行和列的SELECT或VALUES语句。
示例
--创建字段spcname为pg_default组成的视图。
vastbase=# CREATE VIEW myView AS
SELECT * FROM pg_tablespace WHERE spcname = 'pg_default';
--查看视图。
vastbase=# SELECT * FROM myView ;
--删除视图myView。
vastbase=# DROP VIEW myView;
--创建物化视图。
--创建表student
vastbase=# create table student(
vastbase(# student_no int4 primary key,
vastbase(# student_name varchar(30),
vastbase(# age int2 );
CREATE TABLE
vastbase=# insert into student values(1,'xiaoming',12);
INSERT 0 1
vastbase=# insert into student values(2,'xiaohong',11);
INSERT 0 1
-- 创建视图
vastbase=# create view v_student as select * from student;
CREATE VIEW
-- 创建物化视图
vastbase=# create materialized view mv_student as select * from student;
SELECT 2
Vastbase=# select * from mv_student ;
Student_no | student_name | age
-----------+----------------+-------
1 | xiaoming | 12
2 | xiaohong | 11
(2 rows)