课堂练习:
创建视图并查看:

创建较为复杂的视图:

查看系统视图:(其实应该是系统中有哪些视图)

修改视图名称、视图属主:

删除视图:

怎么会没有?原来应该写schema名称:

做作业:
1.为系统表PG_DATABASE创建视图,重命名视图并修改owner为jim,
create schema zhanghui;
create view zhanghui.my_view1 as
select * from pg_database;

select * from pg_views where viewname = 'zhanghui.my_view1' or viewname='zhanghui.my_view2';

select * from pg_views where viewname = 'my_view1' or viewname='my_view2';

原来view都在pg_views里面。不管前面有没有前缀。
alter view my_view1 rename to my_view10;
不行
alter view zhanghui.my_view1 rename to zhanghui.my_view10;
不行。
alter view zhanghui.my_view1 rename to my_view10;
这个才可以。
select * from pg_views where viewname = 'my_view10' or viewname='my_view2';

create user jim identified by 'Test@1234';
alter view zhanghui.my_view10 owner to jim;
select * from pg_views where viewname = 'my_view10' or viewname='my_view2';

2.创建一个用户表student,并在用户表上创建视图,修改视图schema;
create table zhanghui.student
( id integer,
name varchar(80)
);
create view zhanghui.my_view2 as select * from zhanghui.student;
alter view zhanghui.my_view2 set schema public;
select * from pg_views where viewname = 'my_view10' or viewname='my_view2';

3.使用pg_views查看视图信息
select * from pg_views;
这个结果太多了。就不贴了。
4.删除视图、表、用户
drop view zhanghui.my_view10;
drop view my_view2;
drop table zhanghui.student;
drop user jim;

总结一下,view可以创建在schema下,也可以创建在public中。public下对view的操作是不需要加schema前缀的,schema下对view的操作要加schema前缀。但是在rename的时候又是前面要前缀,后面不要前缀。
总之语法貌似有点费解。。。




