1Z0-051-DDL-视图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1Z0-051-DDL-视图相关的知识,希望对你有一定的参考价值。
视 图
视图只不过是select语句。
【注】:视图与表共享相同的名称空间:在可以使用表名的任何位置,使用视图名在语法上也是正确的。
1 使用视图的原因
(1)用实施安全性的视图
SQL>create view scott.emp_fin as select
Hiredate,job_id,sal,comm,deptnofrom scott.emp;
SQL>select dname,sum(sal) from dept natural join emp_fin group by dname;
(2)用来简化用户SQL的视图
SQL>create view dept_sal as
Selectd.dname,sum(e.sal) from dept d left outer join emp e on d.deptno=e.deptno
Group byd.dname
Order byd.dname;
SQL>select * from dept_sal;
(3)用来防止错误的视图
SQL>create table emp(empno number constraint emp_empno_pk primary key,
Enamevarchar2(20), deptno number,active varchar2(1) default ‘Y‘);
SQL>create view current_staff as select * from emp where active=‘Y‘;
(4)使数据易于理解的视图
视图除了可以通过易于理解的形式向用户提供数据之外,也提供用户看到的对象和存储在数据库中的对象之间的抽象层,对于维护相当有价值。视图是使应用程序能够在不同数据库之间移植的重要技术。
(5)用来提升性能的视图
SQL>create view dept_emp as
Select/*+USE_HASH (emp dept) */ dname,ename
From deptnatural join emp;
2、创建、更改和删除视图
简单视图从明细表中提取数据,不适用函数,不进行聚合
复杂视图可以联接明细表、使用函数和进行聚合。
(1)创建视图的语法:
CREATE [OR REPLACE] [FORCE |NOFORCE] VIEW
[schema.]viewname[(alias [,alias]…)]
ASsubquery
[WITHCHECK OPTION [CONSTRAINT constraintname]]
[WITHREAD ONLY [CONSTRAINT constraintname]
OR REPLACE 如果视图存在,则在创建之前删除它
FORCE|NOFORCE 即使子查询中没有明显表,FORCE 关键字创建视图,明细表不存在,NOFORCE 则发生错误
WITH CHECK OPTION 如果子查询包括where子句,那么这个选项会防止插入视图中不可见的行,或者防止导致行从视图中消失的更新。
WITH READ ONLY 防止任何DML通过视图。
CONSTRAINT constraintname
(2)删除视图
DROP VIEW[schema.]viewname;
【案例】
SQL>conn peenboo
SQL>create view emp_anon_v as
Select hiredate,job,sla,comm,deptno from emp;
SQL>create view dept_anon_v as
Selectdeptno,dname,location_id from dept;
将以上两个查询联接聚合成为复杂视图。
SQL>create view dept_sum_v as
Selecte.deptno,count(1) staff,sum(e.sal) salaries,d.dname from emp_anon_v e joindept_anon_v d
One.deptno = d.deptno
Group bye.deptno,d.dname;
本文出自 “奋斗不止” 博客,请务必保留此出处http://peenboo.blog.51cto.com/2865551/1793885
以上是关于1Z0-051-DDL-视图的主要内容,如果未能解决你的问题,请参考以下文章