- College of Computing & Informatics

Download Report

Transcript - College of Computing & Informatics

What Is a View?
EMP Table
EMPNO ENAME
JOB
JOB
MGR HIREDATE
SAL
SAL COMM
COMM DEPTNO
----- ------- --------- ----- --------- ----- ----- ------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
MANAGER
PRESIDENT 7839 17-NOV-81
09-JUN-81
2450
5000
10
MANAGER
2975
20
1250
1500 1400
300
30
1600
300
30
0
30
7839 02-APR-81
7782
7654 CLARK
MARTIN
MANAGER
7698 09-JUN-81
7839
28-SEP-81
EMPVU10
ViewSALESMAN
10
7499 ALLEN
SALESMAN
7698 20-FEB-81
EMPNO 7844
ENAME
JOB 7782
TURNER SALESMAN
MILLER
CLERK
7698 23-JAN-82
08-SEP-81
------ 7934
-----------------10
7900 JAMES
CLERK
7698 03-DEC-81
7839 7566
KING
PRESIDENT
7521 JONES
WARD
SALESMAN
MANAGER
7698 02-APR-81
7839
22-FEB-81
FORD
ANALYST
7566 03-DEC-81
7782 207902
CLARK
MANAGER
7369 SCOTT
SMITH
CLERK
ANALYST
7902 09-DEC-82
7566
17-DEC-80
7934 7788
MILLER
CLERK
1500
1300
950
1250
2975
3000
800
3000
500
30
20
20
20
7788 SCOTT
ANALYST
7566 09-DEC-82
3000
20
7876
7876 ADAMS
CLERK
CLERK
7788 12-JAN-83
1100
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
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, EMPVU10, that contains
details of employees in department 10.
SQL>
2
3
4
View
CREATE VIEW
AS SELECT
FROM
WHERE
created.
empvu10
empno, ename, job
emp
deptno = 10;
• Describe the structure of the view by
using the SQL*Plus DESCRIBE
command.
SQL> DESCRIBE empvu10
12-4
Copyright  Oracle Corporation, 1998. All rights reserved.
Querying a View
SQL*Plus
USER_VIEWS
SELECT *
FROM
empvu10;
7839
7782
7934
12-5
EMPVU10
SELECT
FROM
WHERE
KING
PRESIDENT
CLARK MANAGER
MILLER CLERK
Copyright  Oracle Corporation, 1998. All rights reserved.
empno, ename, job
emp
deptno = 10;
EMP
Modifying a View
• Modify the EMPVU10 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 empvu10
(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
AS SELECT
FROM
WHERE
GROUP BY
created.
dept_sum_vu
(name, minsal, maxsal, avgsal)
d.dname, MIN(e.sal), MAX(e.sal),
AVG(e.sal)
emp e, dept d
e.deptno = d.deptno
d.dname;
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 empvu20
AS SELECT
*
FROM
emp
WHERE
deptno = 20
WITH CHECK OPTION CONSTRAINT empvu20_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 empvu10
(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 empvu10;
View dropped.
12-10
Copyright  Oracle Corporation, 1998. All rights reserved.