当前位置: 首页 > ai >正文

Oracle视图

一:视图简介

视图存在于oracle数据字典中,不占用空间
视图可以增删改查以及复杂查询(修改有一点的局限性)

安全性: 视图可以隐藏一些数据
易用性:可使复杂的查询易于理解和使用
同步性: 基础表同步到视图,视图同步到基本表

1.1视图优点

1.1.1 视点集中
用户只能查看视图指定的数据列,保证数据安全性

1.1.2简化操作
视图可以隐藏表与表之间的复杂关联操作

1.1.3定制数据
让不同用户看到不同数据

1.1.4合并分割数据
对于水平/垂直切分的表,在视图上可以保持原来的结构关系

1.1.5逻辑数据独立性
如果应用建立在数据表上,当数据库表发生变化的时候,可以在表上建立视图,通过视图屏蔽表的变化,从而使应用程序可以不动
如果应用建立在数据表上,当视图发生变化的时候,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表可以不动
如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而使应用程序可以不动
如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而使数据库表可以不动

1.1.6安全性
通过视图可以限制用户在数据的不同子集上
使用权限可被限制在基表的行的子集上
使用权限可被限制在基表的列的子集上
使用权限可被限制在基表的行和列的子集上
使用权限可被限制在多个基表的连接所限定的行上
使用权限可被限制在基表中的数据的统计汇总上
使用权限可被限制在另一个视图的一个子集上,或是一些视图和基表合并后的子集上

1.2使用视图注意事项

视图只是具有名称的已保存查询.基于视图创建视图最终将导致性能问题
每个视图可以造成自己对数据更新的限制,由于视图可能基于视图而创建,所以结果可能不允许用户更新数据
如果使用不当,视图可能也允许用户添加或删除不属于视图范围内的记录,这样会造成数据完整性和安全性问题

二:创建视图

CREATE [OR REPLACE] [FORCE/NOFORCE] VIEW 视图名称 [(列1,列2…)]
AS <QUERY_EXPRESSION>
[WITH CHECK OPTION [CONSTRAINT 约束名称]]
[WITH READ ONLY [CONSTRAINT 约束名称]];

解释:
[OR REPLACE] : 释放替换,最好保留,避免视图已存在而报错
[FORCE/NOFORCE] : 指定是否允许创建视图的查询语句存在语法错误
<QUERY_EXPRESSION>
[WITH CHECK OPTION [CONSTRAINT 约束名称]] : 确保执行的DML语句不会引起数据不出现在视图上 , 可以更新和插入数据,前提是必须满足创建视图时候的where子句的条件
[WITH READ ONLY [CONSTRAINT 约束名称]]; : 指定为只读视图,不允许插入和更新

2.1单表视图

create or replace view tmp_view as select * from tree where pid = 666;
注意:如果出错就加上force,允许query语句出错
例如: create or replace force view tmp_view as select * from tree where pid = 666;

2.2多表视图

只是在query语句上进行多表联查

2.3可更新视图: 由select语句决定

2.3.1 视图定义必须是一个简单的select语句,不能带连接,集合操作,即select语句的from子句中不能出现多个表,也不能有join,except,union,intersect
2.3.2 视图定义的select的子句中不能有distinct
2.3.3 select子句中各列必须来自基表(视图)列,不能是表达式
2.3.4 视图所基于的表(视图)必须是可更新的
2.3.5 视图定义的select子句的子查询的from子句不能有视图所基于的表(视图)
2.3.6 视图定义的select语句中不能含有group by子句
2.3.7 视图定义的select语句中不能含有having子句

2.4内联视图(inline view)

临时
一次性
结构不存储
理解为: from后面的子查询就是内联视图

2.5嵌套视图

在视图的基础上创建视图

三:使用视图

3.1插入数据

前提:可更新视图
insert into tmp_view values(…)

3.2修改数据

update tmp_view set … where …
注意: 这里列名使用视图的列名,而不是基表的列名

3.3删除数据

delete from tmp_view where …

3.4删除视图

drop view tmp_view

http://www.xdnf.cn/news/11384.html

相关文章:

  • 雷神加速器云顶之弈|PBE云顶S11赛季上线时间介绍
  • UltraEdit-32常用操作
  • 什么是Portlet
  • Samba使用LDAP对用户进行认证
  • javascript中onmousemove、onmouseover、onmouseenter 的不同
  • 出现RPC服务器不可用的解决方法
  • 关于Try catch问题与常见异常类型
  • Java8新特性之Nashorn
  • 实现光晕效果_摄影技巧:什么是“镜头光晕”,如何消除和善用光晕?
  • 什么是云呼叫中心?
  • Avisynth基础(一)
  • 最全GhostXP SP3系统安装方法(光盘安装|硬盘安装|U盘安装)详细图文教程
  • LDA与QDA
  • 什么是函数依赖?
  • .NET超简单轻量级的HTTP请求组件Flurl
  • 51使用LCD1602液晶显示(复习总结)
  • window.setInterval的用法与实例
  • Unix时间戳和北京时间的相互转换
  • 网络安全--安全攻防概述
  • VNN简介很好的网络软件工具
  • 【Linux 裸机篇(一)】ARM Cortex-A 架构基础、汇编基础
  • x86-64、amd64、arm、aarch64 都是些什么?
  • 设计模式——Proxy静态代理与动态代理
  • HVS人眼视觉系统(Human Visual System)
  • MATLAB教程四:MATLAB绘图
  • NFS-Ganesha框架学习
  • PHP从零开始--基础篇
  • delphi开发小白盒接口实现扫码控制
  • 前端需要知道的JSON.stringify的正确用法
  • 【转】 ID,ClientID和UniqueID