What Is a View EMP Table EMPNO ENAME
What Is a View? EMP Table EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SAL DEPTNO --------- -------------7839 -------KING PRESIDENT 17 -NOV-81 -----5000 -----10 -7698 BLAKE MANAGER 7839 7782 KING CLARK 10 7566 JONES 7839 01 -MAY-81 2850 30 PRESIDENT 7839 17 -NOV-81 MANAGER 09 -JUN-81 5000 2450 10 MANAGER 2975 20 1500 1400 300 1250 30 1600 30 7839 02 -APR-81 7782 MANAGER 7839 7654 CLARK MARTIN 7698 09 -JUN-81 28 -SEP-81 EMPVU 10 View. SALESMAN 10 7499 ALLEN SALESMAN 7698 20 -FEB-81 EMPNO 7844 ENAME JOB 7782 MILLER CLERK TURNER SALESMAN 7698 23 -JAN-82 08 -SEP-81 ------ 7934 ---------10 7900 JAMES CLERK 7698 03 -DEC-81 7839 7566 KING PRESIDENT MANAGER 7839 7521 JONES WARD SALESMAN 7698 02 -APR-81 22 -FEB-81 FORD ANALYST 7566 03 -DEC-81 7782 207902 CLARK MANAGER ANALYST 7566 7369 SCOTT SMITH CLERK 7902 09 -DEC-82 17 -DEC-80 7934 7788 MILLER CLERK 1300 1500 950 2975 1250 3000 800 500 30 20 20 20 7788 SCOTT ANALYST 7566 09 -DEC-82 3000 20 7876 ADAMS CLERK 7788 12 -JAN-83 1100 20 20 7934 MILLER CLERK 7782 23 -JAN-82 1300 10 7369 SMITH CLERK 7902 17 -DEC-80 800 FORD ANALYST 7566 03 -DEC-81 3000 20 7902 12 -1 30 20 Copyright Ó Oracle Corporation, 1998. All rights reserved. 7698 BLAKE MANAGER 7839 01 -MAY-81 2850
Simple Views and Complex Views Feature Simple Views Complex Views Number of tables One or more Contain functions No Yes Contain groups of data No Yes DML through view. Yes Not always 12 -2 Copyright Ó Oracle Corporation, 1998. All rights reserved.
Creating a View • You embed a subquery within the CREATE VIEW statement. CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]. . . )] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] • The subquery can contain complex SELECT syntax. • The subquery cannot contain an ORDER BY clause. 12 -3 Copyright Ó Oracle Corporation, 1998. All rights reserved.
Creating a View • Create a view, EMPVU 10, that contains details of employees in department 10. SQL> 2 3 4 View CREATE VIEW AS SELECT FROM WHERE created. empvu 10 empno, ename, job emp deptno = 10; • Describe the structure of the view by using the SQL*Plus DESCRIBE command. SQL> DESCRIBE empvu 10 12 -4 Copyright Ó Oracle Corporation, 1998. All rights reserved.
Querying a View SQL*Plus SELECT * FROM empvu 10; 7839 7782 7934 12 -5 USER_VIEWS SELECT FROM WHERE KING PRESIDENT CLARK MANAGER MILLER CLERK Copyright Ó Oracle Corporation, 1998. All rights reserved. EMPVU 10 empno, ename, job emp deptno = 10; EMP
Modifying a View • Modify the EMPVU 10 view by using CREATE OR REPLACE VIEW clause. Add an alias for each column name. SQL> 2 3 4 5 View CREATE OR REPLACE VIEW empvu 10 (employee_number, employee_name, job_title) AS SELECT empno, ename, job FROM emp WHERE deptno = 10; created. • Column aliases in the CREATE VIEW clause are listed in the same order as the columns in the subquery. 12 -6 Copyright Ó Oracle Corporation, 1998. All rights reserved.
Creating a Complex View Create a complex view that contains group functions to display values from two tables. SQL> 2 3 4 5 6 7 View 12 -7 CREATE VIEW dept_sum_vu (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; created. Copyright Ó Oracle Corporation, 1998. All rights reserved.
Using the WITH CHECK OPTION Clause • You can ensure that DML on the view stays within the domain of the view by using the WITH CHECK OPTION clause. SQL> 2 3 4 5 View CREATE OR REPLACE VIEW empvu 20 AS SELECT * FROM emp WHERE deptno = 20 WITH CHECK OPTION CONSTRAINT empvu 20_ck; created. • Any attempt to change the department number for any row in the view will fail because it violates the WITH CHECK OPTION constraint. 12 -8 Copyright Ó Oracle Corporation, 1998. All rights reserved.
Denying DML Operations • You can ensure that no DML operations occur by adding the WITH READ ONLY option to your view definition. SQL> 2 3 4 5 6 View CREATE OR REPLACE VIEW empvu 10 (employee_number, employee_name, job_title) AS SELECT empno, ename, job FROM emp WHERE deptno = 10 WITH READ ONLY; created. • Any attempt to perform a DML on any row in the view will result in Oracle Server error. 12 -9 Copyright Ó Oracle Corporation, 1998. All rights reserved.
Removing a View Remove a view without losing data because a view is based on underlying tables in the database. DROP VIEW view; SQL> DROP VIEW empvu 10; View dropped. 12 -10 Copyright Ó Oracle Corporation, 1998. All rights reserved.
- Slides: 10