Views
Views
Objectives
After completing this lesson, you should be able
to do the following:
Describe a view
Create, alter the definition of, and drop a view
Retrieve data through a view
Insert, update, and delete data through
a view
Create and use an inline view
Perform Top-N analysis
Database Objects
Description
Basic unit of storage; composed of rows
and columns
Logically represents subsets of data from
one or more tables
Generates primary key values
Improves the performance of some queries
Alternative name for an object
Object
Table
View
Sequence
Index
Synonym
What is a View?
EMPLOYEES Table:
Why Use Views?
To restrict data access
To make complex queries easy
To provide data independence
To present different views of the same data
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 operations
through a view Yes Not always
Creating a View
You embed a subquery within the CREATE VIEW
statement.
The subquery can contain complex SELECT
syntax.
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
Creating a View
Create a view, EMPVU80, that contains details of
employees in department 80.
Describe the structure of the view by using the
iSQL*Plus DESCRIBE command.
DESCRIBE empvu80
CREATE VIEW empvu80
AS SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
View created.
Creating a View
Create a view by using column aliases in the
subquery.
Select the columns from this view by the given
alias names.
CREATE VIEW salvu50
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;
View created.
Retrieving Data from a View
SELECT *
FROM salvu50;
Querying a View
USER_VIEWS
EMPVU80
SELECT employee_id,
last_name, salary
FROM employees
WHERE department_id=80;
iSQL*Plus
SELECT *
FROM empvu80;
EMPLOYEES
Oracle Server
Modifying a View
Modify the EMPVU80 view by using CREATE OR
REPLACE VIEW clause. Add an alias for each
column name.
Column aliases in the CREATE VIEW clause are
listed in the same order as the columns in the
subquery.
CREATE OR REPLACE VIEW empvu80
(id_number, name, sal, department_id)
AS SELECT employee_id, first_name || ' ' || last_name,
salary, department_id
FROM employees
WHERE department_id = 80;
View created.
Creating a Complex View
Create a complex view that contains group functions
to display values from two tables.
CREATE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS SELECT d.department_name, MIN(e.salary),
MAX(e.salary),AVG(e.salary)
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY d.department_name;
View created.
Rules for Performing
DML Operations on a View
You can perform DML operations on simple views.
You cannot remove a row if the view contains the
following:
Group functions
A GROUP BY clause
The DISTINCT keyword
The pseudocolumn ROWNUM keyword
Rules for Performing
DML Operations on a View
You cannot modify data in a view if it contains:
Group functions
A GROUP BY clause
The DISTINCT keyword
The pseudocolumn ROWNUM keyword
Columns defined by expressions
Rules for Performing
DML Operations on a View
You cannot add data through a view if the view
includes:
Group functions
A GROUP BY clause
The DISTINCT keyword
The pseudocolumn ROWNUM keyword
Columns defined by expressions
NOT NULL columns in the base tables that are not
selected by the view
You can ensure that DML operations performed on
the view stay within the domain of the view by
using the WITH CHECK OPTION clause.
Any attempt to change the department number for
any row in the view fails because it violates the
WITH CHECK OPTION constraint.
CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM employees
WHERE department_id = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck ;
View created.
Using the WITH CHECK OPTION Clause
Denying DML Operations
You can ensure that no DML operations occur by
adding the WITH READ ONLY option to your view
definition.
Any attempt to perform a DML on any row in the
view results in an Oracle server error.
Denying DML Operations
CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT employee_id, last_name, job_id
FROM employees
WHERE department_id = 10
WITH READ ONLY;
View created.
Removing a View
You can remove a view without losing data because a
view is based on underlying tables in the database.
DROP VIEW empvu80;
View dropped.
DROP VIEW view;
Inline Views
An inline view is a subquery with an alias (or
correlation name) that you can use within a SQL
statement.
A named subquery in the FROM clause of the main
query is an example of an inline view.
An inline view is not a schema object.
Top-N Analysis
Top-N queries ask for the n largest or smallest
values of a column. For example:
What are the ten best selling products?
What are the ten worst selling products?
Both largest values and smallest values sets are
considered Top-N queries.
Performing Top-N Analysis
The high-level structure of a Top-N analysis
query is:
SELECT [column_list], ROWNUM
FROM (SELECT [column_list]
FROM table
ORDER BY Top-N_column)
WHERE ROWNUM <= N;
Example of Top-N Analysis
To display the top three earner names and salaries
from the EMPLOYEES table:
SELECT ROWNUM as RANK, last_name, salary
FROM (SELECT last_name,salary FROM employees
ORDER BY salary DESC)
WHERE ROWNUM <= 3;
3 1 2
1 2 3
Summary
In this lesson, you should have learned that a view is
derived from data in other tables or views and
provides the following advantages:
Restricts database access
Simplifies queries
Provides data independence
Provides multiple views of the same data
Can be dropped without removing the underlying
data
An inline view is a subquery with an alias name.
Top-N analysis can be done using subqueries and
outer queries.
Practice 11 Overview
This practice covers the following topics:
Creating a simple view
Creating a complex view
Creating a view with a check constraint
Attempting to modify data in the view
Displaying view definitions
Removing views