资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Oracle SQL&PL/SQL,第11,章 视图,描述视图,创建视图,从视图检索数据,修改视图定义,通过视图实现插入、更新、删除数据,删除视图,本章要点,数据库对象,描述,数据存储的基本单元,由行和列组成,逻辑上来自一个或多个表的数据的集合,产生主关键字值,用于提高某些查询的性能,对象的替代名称,对象,表,视图,序列,索引,同义词,什么是视图?,EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO,-,7839 KING PRESIDENT 17-NOV-81 5000 10,7698 BLAKE MANAGER 7839 01-MAY-81 2850 30,7782 CLARK MANAGER 7839 09-JUN-81 2450 10,7566 JONES MANAGER 7839 02-APR-81 2975 20,7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30,7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30,7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30,7900 JAMES CLERK 7698 03-DEC-81 950 30,7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30,7902 FORD ANALYST 7566 03-DEC-81 3000 20,7369 SMITH CLERK 7902 17-DEC-80 800 20,7788 SCOTT ANALYST 7566 09-DEC-82 3000 20,7876 ADAMS CLERK 7788 12-JAN-83 1100 20,7934 MILLER CLERK 7782 23-JAN-82 1300 10,EMP,表,EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO,-,7839 KING PRESIDENT 17-NOV-81 5000 10,7782 CLARK MANAGER 7839 09-JUN-81 1500 300 10,7934 MILLER CLERK 7782 23-JAN-82 1300 10,7566 JONES MANAGER 7839 02-APR-81 2975 20,7788 SCOTT ANALYST 7566 09-DEC-82 3000 20,7876 ADAMS CLERK 7788 12-JAN-83 1100 20,7369 SMITH CLERK 7902 17-DEC-80 800 20,7902 FORD ANALYST 7566 03-DEC-81 3000 20,7698 BLAKE MANAGER 7839 01-MAY-81 2850 30,7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30,7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30,7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30,7900 JAMES CLERK 7698 03-DEC-81 950 30,7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30,EMPNO ENAME JOB,-,7839 KING PRESIDENT,7782 CLARK MANAGER,7934 MILLER CLERK,EMPVU10,视图,为什么使用视图,限制对数据库的访问,容易实现复杂的查询,维护数据的独立性,对于相同的数据可以产生不同的视图,简单视图和复杂视图,特征简单视图复杂视图,基表数量一个一个或多个,包含函数没有有,包含数据组没有有,通过视图实现,DML,操作可以不一定,创建视图,在,CREATE VIEW,语句中嵌入一子查询,子查询可以采用复杂的,SELECT,语法形式,子查询中不能使用,ORDER BY,子句,它可在从视图中查询数据时使用。,CREATE OR REPLACE FORCE|NOFORCE VIEW,view,(,alias,alias,.),AS,subquery,WITH CHECK OPTION CONSTRAINT,constraint,WITH READ ONLY,创建视图,创建视图,EMPVU10,,该视图仅包含,10,部门雇员的细节信息。,用,SQL*Plus DESCRIBE,显示视图的结构。,SQL DESCRIBE empvu10,SQL CREATE VIEW empvu10,2 AS SELECT,empno,ename,job,3 FROM,emp,4 WHERE,deptno,=10;,View created.,创建视图,创建视图时在内部查询中使用列的别名,要从视图中选择列时必须使用内部查询中所使用的列的别名,SQL CREATE VIEW salvu30,2 AS SELECT,empno,EMPLOYEE_NUMBER,ename,NAME,3,sal,SALARY,4 FROM,emp,5 WHERE,deptno,=30;,View created.,创建复杂视图,创建一个基于两个表并且含有组函数的复杂视图,。,SQL CREATE VIEWdept_sum_vu,2 (name,minsal,maxsal,avgsal,),3 AS SELECTd.,dname,MIN(e.,sal,),MAX(e.,sal,),4AVG(e.,sal,),5 FROM,emp,e,dept d,6 WHEREe.,deptno,=d.,deptno,7 GROUP BY d.,dname,;,View created.,从视图检索数据,EMPLOYEE_NUMBER NAME SALARY,-,7698 BLAKE 2850,7654 MARTIN 1250,7499 ALLEN 1600,7844 TURNER 1500,7900 JAMES 950,7521 WARD 1250,6 rows selected.,SQL SELECT*,2 FROMsalvu30;,查询视图,用户视图,EMPVU10,SELECT,empno,ename,job,FROM,emp,WHERE,deptno,=10;,SQL*Plus,SELECT *,FROM empvu10;,EMP,7839,KINGPRESIDENT,7782CLARKMANAGER,7934MILLERCLERK,修改视图,用,CREATE OR REPLACE VIEW,子句修改视图,empvu10,,为每个列添加别名。,CREATE VIEW,子句中别名的顺序必须和内部查询中的列的顺序一一对应,SQL CREATE OR REPLACE VIEW empvu10,2 (employee_number,employee_name,job_title),3 AS SELECT,empno,ename,job,4 FROM,emp,5 WHERE,deptno,=10;,View created.,视图上执行,DML,操作的规则,在简单视图上可以执行,DML,操作,如果视图中包含以下内容则不能删除数据行:,Group,函数,GROUP BY,子句,DISTINCT,关键字,视图上执行,DML,操作的规则,如果视图包含以下内容,则不能实现对数据的修改:,前面一张幻灯片提及的任何条件,,GROUP,函数、,GROUP BY,子句,,DISTINCT,关键字。,使用表达式定义的列,ROWNUM,伪列,如果是以下情况不能插入数据:,:,上面提到的各种情况,基表中未在视图中选择的其它列定义为非空并且没有默认值。,WITH CHECK OPTION,子句,如果要确保在视图上执行的,DML,操作仅限于一定的范围,便可使用,WITH CHECK OPTION,子句。,在视图中任何修改部门编号的操作都会失败因为这违反了,WITH CHECK OPTION,约束,SQL CREATE OR REPLACE VIEW empvu20,2 AS SELECT*,3 FROM,emp,4 WHERE,deptno,=20,5 WITH CHECK OPTION CONSTRAINT empvu20_ck;,View created.,拒绝,DML,操作,在视图定义时使用,WITH READ ONLY,选项可以确保不能对视图执行,DML,操作。,SQL CREATE OR REPLACE VIEW empvu10,2 (employee_number,employee_name,job_title),3 AS SELECT,empno,ename,job,4 FROM,emp,5 WHERE,deptno,=10,6 WITH READ ONLY;,View created.,任何试图执行,DML,的,操作都会导致一个错误,ORA-01752。,删除视图,删除视图并不会删除数据因为视图是基于数据库中的基表。,SQL DROP VIEW empvu10;,View dropped.,DROP VIEW,view,;,小结,视图是基于一个或多个表或视图的逻辑表,使用视图具有以下优点:,限制对数据库的访问,简化查询,维护数据的独立性,对相同的数据可以建立不同的视图,可以删除视图而不影响数据,
展开阅读全文