oracle之视图解析

一,视图的概念

视图是一个或多个表提取数据,柔和成一个虚拟表,可以当作表使用。

二,为什么要使用视图

简化复杂数据查询;

提高运行效率;

限制数据访问;

在不同数据访问上提供不同视图,便于数据共享;

三,创建、删除视图

创建:

create (or replace) view view_name as 数据查询语句;--注意:or replace当年创建视图存在需要替换时需加上

看结构:

desc view_name;

删除:

drop view view_name;

create table mytest(
  id number(3),
  name varchar2(20),
  age number(3)
);
insert into mytest values(1,'one',18);
insert into mytest values(2,'two',20);
insert into mytest values(3,'three',24);
commit;

--视图创建
create view myview as select * from mytest;
--视图查看
select * from myview;
--视图删除
drop view myview;


四,强制创建视图和对视图进行DML操作

create table mytest(
  id number(3),
  name varchar2(20),
  age number(3)
);
insert into mytest values(1,'one',18);
insert into mytest values(2,'two',20);
insert into mytest values(3,'three',24);
commit;

--视图强制创建
create or replace force view  myview as select * from mytest;
--------------------------------------------------------------
--视图查看
select * from myview;
--视图插入数据(insert)
insert into myview values(4,'four',25);
commit;
--视图查看
select * from myview;
--------------------------------------------------------------
--视图更新(delete)
update myview set name = 'fourfour' where id = 4;
commit;
--视图查看
select * from myview;
--------------------------------------------------------------
--视图数据删除
delete from myview;
commit;
--视图查看
select * from myview;
--------------------------------------------------------------
--视图删除
drop view myview;
-------------总结:视图就是一张虚拟表,我们可以根据业务需求
-------------自己定义表中的数据,对虚拟表进行DML操作

五,创建只读视图(with read only)

create table mytest(
  id number(3),
  name varchar2(20),
  age number(3)
);
insert into mytest values(1,'one',18);
insert into mytest values(2,'two',20);
insert into mytest values(3,'three',24);
commit;

--视图强制创建
create or replace force view  myview as select * from mytest with read only;
select * from myview;
delete from myview;--报错:不能对只读视图进行DML操作

总结:视图就是根据业务需求创建的虚拟表,能够进行DML操作,特别注意的是只读视图的创建,注意结尾的语法

你可能感兴趣的:(视图,view,with,read,only,Force)