度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 2673|回复: 11
打印 上一主题 下一主题

[分享] oracle-视图(view)

[复制链接]

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
跳转到指定楼层
楼主
发表于 2020-6-28 14:30:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fteair 于 2017-7-28 14:31 编辑

一、视图的定义
视图也称为虚表,视图本身不占用物理存储空间,视图存放于数据字典中,简单的来说视图可以看做是sql语句的集合。视图从数据库中的表产生,这些表称为视图的基表,一个视图可以从另一个视图中产生。
视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些Oracle视图可以修改对应的基表,有些则不能(仅仅能查询)。
tips:对视图的查询没有限制,对视图的插入、删除、更新一般会有限制,所以为防止通过视图来修改基表的数据可以将视图创建为只读(带with read only)
二、视图的作用
[size=13.312px]1)提供各种数据表现形式, 可以使用各种不同的方式将基表的数据展现在用户面前, 以便符合用户的使用习惯(主要手段: 使用别[size=13.312px]名);
[size=13.312px]2)隐藏数据的逻辑复杂性并简化查询语句, 多表查询语句一般是比较复杂的, 而且用户需要了解表之间的关系, 否则容易写错; 如果[size=13.312px]基于这样的查询语句创建一个视图, 用户就可以直接对这个视图进行"简单查询"而获得结果. 这样就隐藏了数据的复杂性并简化了查询语句.[size=13.312px]这也是oracle提供各种"数据字典视图"的原因之一,all_constraints就是一个含有2个子查询并连接了9个表的视图(在catalog.sql中定义);
[size=13.312px]3)执行某些必须使用视图的查询. 某些查询必须借助视图的帮助才能完成. 比如, 有些查询需要连接一个分组统计后的表和另一[size=13.312px]表, 这时就可以先基于分组统计的结果创建一个视图, 然后在查询中连接这个视图和另一个表就可以了;
[size=13.312px]4)提供某些安全性保证. 视图提供了一种可以控制的方式, 即可以让不同的用户看见不同的列, 而不允许访问那些敏感的列, 这样就可[size=13.312px]以保证敏感数据不被用户看见;
[size=13.312px]5)简化用户权限的管理. 可以将视图的权限授予用户, 而不必将基表中某些列的权限授予用户, 这样就简化了用户权限的定义。
[size=13.312px]三、视图创建
[size=13.312px]SQL> create view vw_emp as select empno,ename,job,hiredate,deptno from emp;


[size=13.312px]  SQL> select * from vw_emp where deptno=10;
[size=13.312px]    MPNO ENAME JOB HIREDATE DEPTNO
[size=13.312px]----------     ---------- --------- ---------
    7782  CLARK  MANAGER   09-JUN-81  10
    7839  KING   PRESIDENT   17-NOV-81  10
    7934  MILLER  CLERK     23-JAN-82  10
  对简单视图进行DML操作:
  SQL> insert into vw_emp values(1,'a','aa','05-JUN-88',10);
  SQL> update vw_emp set ename='cc' where ename='KING';
  SQL> delete vw_emp where ename='cc';
  SQL> select * from vw_emp where deptno=10
        EMPNO ENAME      JOB       HIREDATE      DEPTNO
        ---------- ---------- --------- --------- ---------
          7782 CLARK      MANAGER   09-JUN-81         10
          7934 MILLER     CLERK     23-JAN-82         10
             1 a          aa        05-JUN-88         10
  基表也发生了相应的更改:
  SQL> select empno,ename,job,hiredate,deptno from emp where deptno=10;
   创建只读视图:
  SQL> create view vw_emp_readonly as select empno,ename,job,hiredate,deptno from emp with read only;
  删除视图:
  可以删除当前模式中的任何视图;
    如果要删除其他模式中的视图,必须拥有DROP ANY VIEW系统权限;
    视图被删除后,该视图的定义会从词典中被删除,并且在该视图上授予的“权限”也将被删除。视图被删除后,其他引用该视图的视图及存储过程等都会失效。
  drop view vw_test;
  四、查看视图:
  使用数据字典视图
  1 dba_views——DBA视图描述数据库中的所有视图
  2 all_views——ALL视图描述用户“可访问的”视图
  3 user_views——USER视图描述“用户拥有的”视图
  4 dba_tab_columns——DBA视图描述数据库中的所有视图的列(或表的列)
  5 all_tab_columns——ALL视图描述用户“可访问的”视图的列(或表的列)
  6 user_tab_columns——USER视图描述“用户拥有的”视图的列(或表的列)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
发表于 2020-6-28 15:48:19 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
板凳
发表于 2020-6-28 17:59:06 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
地板
 楼主| 发表于 2020-6-30 14:17:51 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
5#
 楼主| 发表于 2020-6-30 14:20:06 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
6#
发表于 2020-6-30 20:27:37 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
7#
 楼主| 发表于 2020-6-1 14:13:45 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
8#
发表于 2020-6-1 14:51:06 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
9#
 楼主| 发表于 2020-6-2 14:39:40 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
10#
发表于 2020-6-2 16:25:49 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-16 05:06 , Processed in 0.132122 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表