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————

posted @ 2021-08-16 10:39  倾城旧梦  阅读(381)  评论(0编辑  收藏  举报