代码改变世界

Oracle视图

2020-03-19 19:22  默默不语  阅读(192)  评论(0编辑  收藏  举报
--管理员授予scott用户创建视图的权限
grant create view to scott; 

 

--我们频繁要获取ename和dname
select e.ename d.dname from emp e inner join in dept on d.deptno=e.deptno;
--查询速率:子查询<关联查询<单表查询
--作用1:将经常要用到的数据(查询出的一个结果集,作为一个视图)
create view ed as select e.ename,d.dname from emp e inner join dept d on e.deptno=d.deptno;
--表怎么用视图就怎么用
select * from ed;
--作用2:隐藏一些私密数据
create view ee as select empno,ename,job from emp;
select * from ee;
select * from emp;
--注意1:修改视图中的数据,表中的数据会不会变化:会变
update ee set job='smith' where ename='SMITH';
--删除视图
drop view ee;
select * from user_views;

--dba权限
--同义词(跨方案,跨用户的别名)
--要访问chen方案下的empp表
select * from chen.empp;
create synonym chen_empp for chen.empp;
select * from chen_empp;

--创建一个只包含20部门雇员的视图emp_d20
create view emp_d20 as select * from emp e where e.deptno=20;
select * from emp_d20;
--查询视图emp_d20中月薪大于2000的员工信息 
select * from emp_d20 ed20 where ed20.SAL>2000; 
--如果权限不足:切换到sys用户给scott授予create view的权限