概念:

视图:所谓视图就是提取一张或者多张表的数据生成一个映射,管理视图可以同样达到操作原表的效果,方便数据的管理以及安全操作。

视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储查询结果的一个虚拟表。视图来源于表,所有对视图数据的修改最终都会被反映到视图的基表中,这些修改必须服从基表的完整性约束。

视图的存储

与表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间。

视图的优势:

1.信息隐藏

比如s_emp表中有工资,可以创建视图,隐藏工资信息。(可以配合权限,让某个用户只能查看视图,不能查看表。)

2.使复杂查询变得简单。

3.数据独立

4.相同数据的不同展示形式。

视图的分类:

1.简单视图

2.复杂视图

比较:

简单视图 复杂视图

涉及到的表个数   1 1个或多个

包含函数  不包含 包含

包含组数据   不包含 包含

通过视图使用DML   可以 不可以

视图的创建:

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

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

AS

select 。。。。

[WITH CHECK OPTION [CONSTRAINT constraint]]

[WITH READ ONLY]

note:

1.or replace:代表修改view

2.force| noforce: 即使基表不存在也要建立该视图 | 基表不存在就不建立此视图,默认值。

3.alias: 视图中的列的名字(相当于给子查询的结果列起别名)

4.子查询中可以包含复杂的查询语法,这些细节都对用户隐藏。

5.子查询中不能包含order by子句。

6.WITH CHECK OPTION 插入或修改的数据行必须满足视图定义的约束;换句话说,加上该关键词表示对view进行dml操作的时候,只能操作select语句中where条件限制的内容

7.WITH READ ONLY :该视图只读,不能在这个视图上进行任何DML操作。

8.查看视图结构: desc view_name;

例如:

create or replace view myView

as

select id,last_name,start_date

from s_emp

where id <= 4;

此时可以使用:

1.查看视图中所有数据信息

select * from myView;

2.执行插入:

insert into myView values(111,'haha','03-5月-16'); 插入成功!

3.再次查看,找不到刚插入的数据,因为这条数据不满足id<=4,但是查看原始表s_emp,有这条数据。

如果:

create or replace view myView

(id,name,s_date)

as

select id,last_name,start_date

from s_emp

where id <= 4

with check option;

此时可以使用:

1.查看视图中所有数据信息

select * from myView;

2.执行插入:

insert into myView values(121,'haha','03-5月-16'); 插入失败!,因为视图的约束时id<=4,现在插入的id值为121,所以失败!

create or replace view myView

(id,name,s_date)

as

select id,last_name,start_date

from s_emp;

or

create or replace view myView

as

select id,last_name,start_date s_date

from s_emp;

myView中列的名字都为id,name,s_Date.

创建复杂视图:

复杂视图可能包含分组,组函数,多表连接等。

例如:

CREATE or replace VIEW myView

(name, minsal, maxsal, avgsal)

AS SELECT d.name, MIN(e.salary),

MAX(e.salary), AVG(e.salary)

FROM s_emp e, s_dept d

WHERE e.dept_id = d.id

GROUP BY d.name;

查看视图信息

可以使用数据字典user_views;

删除视图对象:

ROP VIEW view_name;

Oracle(创建视图)的更多相关文章

  1. SQLServer和Oracle创建视图用户

    在数据集成的开发中,经常会需要给对方创建视图,让其可以查看一些必要的数据.既在数据库中创建用户,并赋给该用户查询视图的权限 一.SQLServer --创建登录用户账户USE [master] GO ...

  2. Oracle创建视图view权限不足问题剖析

    问题: 使用USER1等其他用户登录Oracle以后,创建视图,提示"权限不够",怎么解决? 这是因为USER1这个帐户目前没有创建视图的权限. 解决方法为: 首先使用system ...

  3. oracle创建视图(view)

    视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是存储在数 ...

  4. Oracle创建视图 及 授权

    创建视图语句: CREATE VIEW GRM_PROFIT_VIEW AS SELECT ID, DEPT_CODE, DEPT_NAME, YMONTH, PROJECT_NAME, PROJEC ...

  5. Oracle创建视图权限不足

    Oracle 在创建用户的时候如果直接给用户DBA权限,那么在B用户中可以直接查询A用户的表,但是在创建视图时就会报无权限,在这种情况下需要再在被访问的A用户里面去给予要访问该表的B用户授权. --创 ...

  6. oracle创建视图时一些问题

    这几天创建视图的时候,遇见的问题. 一:创建视图的时候Oracle-报错:文字与格式字符串不匹配(ORA-01861) 我创建的时候用的 是to_date 然后我改成了to_char select X ...

  7. Oracle创建视图的一个问题

    问题: 在用户user1中创建视图,查询内容包含user2下的表数据, 创建视图的时候提示“权限不足”.执行如下语句: --为USER1授权 GRANT CREATE ANY TABLE TO USE ...

  8. oracle 创建视图、修改视图、删除视图、利用视图操作基本表

    转:http://blog.sina.com.cn/s/blog_6b58d2fa0100rgvw.html 1.使用create or replace view命令创建视图 语法格式: create ...

  9. ORACLE 创建视图索引序列

    /* 视图View 视图是从若干基本表和(或)其他视图构造出来的表 视图存放的都是查询语句,并没有真实的数据 虚表 作用 限制对数据的操作 复杂查询变简单 提供相同数据的不同显示 UNION ALL ...

随机推荐

  1. 微信小程序(应用号)资源汇总整理

    微信小应用资源汇总整理 开源项目 WeApp - 微信小程序版的微信 wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list wechat-weapp- ...

  2. Q的深层嵌套

    1.如果将异步方法用同步的方式执行,try catch能捕获到错误,同时不会阻塞到主进程,因此console.log(3333)能执行. var fs = require('fs'); try { v ...

  3. CentOS 7 安装 nginx

    一.安装nginx依赖lib库: 1.yum install gcc-c++ -y 2.yum install pcre pcre-devel -y 3.yum install zlib zlib-d ...

  4. EXC_ARM_DA_ALIGN

    ios 版本上的问题  armv7  ipad2 int64 t = *(int64*)pBuff; 如果pBuff不是8字节对齐的地址就 crash 变通的方法是通过memcpy __sync_fe ...

  5. HDOJ 1004 Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  6. SQL用先进先出存储过程求出库数量

    create table t( id ,), name ),--商品名称 j int, --入库数量 c int, --出库数量 jdate datetime --入库时间 ) ,,'2007-12- ...

  7. cache与MMU与总线仲裁

    为了以合理的价格,设计容量和速度满足计算机系统的需求,计算机体系结构设计者设计出了存储器的层次结构. "Cache-主存"和"主存-辅存"是最常见的两种层次结构 ...

  8. centos下安装java8

    http://tecadmin.net/install-java-8-on-centos-rhel-and-fedora/#

  9. robotium教材(一):robotium环境搭建

    博客Melon麦东=原创内容 目录: 1.基于无源码apk测试工程的搭建 2.基于有源码的测试工程搭建 3.遇到的问题(各种刨坑,各种尝试,网上水货回答真的太多,希望看见此文的同学你们是幸运的)   ...

  10. uexQQ插件学习心得

    uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...