Oracle之视图

在Oracle中每一次查询与关联都是生成了一个新的表,这个表在一次查询之后没有办法保存下来,我们引入了视图的概念,通过视图把多张单纯表动态的组合到一张表中来达到上述效果,动态的组合是指原表或者视图一个改变的时候另一个表也随之改变。

视图介绍

视图概念:视图是一张虚拟逻辑表,把多张单独的表动态组合成一张表并存储到数据库中

视图优点:

        简化用户处理数据方式,可以使用简单的查询得到复杂插叙你的结果

        着重于特定数据,避免一些敏感数据或者无用的数据查询出来

        提供简单有效的安全机制,定制不同用户对数据的访问权限

        可以将视图的数据导入到其他程序

视图分类:视图分为简单视图和复杂视图

        简单视图只能从单表获取数据,复杂视图从多表获取数据

        简单视图不包含函数和数据组,复杂视图包含

        简单函数可以实现DML操作,复杂视图不可以

        如果简单视图创建使用with read only,该视图不能进行DML操作

创建视图

注:如果在scoot中想要拥有创建视图的权限,需要赋予权限,即使用系统用户执行grant create view to scott;语句(注意赋予语句后需要commit)。

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name

[(alias[, alias]...)]

AS subquery

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY]

OR REPLACE    若所创建的视图已经存在,ORACLE自动重建该视图;

FORCE              不管基表是否存在ORACLE都会自动创建该视图;

NOFORCE         只有基表都存在ORACLE才会创建该视图:

alias                    为视图产生的列定义的别名;

subquery            一条完整的SELECT语句,可以在该语句中定义别名;

WITH CHECK  OPTION  插入或修改的数据行必须满足视图定义的约束;

WITH READ ONLY          该视图上不能进行任何DML操作。

create view empv30(empno,ename,sal) as select empno,ename,sal from emp where deptno=30;

创建一个empv30里面写empno,ename,sal

create view emp1 (rn,ename,job,sal) as (select rownum rn,a.* from (select ename,job,sal from emp order by sal) a);

将emp表排序结果存到视图 emp1中,随后使用select * from emp1 where rn>4 and rn<11;获取5-10行

查询视图

创建的视图的查询方法和正常的表的查询方法相同即直接使用select语句。

select * from empv30;

修改视图

修改视图主要是通过Oracle创建视图时候的一个属性即or replace来重新创建同名视图来达到修改视图的效果。

删除视图

删除视图的方法和正常删除表的效果相同,通过drop来删除表。即 drop view view_name;。

drop view empv30;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,796评论 0 2
  • 查询是数据的一个重要操作。用户发送查询请求,经编译软件变异成二进制文件供服务器查询,后返回查询结果集给用户,查询会...
    产品小正阅读 1,447评论 0 2
  • 5.多表查询 多表查询 目的:从多张表获取数据 前提:进行连接的多张表中有共同的列 等连接 通过两个表具有相同意义...
    乔震阅读 1,320评论 0 0
  • 1.伪表,伪列 1.1.伪表dual 概念:就是一个不真实存在的虚拟表.伪表的作用就是用来构造一个符合sql规则的...
    随手点灯阅读 1,244评论 1 7
  • 张小小屎阅读 195评论 2 2