视图
视图与基本表不同,不是物理上实际存在的,是一个虚表。
数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。
若基本表中的数据发生变化,从视图中查询出来的数据也随之改变。
视图每次被引用的时候都会运行一次。
从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。
1、创建视图的语法格式
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW view_name [ ( column_name [, ...] ) ]
[ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ]
AS query;
参数说明
OR REPLACE:如果视图已存在,则重新定义。
TEMP | TEMPORARY:创建临时视图。
view_name:要创建的视图名称。可以用模式修饰。
column_name:可选的名称列表,用作视图的字段名。如果没有给出,字段名取自查询中的字段名。
view_option_name [= view_option_value]:该子句为视图指定一个可选的参数。
query:为视图提供行和列的SELECT或VALUES语句。
2、更改视图的语法格式
--设置视图列的默认值
ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name SET DEFAULT expression;
--取消列视图列的默认值
ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name DROP DEFAULT;
--修改视图的所有者
ALTER VIEW [ IF EXISTS ] view_name OWNER TO new_owner;
--重命名视图
ALTER VIEW [ IF EXISTS ] view_name RENAME TO new_name;
--设置视图的所属模式
ALTER VIEW [ IF EXISTS ] view_name SET SCHEMA new_schema;
3、删除视图的语法格式
DROP VIEW [ IF EXISTS ] view_name [, ...] [ CASCADE | RESTRICT ];
CASCADE | RESTRICT
CASCADE:级联删除依赖此视图的对象(比如其他视图)。
RESTRICT:如果有依赖对象存在,则拒绝删除此视图。此选项为缺省值。
课程作业
1.1 为系统表PG_DATABASE创建视图
create schema lvzz;
create view lvzz.view1 as select * from pg_database;
\d+ lvzz.view1;

1.2 重命名视图并修改owner为jim
alter view lvzz.view1 rename to view11;
\d+ lvzz.view11;
create user jim password 'abc@123456';
alter view lvzz.view11 owner to jim;


2.1 创建一个用户表student,并在用户表上创建视图
create table lvzz.student
(
id integer,
name varchar(20),
sage integer
);
create view view2 as select * from lvzz.student;
\d+ view2;

2.2 修改视图的schema
alter view view2 set schema lvzz;
\d+ view2;
\d+ lvzz.view2;

3、使用pg_views查看视图信息
select * from pg_views where viewname = 'view11' or viewname = 'view2';

4、删除视图、表、用户
drop view lvzz.view11;
drop view lvzz.view2;
drop table lvzz.student;
drop user jim;

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




