Oracle(创建视图)
概念:
视图:所谓视图就是提取一张或者多张表的数据生成一个映射,管理视图可以同样达到操作原表的效果,方便数据的管理以及安全操作。
视图其实就是一条查询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(创建视图)的更多相关文章
- SQLServer和Oracle创建视图用户
在数据集成的开发中,经常会需要给对方创建视图,让其可以查看一些必要的数据.既在数据库中创建用户,并赋给该用户查询视图的权限 一.SQLServer --创建登录用户账户USE [master] GO ...
- Oracle创建视图view权限不足问题剖析
问题: 使用USER1等其他用户登录Oracle以后,创建视图,提示"权限不够",怎么解决? 这是因为USER1这个帐户目前没有创建视图的权限. 解决方法为: 首先使用system ...
- oracle创建视图(view)
视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是存储在数 ...
- Oracle创建视图 及 授权
创建视图语句: CREATE VIEW GRM_PROFIT_VIEW AS SELECT ID, DEPT_CODE, DEPT_NAME, YMONTH, PROJECT_NAME, PROJEC ...
- Oracle创建视图权限不足
Oracle 在创建用户的时候如果直接给用户DBA权限,那么在B用户中可以直接查询A用户的表,但是在创建视图时就会报无权限,在这种情况下需要再在被访问的A用户里面去给予要访问该表的B用户授权. --创 ...
- oracle创建视图时一些问题
这几天创建视图的时候,遇见的问题. 一:创建视图的时候Oracle-报错:文字与格式字符串不匹配(ORA-01861) 我创建的时候用的 是to_date 然后我改成了to_char select X ...
- Oracle创建视图的一个问题
问题: 在用户user1中创建视图,查询内容包含user2下的表数据, 创建视图的时候提示“权限不足”.执行如下语句: --为USER1授权 GRANT CREATE ANY TABLE TO USE ...
- oracle 创建视图、修改视图、删除视图、利用视图操作基本表
转:http://blog.sina.com.cn/s/blog_6b58d2fa0100rgvw.html 1.使用create or replace view命令创建视图 语法格式: create ...
- ORACLE 创建视图索引序列
/* 视图View 视图是从若干基本表和(或)其他视图构造出来的表 视图存放的都是查询语句,并没有真实的数据 虚表 作用 限制对数据的操作 复杂查询变简单 提供相同数据的不同显示 UNION ALL ...
随机推荐
- 微信小程序(应用号)资源汇总整理
微信小应用资源汇总整理 开源项目 WeApp - 微信小程序版的微信 wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list wechat-weapp- ...
- Q的深层嵌套
1.如果将异步方法用同步的方式执行,try catch能捕获到错误,同时不会阻塞到主进程,因此console.log(3333)能执行. var fs = require('fs'); try { v ...
- CentOS 7 安装 nginx
一.安装nginx依赖lib库: 1.yum install gcc-c++ -y 2.yum install pcre pcre-devel -y 3.yum install zlib zlib-d ...
- EXC_ARM_DA_ALIGN
ios 版本上的问题 armv7 ipad2 int64 t = *(int64*)pBuff; 如果pBuff不是8字节对齐的地址就 crash 变通的方法是通过memcpy __sync_fe ...
- HDOJ 1004 Let the Balloon Rise
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- SQL用先进先出存储过程求出库数量
create table t( id ,), name ),--商品名称 j int, --入库数量 c int, --出库数量 jdate datetime --入库时间 ) ,,'2007-12- ...
- cache与MMU与总线仲裁
为了以合理的价格,设计容量和速度满足计算机系统的需求,计算机体系结构设计者设计出了存储器的层次结构. "Cache-主存"和"主存-辅存"是最常见的两种层次结构 ...
- centos下安装java8
http://tecadmin.net/install-java-8-on-centos-rhel-and-fedora/#
- robotium教材(一):robotium环境搭建
博客Melon麦东=原创内容 目录: 1.基于无源码apk测试工程的搭建 2.基于有源码的测试工程搭建 3.遇到的问题(各种刨坑,各种尝试,网上水货回答真的太多,希望看见此文的同学你们是幸运的) ...
- uexQQ插件学习心得
uexQQ插件学习心得 uexQQ插件的作用:通过qq可以分享图文,音乐,应用到相应的qq空间.支持手机客户端分享和手机webQQ分享.下面我们就来看一看他的一些方法. 我们先说一下分享的步骤,这个步 ...