概念:

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

视图其实就是一条查询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. web前端开发学习路径图

    第一阶段 WEB前端工程师课程 HTML语句,HTML页面结构.css语法.style属性.link和style标签.id属性.等HTML语句中的相关属性: 通过Dreamweaver制作出跨越平台限 ...

  2. Python开发程序:学员管理系统(mysql)

    主题:学员管理系统 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节 ...

  3. 数据库触发器inserted和deleted详解

    create trigger updateDeleteTime on user for update as begin   update user set UpdateTime=(getdate()) ...

  4. FusionChart 数据的传入方式

    已有案例,懒得写了,放个链接,大家看看吧.http://www.cnblogs.com/liujian21st/archive/2013/03/22/2975124.html

  5. gen目录无法更新,或者gen目录下的R.JAVA文件无法生成

    gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自 ...

  6. Java多线程开发系列之四:玩转多线程(线程的控制1)

    在前文中我们已经学习了:线程的基本情况.如何创建多线程.线程的生命周期.利用已有知识我们已经可以写出如何利用多线程处理大量任务这样简单的程序.但是当应用场景复杂时,我们还需要从管理控制入手,更好的操纵 ...

  7. tslib1.4编译

    准备工作:ubuntu14.04-64位+arm-linux-gcc(2014)+tslib.14 1.arm-linux-gcc下载地址:http://www.veryarm.com/arm-non ...

  8. 基数排序 java 实现

    基数排序 java 实现 Wikipedia: Radix sort geeksforgeeks: Radix sort 数学之美番外篇:快排为什么那样快 Java排序算法总结(八):基数排序 排序八 ...

  9. Centos搭建Python+Nginx+Tornado+Mysql环境[转载]

    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入 ...

  10. 上海有线通下载exe会302转发请求

    起因: 做的软件用的clickonce,在公网的clickonce下载exe时一直报错,在vpn环境下没问题.错误提示如下: + HTTP redirect is not allowed for ap ...