其中:
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 d
WHERE e.deptno=d.deptno
GROUP 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_emp20
AS SELECT * FROM emp
WHERE deptno=20
WITH CHECK OPTION constraint vw_emp20_ck;
视图 已建立。
查询结果:
SELECT empno,ename,job FROM vw_emp20;
EMPNO ENAME JOB
--------------------- -------------- -------------
7369 SMITH CLERK
7566 JONES MANAGER
7902 FORD ANALYST
修改:
UPDATE vw_emp20
SET deptno=20
WHERE empno=7902;
将产生错误:
UPDATE vw_emp20
*
ERROR 位于第一行:
ORA-01402:视图WITH CHECK OPTION 违反WHERE 子句
视图的删除:
DROP VIEW VIEW_NAME语句删除视图。
删除视图的定义不影响基表中的数据。
只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
视图被删除后,基于被删除视图的其他视图或应用将无效。
相关推荐
Oracle物化视图是数据库管理中的一个重要概念,它是一个包含了查询结果的数据库对象,它可以是远程数据的本地副本,或者用于生成基于数据表的汇总表。物化视图的主要作用在于提供数据的本地缓存,优化查询性能,尤其...
因Oracle暂不支持对视图(View)的加密,在实际工作中有时需提供给第三方只读账户,为保护知识产权,可用文中所述方法防止第三方账户查看视图(View)中的SQL代码。
一、课程用到的软件:oracle 11g 二、课程目标: ...第十五讲:oracle view管理 第十六讲:oracle sequences管理 第十七讲:oracle 触发器管理 第十八讲:oracle 用户管理 第十九讲:oracle 安装部署管理
Oracle中的`WITH CHECK OPTION`是视图创建时的一个重要特性,用于限制对视图的数据修改操作,确保修改后的数据仍然符合视图的定义条件。这个选项使得视图不仅仅是查询的工具,也成为了一种数据安全控制手段,防止...
在"oracle view - - ITeye技术网站.mht"中,可能包含了视图的创建、查询和管理,以及视图在数据抽象、权限控制和简化复杂查询方面的应用。 4. **序列(Sequence)**: Oracle序列是一种自动增长的数字序列生成器,...
Oracle Smart View for Office是一款专为Microsoft Office设计的插件,旨在提供与Oracle Hyperion分析工具的无缝集成。这款最新的23.100版本是Oracle持续优化和增强用户体验的成果,发布日期为2023年6月16日。在本文...
### Oracle视图创建详解 #### 一、前提条件与背景介绍 在Oracle数据库环境中,我们已经建立了两张表:`rt_issuesect` 和 `roadstate`。为了更好地管理和查询这两张表的数据,本教程将详细介绍如何利用Oracle的视图...
本篇将详细探讨如何将`list_view`中的字段快速打包并存储到Oracle数据库,以及如何利用公用方法进行调用。 首先,`list_view`通常指的是在用户界面中展示数据的一种视图组件,它允许用户以列表形式查看和操作数据。...
显示Oracle Smart View内容。 支持Smart View 11.1.2.5.720或更高版本 如果从包含Oracle Smart View数据的MS Office文档中在浏览器中打开Oracle EPM应用程序,反之亦然,则需要此扩展名。 它用作在Oracle Smart View...
Oracle物化视图是一种在数据库中预先计算并存储查询结果的数据库对象,它提供了一种高效的数据汇总和数据复制机制。物化视图是远程数据的本地副本,用于提高查询性能,尤其是在数据仓库环境中,通过预计算汇总数据,...
在日常管理维护Oracle数据库服务器的过程中,我们经常会遇到需要修改视图(View)、表(Table)结构的情况。由于Oracle中的视图、函数(Function)、存储过程(Procedure)等对象之间存在着复杂的依赖关系,因此当...
5. **用户友好**:提供了多种用户界面工具,如 Hyperion Interactive Reporting 和 SmartView,让用户能够轻松创建报告和仪表板。 Oracle OLAP,即 Oracle Database OLAP Option,是嵌入在 Oracle 数据库中的在线...
视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。 视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。 视图的优点: 1.对数据库的...
在Oracle数据库环境中遇到中文乱码问题,通常是由于字符集不匹配导致的。Oracle数据库的字符集设置、操作系统环境变量以及应用程序的配置之间需要保持一致,才能正确地处理和显示中文字符。以下是一些关于如何解决...
在IT行业中,数据库管理系统(DBMS)如MySQL和Oracle在数据存储和管理方面扮演着重要角色。当企业或组织需要整合来自不同DBMS的数据时,跨数据库查询技术就显得尤为重要。本篇主要介绍如何通过MySQL数据库创建视图来...
- **View**:视图是基于一个或多个表的虚拟表,可以用来简化复杂的查询语句。 - **Procedure**:存储过程是一种预先定义并编译好的SQL程序,可以接受参数并返回结果。 ##### 2. 查看表数据 通过展开表组件,可以...
4. **Materialized View**:物化视图是一种预先计算好的查询结果,存储在本地数据库中,可以定期或实时从源数据库刷新。适合定期同步且不需要实时更新的场景。 5. **Database Replication**:Oracle的内置复制功能...
1.3.4 视图(View) 18 1.3.5 索引(Index) 18 1.3.6 同义词(Synonym) 19 1.3.7 序列(Sequence) 19 1.3.8 数据库链(Database Link) 20 第2章 管理ORACLE数据库 21 2.1 基本概念 21 2.1.1 数据字典 21 2.1.2 ...
CREATE OR REPLACE VIEW exu9tne (tsno, fileno, blockno, length) AS SELECT ts#, segfile#, segblock#, length FROM sys.uet$ WHERE ext# = 1 UNION ALL SELECT * FROM SYS.EXU9TNEB; ``` - **确保视图...