视图是存储的查询定义。

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. django 部署到Ubuntu-apache2遇到的问题汇总

    1.x86_64-linux-gnu-gcc: error: unrecognized command line option ‘-fstack-protector-strong’ Turns out ...

  2. [golang] go的typeswitch guard(类型区别)语法和type assertion(类型断言)语法

    最近在实现golang,看到个go的特性语法: typeswitch guard. typeswitch guard语法如下: package main import "fmt" ...

  3. 【转】Caused by: Action class [com.struts.action.xxxAction] not found 解决方法

    刚学习Struts,自己写了个简单程序,一启动tomcat就报错,但是我按着ctrl点击struts.xml中com.struts.action.LoginAction也能定位到LoginAction ...

  4. python学习之路---day02

    一:while循环 while 条件语句 #如果条件成立则执行下面的循环语句 循环语句 eg1:1+2+3+4+5......+100=? num=0 #给num和sum赋初值 sum=0 while ...

  5. HDU - 1085 母函数

    年轻人的第一道母函数入门题 #include<bits/stdc++.h> using namespace std; const int maxn = 1000+2000+5000+1; ...

  6. C#工具类之素数扩展类

    /// <summary> /// 素数帮忙类 /// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码 /// https ...

  7. C++标准库之String

    C++中支持的字符串处理的函数库叫String,但它不是STL,却与STL操作十分相似. 1.声明: 使用String之前要有以下头文件 #include<string> using na ...

  8. TT 安装 之 LINUX

    # useradd ttadmin -- 创建用户 # groupadd ttadmin -- 创建用户组 # mkdir /etc/TimesTen -- 创建目录 # chgrp -R ttadm ...

  9. 用poi替换ppt中的文字和图片

    try {            // 获取PPT文件             String pptModelPath =ConfigReadUtil.getInstance().getConfigI ...

  10. linux 入门测验

    cd . 当前目录.. 返回上一级目录 ../../../返回多级目录 grep "目标信息" 目标地址 -v :显示没有被匹配的信息 mkdir -p:创建多级目录 mkdir ...