Oracle中视图的创建和处理方法
Oracle中视图的创建和处理方法,视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。
视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的**或组合。
视图的优点:
1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
2.用户通过简单的查询可以从复杂查询中得到结果。
3.维护数据的独立性,试图可从多个表检索数据。
4.对于相同的数据可产生不同的视图。
视图分为简单视图和复杂视图:
1、简单视图只从单表里获取数据,复杂视图从多表;
2、简单视图不包含函数和数据组,复杂视图包含;
3、简单视图可以实现DML操作,复杂视图不可以。
视图的创建:
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 OR REPLACE VIEW dept_sum_vw(name,minsal,maxsal,avgsal)AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)FROM emp e,dept dWHERE e.deptno=d.deptnoGROUP BY d.dname;
视图的定义原则:
1.视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询;
2.在没有WITH CHECK OPTION和 READ ONLY 的情况下,查询中不能使用ORDER BY 子句;
3.如果没有为CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn;
4.OR REPLACE选项可以不删除原视图便可更改其定义并重建,或重新授予对象权限。
视图的查询:
视图创建成功后,可以从视图中检索数据,这点和从表中检索数据一样。
还可以查询视图的全部信息和指定的数据行和列。 如:检索数据:
SQL>SELECT * FROM dept_sum_vw;
查询视图定义:
SELECT view_name,text from user_views;
其中text显示的内容为视图定义的SELECT语句,可通过DESC USER_VIEWS 得到相关信息。
修改视图:
通过OR REPLACE 重新创建同名视图即可。
视图上的DML 操作:
DML操作应遵循的原则:
1.简单视图可以执行DML操作;
2.在视图包含GROUP 函数,GROUP BY子句,DISTINCT关键字时不能
删除数据行;
3.在视图不出现下列情况时可通过视图修改基表数据或插入数据:
a.视图中包含GROUP 函数,GROUP BY子句,DISTINCT关键字;
b.使用表达式定义的列;
c.ROWNUM伪列。
d.基表中未在视图中选择的其他列定义为非空且无默认值。
视图可用于保持数据库的完整性,但作用有限。
通过视图执行引用完整性约束可在数据库级执行约束。
WITH CHECK OPTION 子句限定:
通过视图执行的INSERTS和UPDATES操作不能创建该视图检索不到的数据行,因为它会对插入或修改的数据行执行完整性约束和数据有效性检查。
例如:
CREATE OR REPLACE VIEW vw_emp20AS SELECT * FROM empWHERE deptno=20WITH CHECK OPTION constraint vw_emp20_ck;
视图 已建立。
查询结果:
SELECT empno,ename,job FROM vw_emp20;EMPNO ENAME JOB--7369 SMITH CLERK7566 JONES MANAGER7902 FORD ANALYST
修改:
UPDATE vw_emp20SET deptno=20WHERE empno=7902;
将产生错误:
UPDATE vw_emp20
*
ERROR 位于第一行:
ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句
视图的删除:DROP VIEW VIEW_NAME语句删除视图。删除视图的定义不影响基表中的数据。只有视图所有者和具备DROP VIEW权限的用户可以删除视图。视图被删除后,基于被删除视图的其他视图或应用将无效。
分享到:
相关推荐
### Oracle视图创建详解 #### 一、前提条件与背景介绍 在Oracle数据库环境中,我们已经建立了两张表:`rt_issuesect` 和 `roadstate`。为了更好地管理和查询这两张表的数据,本教程将详细介绍如何利用Oracle的视图...
通过上述讨论,我们可以看到在Oracle中创建视图的方法是多样的,可以根据具体需求选择合适的方式。无论是静态创建还是动态构建SQL语句,都需要注意权限问题以及SQL语句的正确性。通过合理利用存储过程和`EXECUTE ...
### Oracle 物化视图详解 #### 一、物化视图的...物化视图是Oracle数据库中一项重要的功能,它能够显著提高查询效率,特别是在处理大量数据和复杂查询时。通过合理设计和管理物化视图,可以大大提升系统的整体性能。
标题“通过MySQL通过视图访问ORACLE中的表”意味着我们将探讨如何利用MySQL的视图功能,来间接访问和操作Oracle数据库中的数据。视图是一种虚拟表,它不实际存储数据,而是根据用户定义的SQL查询动态生成结果集。这...
通过上述示例,我们可以看到 Oracle 中实现带参数视图的具体步骤与方法。这种方法不仅能够提高查询效率,还能极大地增强数据的安全性和灵活性。在实际应用中,开发人员可以根据业务需求进一步扩展和优化包中的函数与...
数据库链接允许我们在一个Oracle实例中创建对另一个Oracle实例的逻辑连接,从而能够查询远程数据库中的表或视图,就像它们是本地对象一样。这种方式不仅提供了实时的数据共享,还避免了数据复制带来的资源消耗。 ...
本资料“Oracle动态视图文档(详细版)”深入浅出地介绍了这一概念,旨在帮助读者从入门到精通,无论是对Oracle视图有一定基础的用户,还是希望成为Oracle DBA(数据库管理员)的学习者,都能从中受益。 动态视图,...
通过对Oracle视图和同义词的学习和实践,我们可以更高效地管理和访问数据库中的数据。视图允许我们以更简洁的方式呈现复杂的数据查询结果,而同义词则提供了更高的灵活性和安全性。在实际工作中,这些特性可以帮助...
3. **处理视图创建语句**:由于视图可能包含数据库对象的引用,如其他表或视图,因此在迁移前,需要处理这些引用,确保它们在目标数据库中是可用的。这可能涉及到对表名、别名或SQL函数的替换。 4. **创建目标视图*...
在Oracle数据库管理中,系统视图是获取数据库信息的关键途径,它们提供了丰富的元数据,用于监控、优化和理解数据库的内部工作。这篇博客主要聚焦于Oracle的常用系统视图以及数据导入导出的相关操作,这对于数据库...
第二,ORACLE物化视图的创建过程和管理方法。ORACLE物化视图是指包含一个查询结果的数据库对象,相对于普通视图而言,物化视图是一个物理表。物化视图也是一种段,具有自己的物理存储属性,并占用数据库磁盘空间。...
总之,Oracle数据库中的视图管理是一项重要的技能,通过合理的创建和管理视图,可以极大地提升数据库系统的灵活性和安全性。理解视图的基本原理及其最佳实践对于数据库开发人员和管理员来说至关重要。
Oracle物化视图是一种在数据库中预先计算并存储视图查询结果的数据对象,它与普通的视图不同,普通视图在查询时动态地基于基表数据生成结果,而物化视图则拥有自己的物理存储,提供了对数据的快速访问。在本篇循序渐...
Oracle物化视图是数据库管理系统中的一个重要特性,尤其在处理大量数据和复杂查询的场景下,它可以极大地提升查询性能和数据一致性。物化视图与普通的视图不同,后者是逻辑上的虚表,其内容在查询时动态计算,而物化...
随着数据库技术的发展,无论是数据仓库、数据集市还是在线事务处理(OLTP)系统,都承载着大量的等待被发现和理解的信息。然而,在海量数据中及时准确地查找并呈现这些信息往往是一个重大挑战。为了应对这一挑战,...
Oracle 视图详解是指在 Oracle 数据库中创建的虚拟表,以便用户可以更方便地访问和操作数据库中的数据。视图的定义是一个基于查询的结果集,可以来自一个或多个实际表或视图,或者甚至来自其他数据源。Oracle 视图的...
总之,Oracle物化视图日志为解决分布式系统中的数据同步问题提供了一种有效且实用的方法。通过深入理解和应用这一技术,开发者可以构建出更加稳定、高效的数据同步架构,满足现代企业对数据实时性和一致性的高要求。
在Oracle8i版本中,引入了分区表和对象表,增强了数据处理的能力。分区表允许大型表被分割成较小的部分,便于管理和提高查询性能;对象表则允许将复杂的数据结构如对象存储在表中。此外,Oracle8i还引入了临时表,...