本章内容: Oracle视图介绍与创建、Oracle视图的查询与修改、Oracle的复杂视图

1. Oracle视图介绍与创建

(1)了解常见的数据库对象都有哪些

(2)了解什么是视图以及为什么要使用视图

概念:视图是一个虚拟表,视图当中的数据是来自于基表的

为什么要用视图?

<1>安全原因:限制数据的访问(如:社会保险基金表,可以使用视图只显示姓名和地址,而不显示社会的保险号和工资)

<2>视图可使复杂的查询用于理解和使用

(3)理解视图的分类

简单视图、复杂视图、连接视图、只读视图

简单视图:基于单个表建立、不包括函数表达式以及分组数据

复杂视图:包括函数表达式以及分组数据的一个视图,目的:为了简化查询操作

连接视图:为了简化连接查询

只读视图:只允许使用select语句,只能看

(4)掌握视图的创建

先登录system用户授予创建视图权限给scott用户

创建简单视图

create view emp_view as select empno,ename,sal from emp;

select * from emp_view

创建连接视图

create view demp_view as select d.deptno,d.dname,e.empno,e.ename,e.job

from dept d inner join emp e on e.deptno=d.deptno and d.deptno=10;

接下来查询视图即可,不需要编写多表连接查询语句,很方便

select * from demp_view;

创建只读视图

create view emp_view3 as select empno,ename,sal from emp with read only;

select * from emp_view3

因为是只读视图,试着修改一下

update emp_view3 set sal=sal+50;

报错:无法对只读视图做DML操作

2.Oracle视图的查询与修改

目标:掌握视图上的DML操作、理解视图上定义的check约束的作用、掌握视图的修改与删除

  1. 视图上的DML操作,对视图的DML操作会改变基表中的数据,不能通过视图改变基表结构,如加字段

create view empnew_view as select empno,ename,sal from empnew;

select * from empnew_view; //查询视图

insert into empnew_view(eid,ename,salary) values(99,'qi1qi',66) update emp set ename="qiqi1" where eid=88

delete from emp where eid=88

(2)创建视图时定义check约束

create view empnew_view2 as select * from empnew where deptno=20

with check option constraint ck_view;

这时候往视图中添加数据

insert into empnew_view2(empno,ename,sal) values(22,'qiqi',333);

会报错:ORA-01402: view WITH CHECK OPTION where-clause violation    //视图WITH CHECK OPTION where句子违规

这时候添加或者修改数据的时候应该满足创建视图中的约束条件才能添加

在这里指定部门编号为20即可以添加

insert into empnew_view2(empno,ename,sal,deptno) values(22,'qiqi',333,20) ;

  1. 掌握视图的修改与删除

修改视图:通过下面修改再查询,很明显之前的视图已经被修改

create or replace view empnew_view as select * from emp where job='SALESMAN';

select * from empnew_view;

删除视图 ,只是删除视图定义,并不会删除视图对应基表中的数据

Drop view empnew_view

基表中数据任存在

3.Oracle的复杂视图

(1)了解什么是复杂视图

(2)掌握创建复杂视图的操作,  //复杂查询,指定列的别名,为了防止在视图上执行DML操作,也可以在后面加上with read only

create view job_view2(job,avgsal,sumsal,manxsal,minsal)

as select job,avg(sal),sum(sal),max(sal),min(sal) from emp group by job;

select * from job_view2;

(3)了解复杂视图上执行DML操作的原则

<1>视图中包含一下元素之一不能执行delete操作

Group by 子句

分组函数            //avg,sum,max,min

distinct 关键字

Rownum伪劣

<2>视图中包含一下元素之一不能执行update操作

Group by 子句

分组函数

distinct 关键字

Rownum伪劣

使用表达式定义的列

<3>视图中包含一下元素之一不能执行insert操作

Group by 子句

分组函数

distinct 关键字

Rownum伪劣

使用表达式定义的列

视图上没有包含基本表的not null列

例如上面创建的复杂视图就不能执行delete,update,insert操作,因为有group by 和分组函数存在

