一、视图
1、视图概念
是对查询结果的一个封装
视图里面所有的数据,都是来自于原表,来自于它查询的那张表,视图本身不存储任何数据。
2、功能
(1)能够封装复杂的查询结果
(2)屏蔽表中的细节
3、语法:
create {or replace} view 视图的名称 as 查询语句 {with read only};
4、模拟视图屏蔽内容的方式
5、创建一个视图
create or replace view view_test1 as select ename,job,mgr from emp;
6、查看创建的视图(屏蔽了表当中的细节)
7、通过视图修改数据
update view_test1 set ename = 'SMITH2' where ename = 'SMITH';
修改视图当中的数据以后,视图的数据和原表当中的数据都会发生改变
select * from view_test1;
select * from emp;
8、注意:通常不要通过视图修改数据,视图创建的时候,通常要加上with read only
9、创建一个只读视图
create or replace view view_test2 as select ename,job,mgr from emp with read only;
10、查看这个只读视图
select * from view_test2;
11、修改这个只读视图
update view_test2 set ename = 'SMITH3' where ename = 'SMITH2';
报错,设置只读视图后不能修改
12、视图封装的复杂语句
create view view_test3 as select
sum(cc) "TOTAL",
sum(case yy when '1980' then cc end) "1980",
sum(case yy when '1981' then cc end) "1981",
sum(case yy when '1982' then cc end) "1982",
sum(case yy when '1987' then cc end) "1987"
from
(select to_char(hiredate,'yyyy') yy,count(1) cc from emp group by to_char(hiredate,'yyyy')) tt;
二、同义词的概念
1、建view_test3视图的同义词为dept
create synonym dept for view_test3;