Oracle中视图的应用
Oracle中视图的应用
需求:用户只需要查询A部门的员工数据,不需要开放所有数据给用户。
概念:
- 视图是一种虚表.
- 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
- 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
- 视图向用户提供基表数据的另一种表现形式
作用:
- 限制数据访问
- 简化复杂查询(将比较复杂并且经常要查询的数据封装成视图保存起来,以后只需要查这张表即可)
- 提供数据的相互独立
- 同样的数据,可以有不同的显示方式
视图的语法
创建视图:视图只能创建、替换和删除,不能修改。
在jack用户创建视图:(失败)
--复制scott用户的emp表
create or replace table emp as select * from scott.emp;
--在jack用户创建视图View
create view v_jack_emp --视图的名称
as select empno 编号,ename 姓名 from emp
with read only;
创建jack用户的视图失败,原因:权限不够,视图的创建也需要权限.
登陆system用户,赋予jack用户dba权限.
--赋予jack用户dba权限
grant dba to jack;
--jack用户再次创建视图View
create or replace View v_jack_emp --视图的名称
as select empno 编号,ename 姓名 from emp where deptno=A
with read only;
创建成功。通过视图查询。
create or replace 创建或替换
删除视图:
--删除视图v_jack_emp
drop view v_jack_emp;
视图的跨域访问
需求:在scott用户下访问jack用户的视图v_jack_emp
视图和表类似,如果直接在scott用户访问该视图肯定是没有权限的,因此jack用户要赋予scott查询该视图的权限。
--jack用户赋予scott用户视图查询权限
grant select on v_jack_emp to scott;
--登陆scott用户执行查询select * from jack.v_jack_emp;
视图还可以屏蔽筛选/修改不同字段、字段名称等(别名),因此,看到的时候的字段未必是真实表中存在的。
小结
视图和表的区别:
视图是实体表的映射,视图和实体表区别就是于视图中没有真实的数据存在。
什么时候使用视图:
1、在查询中,有一些表结构是不希望过多的人去接触,就把实体表映射为一个视图。
2、在项目过程中,程序人员主要关注编码的性能、业务分析这方面。对于一些复杂的SQL语句,提前把这些语句封装到一个视图中,供程序人员去调用
————欢迎大家沟通、指正---- QQ群:1071136320————