oracle视图
来源:互联网 发布:淘宝网羽绒服女款套装 编辑:程序博客网 时间:2024/04/28 08:24
1.视图的定义
视图只是定义了一个查询,是一个虚拟表。视图用于存放查询语句,并不存放真实的数据,视图的数据来自于定义视图的子查询语句中所引用的表,这些表称为视图的基表。视图中的数据与基表的数据同步,这些数据在视图被引用时动态的生成。视图可以建立在一个或多个表(或其他视图)上。
2.视图的存储
视图不会要求分配存储空间,视图中不会包含实际的数据。由于视图基于数据库中的其他对象,因此一个视图只需占用数据字典中保存其定义的空间,而无需额外的存储空间。
3.视图的作用
用户可以通过视图以不同的形式来显示基表中的数据,可以根据不同的需求创建不同的视图。
通过视图可以设定允许用户访问的列和数据行,从而为表提供了额外的安全控制,隐藏数据复杂性;视图可以使用连接(join),用多个表中相关的列构成一个新的数据集,此视图就对用户隐藏了数据来源于多个表的事实。
4.视图的工作机制
视图的定义就是其使用的查询语句,Oracle将这个定义以文本形式存储在数据字典中。当用户在 SQL 语句中引用了视图时,Oracle 将进行以下工作: 将引用了视图的语句与视图的定义语句整合为一个语句,在共享SQL 区解析整合后的语句,执行此语句,当现有的共享SQL 区中没有与整合后的语句一致时,Oracle 才会为此语句创建新的共享SQL 区。因此,引用了视图的SQL 语句也能够利用已有的共享 SQL 区以达到节约内存和提高性能的目的。
5. 查看用户下的所有视图
select view_name from user_views;
当下面创建了视图v_emp后
6.创建视图
create [or replace] [force/noforce] view view_name
[(alias_name[,..])]
as 子查询
[with {check option/read only} constraint constraint_name];
or replace:如果视图已存在,使用此选项可以替换现有试图。
force/noforce:force表示即使基表不存在,又要创建视图;noforce表示如果基表不存在,则不能创建视图。默认为noforce。
alias_name:子查询中列或表达式的别名,别名的个数与子查询中列或表达式的个数必须一致。
check option:除了可以对视图执行select查询外,还可以对视图进行DML操作。默认情况下,可以通过视图对基表的所有数据行进行DML操作,包括视图的子查询无法检索到的行。如果使用check option,则表示只能对视图中子查询能够检索的数据行进行DML操作。
read only:表示通过视图只能读取基表中的数据行,而不能进行DML操作。
constraint constraint_name:为check option/read only约束定义约束名称。
例:create or replace view v_emp
as select ename from emp;
7.访问视图
select * from v_emp;
查询视图可以带条件但条件里出现的字段必须存在于视图中。
8.若权限不足授予scott用户创建视图的权限
grant create view to scott;
9.查看用户下视图的select语句
select text from user_views where view_name=upper('&view_name');
10.删除视图
drop view v_emp;
11.DML操作(插入,更新,删除)
对视图进行DML操作,实际上就是对视图的基表执行DML操作。但是,并不是视图所有的列都支持DML操作,如果该列进行了函数或数学计算,或者在表的连接查询中该列不属于主表的列,则该列不支持DML操作。from语句中指定的第一个表为主表。
对视图进行DML操作,字段也必须是视图中存在的,基表的数据也会改变。
通过视图向基表中插入数据,通常情况下只提供了表中部分列的数据,而表中其他列的数据则会使用默认值,没有默认值就会使用null,不支持null值,则oracle禁止执行此插入操作。
- oracle视图
- oracle视图
- Oracle视图
- Oracle视图
- Oracle视图
- Oracle视图
- oracle视图
- Oracle 视图
- oracle 视图
- oracle视图
- oracle视图
- oracle 视图
- oracle 视图
- Oracle视图
- Oracle视图
- oracle 视图
- oracle视图
- oracle 视图
- 什么是面向对象编程
- vue.js权威指南-第一章 遇见 vue.js
- 使用rxjava2实现界面跳转
- JAVA源码解析(6)-java.beans.PropertyDescriptor
- 中断服务子程序 ISR
- oracle视图
- 异常
- c++中关于图的最小生成树的Kruskal算法的实现
- css超出两行省略号,超出一行省略号
- JS 数组对象去重
- Android应用中如何调用系统闹钟及日历
- 多文件上传(HTTP)
- LibCurl编程手册以及代码实例
- 03. 网桥模式连接 ❀ 深信服上网行为管理