一、概念

视图是基于一个或者多个表上的预定义查询,这些表称为基表,从视图中查询数据的方法与从基表中查询数据的方法相同。视图是一个查看数据的窗口,是查询语句模板,视图本身没有数据,在数据库中只保存了视图的定义。

视图具有以下优点:

1、可以向数据访问者只开放访问视图的权限,屏蔽基表信息。

2、可以将复杂的查询语句保存为视图,简化了SQL语句的编写。

3、创建视图的时候,可以限制只访问基表中的部分列或者部分行的数据,这样可以实现一定的安全性。

4、简化用户权限的管理,只授予用户使用视图的权限。

5、从基表中按一定的业务逻辑抽出用户关心的部分数据创建视图,简化了业务逻辑。

二、创建视图

语法:

create [or replace] [{force|noforce}] view 视图名
as
select查询语句
[with read only];

语法解析:

or replace: 如果视图已经存在,则替换旧视图。

force: 即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。

noforce: 如果基表不存在,无法创建视图,该项是默认选项。

with read only: 默认可以通过视图对基表执行增删改操作,with read only强调这是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

示例一:

在超女表中创建一个简单的视图V_GIRL,只提取编号、姓名、身材和颜值字段。

create or replace noforce view V_GIRL
as
select id,name,sc,yz from T_GIRL
with read only;

从V_GIRL视图中查询数据:

示例二:

连接EMP表和DEPT表创建视图V_EMPDETAIL,隐藏了工资(sal)和备注(comm)字段。

create or replace view V_EMPDETAIL
as
select empno,ename,job,hiredate,EMP.deptno,dnamefrom EMP join DEPT on EMP.deptno=DEPT.deptno
with read only;

从V_EMPDETAIL视图中查询数据:

三、视图的状态

当创建视图后,Oracle会验证视图的有效性,如修改了基本表,可能会导致视图的不可用,数据字典的USER_OBJECTS的status字段中记录了视图的状态(VALID-有效;INVALID-失效)。


我们来做一个测试。

1)删除T_GIRL表的name字段。

alter table T_GIRL drop column name;

2)执行一次查询视图,出现了错误。

3)查询视图的状态,成了INVALID。

4)在T_GIRL表中增加name字段。

alter table T_GIRL drop add name varchar2(30);

5)查询视图的状态,还是INVALID,数据结构已恢复,但视图的状态未恢复。

6)执行一次查询,视图已恢复正常。


7)再查询视图的状态,恢复成了VALID。

在上面的测试中,我们发现基表数据结构的改变导致了视图无效,数据结构恢复后,视图能自动恢复正常(中间有一点曲折)。

四、删除视图

语法:

drop view 视图名

示例:

drop view V_GIRL

了解 Oracle 中的视图相关推荐

  1. oracle中的视图详解

    1.视图的概述 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表.视图来源于表,所有对视图数 ...

  2. Oracle中的视图和同义词

    视图 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表.视图来源于表,所有对视图数据的修改最 ...

  3. oracle中的视图

    create table a( id number primary key, name varchar2(20) ); create table b( id number, name varchar2 ...

  4. python查询sqlserver视图_如题:sqlserver连接Oracle数据库,在sql查询分析器中查询oracle中的视图,根据时间字段查询,SQL语句...

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. 创建物化视图commit_oracle 中物化视图讲解

    oracle 中物化视图讲解 oracle中的物化视图首先需要创建物化视图日志,oracle根据用户创建的物化视图日志来创建物化视图日志表,物化视图日志表名称为mlog$_基表名,如果表名超过20位, ...

  6. Oracle中视图的创建和处理方法

    http://www.blogjava.net/caizh2009/articles/287787.html Oracle中视图的创建和处理方法 图是基于一个表或多个表或视图的逻辑表,本身不包含数据, ...

  7. oracle dba开头的表,oracle中以dba_、user_、v$_、all_、session_、index_开头的常用表和视图...

    oracle中以dba_.user_.v$_.all_.session_.index_开头的常用表和视图 ----------------------------------------------- ...

  8. Oracle 中一些主要的V$视图种类

    Oracle 中一些主要的V$视图种类 类  别 描述和相关的V$视图 数据库实例 有关实际数据库实例的信息 V$ 视 图:  V$ACTIVE_INSTANCES,V$BGPROCESS,V$DAT ...

  9. 【DB笔试面试614】在Oracle中,和视图相关的查询转换有哪些?

    ♣题目 部分 在Oracle中,和视图相关的查询转换有哪些? ♣答案部分 (一)简单视图合并 1CREATE OR REPLACE VIEW VW_SVM_LHR AS SELECT * FROM S ...

最新文章

  1. linux服务器加固的命令,Linux 服务器安全加固
  2. Kraken:使用精确比对的超快速宏基因组序列分类软件
  3. 第二十一讲 任务的删除
  4. C++ string源码
  5. VC/MFC Combo Box控件的用法
  6. JavaFX UI控件教程(九)之Text Field
  7. SQLServer 数据库主体在该数据库中拥有 架构,无法删除解决方法
  8. 网易云音乐被纳入港股通 3月7日起生效
  9. java用户输入_如何用Java获取用户输入?
  10. mysql能将查询结果与表左查询,MySQL查询与结构
  11. 编程趣谈_k++_++k_k一行顺序输出,结果会有差异吗?
  12. 奥维地图导入西安坐标_奥维地图导入坐标样式 奥维地图批量导入经纬度坐标...
  13. 【软件测试】应用白盒测试实例
  14. Qt Creator使用教程(简明版)
  15. 6.3深度优先遍历和广度优先遍历
  16. CSS3画三角形、菱形、平行四边形
  17. 评价神经网络性能的指标,神经网络是参数模型吗
  18. FFMPEG之H.264视频解码
  19. 回归基础 java基础数据 数据处理
  20. 软件——Jira是什么

热门文章

  1. TREK1000概述--实时定位系统
  2. 图像处理基础 || (二) 彩色图像转灰度图像
  3. 仿移动端苏宁(rem布局)、携程(flex布局)首页静态页面,源码可下载
  4. hd5文件的相关操作以及在python中的读写
  5. 80道常见性能测试面试题
  6. 如何写好.babelrc?Babel的presets和plugins配置解析
  7. 科技,让二次元老婆动起来
  8. 二叉平衡树(AVL树)从演变、平衡、旋转加练习题逐步分析,看不会过来打我
  9. 【日语】动物名称日语单词集合
  10. R语言生态学JAGS模拟数据、线性回归、Cormack-Jolly-Seber (CJS) 模型拟合MCMC 估计动物存活率和可视化