视图是存储的查询定义。

1. 创建视图的语法如下:
Create [OR REPLACE] [FORCE | NOFORCE] VIEW view_name[(alias,alias,...)] AS
select_statement [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY];

其中: OR REPLACE 表示在该视图存在的话,将重新创建该视图。
FORCE 使用此关键字,则无论基表是否存在,都将创建视图。
NOFORCE 这是默认值。如果使用此关键字,则仅当基表存在时才创建视图。
view_name 表示要创建视图的名称。
alias 指定在视图里面列的名字,名字数目必须与视图所选择的表达式的数目相匹配。
select_statement 表示Select语句。
WITH CHECK OPTION 此选项指定只能插入或更新视图可以访问的行。术语constraint表示为CHECK OPTION约束指定的名称。不能更新创建视图的条件。
WITH READ ONLY 此选项确保不能在此视图上执行任何修改操作。

示例7:演示创建一个名为ven_view的视图,该视图与vendor_master表具有相同的结构。
Create VIEW ven_view AS select * from vendor_master;

视图中的ORDER BY子句:以便在查询视图时即使不使用Order By子句,结果集也会按指定的顺序排列行。
示例8:Create OR REPLACE VIEW ven_view(编号,日期) AS select orderno,odate from vendor_master order by venname;

2.创建带有错误的视图:使用FORCE选项
在以下情况下,Oracle也会创建视图:
1》视力定义的查询引用了一个不存在的表;
2》视图定义的查询引用了现有表中无效的列;
3》视图的所有者没有所需的权限。

示例9:下面创建一个基于venmast的视图。但数据库中并不存在名为"venmast"的表。
Create FORCE VIEW ven AS select * from venmast;
如果稍后创建名为venmast的表,可以使用ALTER VIEW ven COMPILE;

3. 联接视图:
示例:演示如何创建联接视图
Create OR REPLACE VIEW ven_ord_view AS select vm.vencode,venname,orderno,odate,ostatus
from vendor_master vm,order_master om where vm.vencode=om.vencode;

键保留表:在联接视图中,如果视图包含了一个表的主键,并且也是这个视图的主键,则这个键被保留,则这个表被称为键保留表。
ven_ord_view视图以vendor_master和order_master这两个表为基表。order_master表被视为键保留表,因为orderno既是order_master表
的主键,也是视图的主键。而vendor_master表不被视为键保留表,因为vendor_master表的主键vencode是联接字段,不是视图的主键。
示例10:此示例成功修改了记录,因为odate列属于键保留表order_master。对于非键保留表vendor_master的venname列的更新则是不允许的。
update wen_ord_view odate=odate+1 where vencode='V003'; 注意:运行此示例时,必须确保基表的主键已正确创建。

可以查询字典视图User_Updateble_Columns来查看联接视图中可更新的列。
可以查询字典视图User_Views来查看用户所创建的视图信息。

视图中的函数:视图可以使用单行函数(由数字、字符、日期组成)、分组函数和表达式。
示例11:此示例用UPPER函数创建视图,注意使用函数或表达式时,应赋予列一个别名。
Create VIEW vendor_master_view AS select vencode,UPPER(venname) vendor_name from vendor_master;

4.删除视图语法:Drop VIEW view_name ;

oracle学习篇十一:视图的更多相关文章

  1. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  2. Oracle学习总结_day06_视图&序列&索引

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day 06 视图,索引,序列 视图 什么是视图: 视 ...

  3. oracle学习篇十:序列

    序列:是用来生成唯一.连续的整数的数据库对象.序列通常用来自动生成主键或唯一键的值. 1. 创建序列语法如下: Create SEQUENCE sequence_name [START WITH in ...

  4. oracle学习篇九:同义词

    Oracle数据库中提供了同义词管理的功能.Oracle同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性. 在Oracle中对用户的管理是使用权限的方式来管理的,也就是说, ...

  5. Oracle学习笔记十一 游标

    游标的简介 游标的概念 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作 ...

  6. Oracle学习(十):视图,索引,序列号,同义词

    1.知识点:能够对比以下的录屏进行阅读 视图,序列,索引,同义词 SQL> --视图:虚表 SQL> --视图的长处:简化复杂查询.限制数据訪问(银行用的多).提供数据的相互独立.相同的数 ...

  7. oracle学习篇十二:索引

    索引: 查询User_indexes可以获取有关用户已创建的索引的详细信息. 查询User_ind_partitions可以获取有关用户已创建的分区索引的详细信息. 查询User_ind_column ...

  8. oracle学习篇七:更新操作、事务处理

    ----------------1.数据库更新操作----------------------------- select * from tab;--查询表 drop table siebel_use ...

  9. Oracle学习(十一)聚合函数

    AVG() 求平均数 --查询某列的平均值 SELECT AVG(列) FROM 表 COUNT()查询条数 -- 查询所有记录的条数 select count(*) from 表; -- 查询对应列 ...

随机推荐

  1. jvm学习笔记之对象详解

    一.对象的组成 对象头(Header): 运行时数据:存储对象运行时的数据,如哈希码.GC分代年龄.锁状态标志.线程持有的锁.偏向线程ID.偏向时间戳等,这部分数据官方成为“Mark Word”,它的 ...

  2. Python第四次作业

    设计题1: 设计一个本月份日历,输出格式如下: 要求: 1.初始化start_day,end_day两个日期 from datetime import datetime start_day=datet ...

  3. HDU-1754-I Hate It(线段树 单点更新 区间最大值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  4. 【离散数学】 SDUT OJ 集合的包含

    集合的包含 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 已知含n个元素的集合的子集 ...

  5. java 实现在线阅读 .pdf

    1.资源的本地地址 2.设置响应头 3.代码实现 @ResponseBody @RequestMapping(value = "/read") @ApiOperation(valu ...

  6. 【Java】qatools.properties

    Link: https://github.com/qatools/properties 今天在GitHub上看到一个Java库,能方便帮助读取properties的配置文件. 具体使用可以参考上面的链 ...

  7. Jenkins 更换国内源

    jenkins插件清华大学镜像地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json1更换地址方法1.进入j ...

  8. origin横纵坐标颠倒

    origin默认是只能多个纵坐标,不能多个横坐标,所以这种情况只能先作成多个Y,然后像这样exchange一下.

  9. 编辑距离及编辑距离算法(求字符的相似度) js版

    编辑距离概念描述: 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符. 例如 ...

  10. 青蛙的约会----POJ1061

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 133905   Accepted: 29707 Descript ...