首页 > 代码库 > oracle 视图

oracle 视图

--视图
--1 提供了另一钟级别的表安全性
--2 隐藏数据的复杂性
--3 简化用户的sql命令
--4 隔离基表结构的改变
--5 通话重命名列 从另一个角度提供数据


--创建表
drop table person;
create table person(
pid integer primary key,
pname varchar2(10),
psex varchar2(5)
);

insert into person values(1,‘张三‘,‘男‘);
insert into person values(2,‘张2‘,‘女‘);
insert into person values(3,‘张3‘,‘男‘);
insert into person values(4,‘张4‘,‘女‘);
insert into person values(5,‘张5‘,‘男‘);
insert into person values(6,‘张6‘,‘女‘);
insert into person values(7,‘张7‘,‘男‘);
select *from person where psex=‘男‘ and pname=‘张三‘ and 1=1;
select *from person;

--创建视图
--视图:解决查询语句过长的问题
--语法
grant create view to scott;
create [or replace][force|noforce] view [schema.] 视图名
drop view psql1;
create view psql1 as select *from person where psex=‘男‘;

select *from psql1 ;


--修改视图
update psql1 set pname=‘李四‘ where pname=‘张三‘;

 

--创建一个只读视图

create view psql2 as select *from person where psex=‘男‘ with read only;

--修改视图 --报错不能对只读视图进行修改
update psql2 set pname=‘李2‘ where pname=‘张2‘;


--创建第二个视图 不加约束
create view psql3 as select *from person where psex=‘女‘;

select *from psql3;

--创建第二个视图 加约束 with check option
create view psql4 as select *from person where psex=‘女‘ with check option ;
select *from psql4;
insert into psql4 values(10,‘张11‘,‘男‘);--违反约束 psex=‘女

--force 强制为一个不存在的表创建视图

create force view v3 as select *from table3;
--不存在 有error
select *from v3;

 --查看视图

oracle 视图