前言
视图就是一张或多张表上的预定义查询。
视图作用:减少子查询的复杂性;提高运行效率;可以仅提供视图数据,提高数据的安全性。视图以定义的方式存储在数据库中,不
前言
视图就是一张或多张表上的预定义查询。
视图作用:减少子查询的复杂性;提高运行效率;可以仅提供视图数据,提高数据的安全性。视图以定义的方式存储在数据库中,不占用表空间。
查询视图的时候就是执行视图里封装的逻辑,逻辑里用到的表称为 基表。
一、创建视图
视图的命名:通常结尾带_V
。
视图创建语法:
create or replace view 视图名称_V as 查询的逻辑 (select); -- with read only; 可以增加只读属性
二、查询、删除视图
查询视图就是查询视图中封装的sql逻辑的内容
查看视图的语法:
select * from 视图名;
删除视图的语法:
DROP VIEW 视图名_V;
三、视图的优点
- 可以简化日常操作
- 增加数据使用的安全性
- 减少网络数据传输
- 可以增加只读属性(with read only),保障数据安全
例一:简化日常的操作 --将常用的SQL封装到视图中
步骤一:创建查询视图:
create or replace view aa_v as select f.deptno 部门编号,f.dname 部门名称 ,count(e.empno) 部门人数 , avg(e.sal) 平均工资,max(e.sal) 最大工资,min(e.sal) 最小工资,sum(e.sal) 工资总和 from dept f left join emp e on f.deptno=e.deptno group by f.deptno,f.dname order by f.deptno;
步骤二:查看视图
select * from aa_v;
例二:增加数据的安全性 --屏蔽掉私密数据(如工资,奖金)
给用户查看视图bb_v权限,不给看emp表权限;
步骤一:创建查询视图:
create or replace view bb_v as select empno,ename,job,mgr,deptno from emp;
步骤二:查看视图
select * from bb_v;
例三:视图的修改
步骤一:创建查询视图:
create table emp_111 as select * from emp; create or replace view cc_v as select empno,ename,job,mgr,deptno from emp_111;
步骤二:查看视图
select * from cc_v;
步骤三:修改视图
update cc_v set deptno=50 where empno=7788; commit; --提交
步骤四:再次查看视图
视图数据发生了改变
select * from cc_v;
查看原表中的数据,发现原表的数据也发生了改变。
select * from emp_111;
例四:视图增加只读属性,防止别人对数据进行修改
步骤一:创建查询视图:
create or replace view dd_v as select empno,ename,job,mgr,deptno from emp_111 with read only; --加上只读属性
步骤二:查看视图
select * from dd_v;
步骤三:尝试修改只可读视图
发现修改视图内容报错误。
update cc_v set deptno=50 where empno=7788; commit; --提交
例五:视图当表用
步骤一:创建查询视图:
CREATE OR REPLACE VIEW EMP_ENAME_V AS SELECT T.EMPNO ,T.ENAME ,T.DEPTNO ---函数返回的结果一定要给别名 ,TO_CHAR(T.HIREDATE,'YYYY') as rz_year FROM EMP T; --基表
步骤二:查看视图
select * from EMP_ENAME_V; --查询视图就是查询视图中封装的sql逻辑的内容;
步骤三:视图当做表进行过滤查询
SELECT * FROM EMP_ENAME_V TWHERE T.EMPNO = 7369;
例六:视图嵌套使用
步骤一:创建查询视图:
CREATE OR REPLACE VIEW EMP_DEPT_V AS SELECT T.EMPNO ,T.ENAME ,T2.DNAME FROM EMP_ENAME_V T INNER JOIN DEPT T2 ON T.DEPTNO = T2.DEPTNO;
步骤二:查看视图
SELECT * FROM EMP_DEPT_V;
删除视图
DROP VIEW EMP_DEPT_V;
例七:with as 结合视图使用
步骤一:创建查询视图:
create or replace view hh_v as with table1 as(select * from emp where deptno=10), table2 as(select * from emp where deptno=20), table3 as(select* from dept) select e.*,f.dname,f.loc from table1 e inner join table3 f on e.deptno = f.deptno;
步骤二:查看视图
select * from hh_v;
附:如何使用Oracle创建多表视图?
总结
到此这篇关于Oracle视图的创建、使用以及删除操作方法大全的文章就介绍到这了,更多相关Oracle视图创建使用及删除内容请搜索好代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好代码网!