Oracle视图基础

--表的另一种形式,看起来很像表
--用view可以实现复杂的query====select

--创建一个视图
--当经常使用这个查询时封装成view
/*create or replace 表示在创建视图时,如果已存在同名的视图,则重新创建,
如果只用create 创建,则需将原有的视图删除后才能创建*/
drop view v1;
create view v1
as
select * from stud where name like '%a%';
--直接查询view
select * from v1;

--当往stud中增加信息也会增加到viewzhong
insert into stud(id,name) values(5,'rajk'); 
--创建一个可以修改表的视图
create or replace view v2(id,name)
as
select * from stud where name like '%a%';
select * from v2;
--通过视图写如数据
insert into v2 values(6,'sssss');--视图查询是查不到的
insert into v2 values(7,'sasss');--可以查到

--包含一部分列的视图
drop view v3;
select * from v3;
create or REPLACE view v3
as 
select id,name from stud where id<3;
insert into v3 values(8,'dd');
--一个只可以查询不能写入的视图
create or replace view v4(id,name)
as
select id,name from stud where id>4
WITH READ ONLY constraint v4_only;

--带检查的视图

create or replace view v5(id,name)
as
select id,name from stud where id>20
WITH check option;
insert into v5 values(10,'我是10号');
--视图 WITH CHECK OPTION where 子句违规
insert into v5 values(21,'我是21号');

--来自多个视图的表
drop view v6;
create  or REPLACE view v6
as
select s.name as 学生 ,c.name as 课程
from stud s inner join sc on s.id=sc.sid
inner join course c on sc.cid=c.id;

select * from v6;

---dba查询用户的视图
select * from USER_VIEWS;
原文地址:https://www.cnblogs.com/xiaweifeng/p/3675527.html