ORACLE视图的创建方法

来源:互联网 发布:零基础学嵌入式知乎 编辑:程序博客网 时间:2024/05/09 18:19
视图是存储在数据字典的一条select语句。通过创建视图可以提取数据的逻辑上的的集合和组合。
视图分为:
简单视图和复杂视图
简单视图:只从单表中获取数据、不包含函数和数据组、可实现DML操作
复杂视图:从多表中获取数据、包含函数和数据组、不能实现DML操作
视图创建语句
CREATE[OR REPLACE][FORCE|NOFORCE] VIEW view_name
   [(alias[,alias]...)]
   AS subquery
   [WITH CHECK OPRION[CONSTRAINT constraint]] 
   [WITH READ ONLY]
其中:
OR REPLACE :若所创建的视图存在,ORACLE自动重建该视图;
FORCE :不关基表是否存在ORACLE都会自动创建该视图;
NOFORCE :只有基表都存在ORACLE才会创建该视图;
alais :为视图产生的列定义的别名;
subquery :一条完整的SELECT语句,可以在该语句中定义别名;
WITH CHECK OPTION :插入或者修改的数据行必须满足视图的定义的约束;
WITH READ ONY :该视图上不能进行任何DML操作;
例如:
CREATE OR REPLACE VIEW dept_sum_vm
  (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选项可以不删除原视图便可更改其定义并重建,或重新授权对象权限。


视图修改:
直接创建同名视图即可
视图的删除:
DROP VIEW VIEW_NAME语句删除视图
删除视图的定义不影响基表中的数据。
只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
视图被删除后,基于被删除视图的其他视图或应用将无效