Oracle视图(和Mysq一样l)的更多相关文章

  1. Oracle视图分类及各种操作讲解(超级好文)

    目录:一.视图的定义: 二.视图的作用: 三.创建视图: 1.权限 2.语法 3.1  创建简单视图   3.2  创建连接视图  3.2.1 连接视图定义  3.2.2 创建连接视图  3.2.3 ...

  2. Oracle -----视图

    视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数 ...

  3. Oracle视图详解

    转载自:http://blog.itpub.net/29785807/viewspace-1270120/ 一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本 ...

  4. oracle视图总结

    视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数 ...

  5. oracle视图总结(转)

    视图简介: 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表.视图是存储在数据字典里的一条select语句. 通过创建视图可以提取数 ...

  6. ORACLE 视图的 with check option

    ORACLE 视图的 with check option 我们来看下面的例子: create or replace view testview as select empno,ename from e ...

  7. ORACLE视图添加备注

    ORACLE视图添加备注 版权声明:本文为博主原创文章,未经博主允许不得转载. create or replace view oes_material_series_ref as select t.p ...

  8. Oracle 视图 (待更新, 缓存)

    参考: 视图.索引.存储过程优缺点: http://www.cnblogs.com/SanMaoSpace/p/3147059.html oracle视图总结(转):http://tianwei013 ...

  9. (转)oracle视图详解

    Oracle视图详解   一. 视图的定义 视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的.视图只有逻辑定义.每次使用的时候,只是重新执 ...

随机推荐

  1. cmake编译opencv时指定cuda版本

    之前有网友提问说,基于cmake编译时如果切换cuda版本,比如我同时装了cuda8和cuda9,opencv总是找到cuda9,我想用cuda8怎么办?实际上,手头上要配置的工程是基于opencv3 ...

  2. AtCoder Grand Contest 031 (AGC031) D - A Sequence of Permutations 其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/AGC031D.html 前言 比赛的时候看到这题之后在草稿纸上写下的第一个式子就是 $$f(p,q) = pq^ ...

  3. 自动化设计模式Page Object

    https://blog.csdn.net/qq_37546891/article/details/79052054#t1

  4. Web 性能优化:21 种优化 CSS 和加快网站速度的方法

    这是 Web 性能优化的第 4 篇,上一篇在下面看点击查看: Web 性能优化:使用 Webpack 分离数据的正确方法 Web 性能优化:图片优化让网站大小减少 62% Web 性能优化:缓存 Re ...

  5. sqlzoo:4

    列出每個國家的名字 name,當中人口 population 是高於俄羅斯'Russia'的人口. SELECT name FROM world WHERE population > (SELE ...

  6. [git]checkout&branch

    git branch 和 git checkout经常在一起使用,所以在此将它们合在一起 1.Git branch 一般用于分支的操作,比如创建分支,查看分支等等, 1.1 git branch 不带 ...

  7. Mem系列函数介绍及案例实现

      昨天导师甩给我们一个项目案例,让我们自己去看一看熟悉一下项目内容,我看到了这个项目里面大量使用memset(sBuf,0,sizeof(sBuf));这一块内存填充的代码,于是回想起以前查过Mem ...

  8. 引用Excel控件时,无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”请改用适用的接口

    类型Microsoft.Office.Interop.Excel.ApplicationClass未定义构造函数 无法嵌入互操作类型“Microsoft.Office.Interop.Excel.Ap ...

  9. 在 Vim 中优雅地查找和替换(转)

    总有人问我 Vim 中能不能查找,当然能!而且是超级强的查找! 这篇文章来详细介绍 Vim 中查找相关的设置和使用方法. 包括查找与替换.查找光标所在词.高亮前景/背景色.切换高亮状态.大小写敏感查找 ...

  10. P2V后,VMWare ESX 上RedHat AS5网络不通问题的解决办法

    现象: 机器在启动eth0后,可以ping通eth0的IP,但是很快就无法访问了. 原因: red hat 5.x 默认系统安装完成后为xen内核,那么xen内核引导启动后就会有虚拟网卡(vethx. ...