oracle视图

1.视图的定义

视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,视图基于的表称为基表。视图只有逻辑定义,每次使用的时候只是重新执行SQL。通过它可以对表里面的数据进行查询和修改。 视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据逻辑上的集合或组合。视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些Oracle视图可以修改对应的基表,有些则不能(仅仅能查询)。

2.视图的作用

1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
2.用户通过简单的查询可以从复杂查询中得到结果。
3.维护数据的独立性,试图可从多个表检索数据。
4.对于相同的数据可产生不同的视图。
5.简化用户权限的管理. 可以将视图的权限授予用户, 而不必将基表中某些列的权限授予用户,
这样就简化了用户权限的定义。
6.提供某些安全性保证. 视图提供了一种可以控制的方式, 即可以让不同的用户看见不同的列,
而不允许访问那些敏感的列, 这样就可以保证敏感数据不被用户看见

3.视图的创建

权限: 要在当前方案中创建视图, 用户必须具有create view系统权限; 要在其他方案中创建
视图, 用户必须具有create any view系统权限. 视图的功能取决于视图拥有者的权限.

语法: create [ or replace ] [ force ] view [schema.]view_name
                      [ (column1,column2,...) ]
                      as 
                      select ...
                      [ with check option ]  [ constraint constraint_name ]
                      [ with read only ]

其中:

 1 or replace: 如果存在同名的视图, 则使用新视图"替代"已有的视图
 2 force: "强制"创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限
 3 column1,column2,...:视图的列名, 列名的个数必须与select查询中列的个数相同; 如果select查询包含函数或表达式, 则必须为其定义列名.此时, 既可以用column1, column2指定列名, 也可以在select查询中指定列名.
 4 with check option: 指定对视图执行的dml操作必须满足“视图子查询”的条件即,对通过视图进行的增删改操作进行"检查",要求增删改操作的数据, 必须是select查询所能查询到的数据 ,否则不允许操作并返回错误提示. 默认情况下, 在增删改之前"并不会检查"这些行是否能被select查询检索到. 
 5 with read only:创建的视图只能用于查询数据, 而不能用于更改数据.

注意:

1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询;
2.在没有WITH CHECK OPTION和 READ ONLY 的情况下,查询中不能使用ORDER BY 子句;
3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值