0% found this document useful (0 votes)
5 views41 pages

6 SQL

The document outlines the concepts and functionalities related to SQL views, including their creation, resolution, and materialization. It explains how views serve as virtual relations derived from base relations and details the SQL commands for creating and dropping views, along with examples. Additionally, it discusses view restrictions, updatability, and the advantages of using the WITH CHECK OPTION and view materialization for performance optimization.

Uploaded by

hudaaghazi22
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views41 pages

6 SQL

The document outlines the concepts and functionalities related to SQL views, including their creation, resolution, and materialization. It explains how views serve as virtual relations derived from base relations and details the SQL commands for creating and dropping views, along with examples. Additionally, it discusses view restrictions, updatability, and the advantages of using the WITH CHECK OPTION and view materialization for performance optimization.

Uploaded by

hudaaghazi22
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 41

University of Salahaddin

College of Engineering
Software & Informatics Engineering Department

SQL(CONTINUE)
ND
2 STAGE

Lecturer:
Dr. Hanan Kamal
2

Objectives

• Create View
• Drop View
• View Resolution
• View Materialization
3

Views
View
Dynamic result of one or more relational operations operating
on base relations to produce another relation.

• Virtual relation that does not necessarily actually


exist in the database but is produced upon request, at
time of request.
4

Views
• Contents of a view are defined as a query on one or
more base relations.
• With view resolution, any operations on view are
automatically translated into operations on relations
from which it is derived.
• With view materialization, the view is stored as a
temporary table, which is maintained as the
underlying base tables are updated.
5

SQL - CREATE VIEW


CREATE VIEW ViewName [ (newColumnName [,...]) ]
AS subselect
[WITH [CASCADED | LOCAL] CHECK OPTION]
• Can assign a name to each column in view.
• If list of column names is specified, it must have same
number of items as number of columns produced by
subselect.
• If omitted, each column takes name of corresponding
column in subselect.
• List must be specified if there is any ambiguity in a column
name.
• The subselect is known as the defining query.
6

Example 6.3 - Create Horizontal View


Create view so that manager at branch B003 can only see
details for staff who work in his or her office.
CREATE VIEW Manager3Staff
AS SELECT *
FROM Staff
WHERE branchNo = ‘B003’;
7

Example 6.4 - Create Vertical View


Create view of staff details at branch B003 excluding
salaries.
CREATE VIEW Staff3
AS SELECT staffNo, fName, lName, position, sex
FROM Staff
WHERE branchNo = ‘B003’;
8

Example 6.5 - Grouped and Joined Views

Create view of staff who manage properties for rent,


including branch number they work at, staff number,
and number of properties they manage.
CREATE VIEW StaffPropCnt (branchNo, staffNo,
cnt)
AS SELECT s.branchNo, s.staffNo, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo;
9

Example 6.3 - Grouped and Joined Views


10

SQL - DROP VIEW

DROP VIEW ViewName [RESTRICT | CASCADE]

• Causes definition of view to be deleted from


database.
• For example:
DROP VIEW Manager3Staff;
11

SQL - DROP VIEW


• With CASCADE, all related dependent objects are
deleted; i.e. any views defined on view being dropped.
• With RESTRICT (default), if any other objects depend
for their existence on continued existence of view
being dropped, command is rejected.
12

View Resolution
Count number of properties managed by each member
at branch B003.

SELECT staffNo, cnt


FROM StaffPropCnt
WHERE branchNo = ‘B003’
ORDER BY staffNo;
13

View Resolution

The previous query is based on the StaffPropCnt view


(a) View column names in SELECT list are translated
into their corresponding column names in the
defining query:
SELECT s.staffNo As staffNo, COUNT(*) As
cnt
(b) View names in FROM are replaced with
corresponding FROM lists of defining query:
FROM Staff s, PropertyForRent p
14

View Resolution

(c) WHERE from user query is combined with WHERE of


defining query using AND:
WHERE s.staffNo = p.staffNo AND branchNo =
‘B003’
(d) GROUP BY and HAVING clauses copied from
defining query:
GROUP BY s.branchNo, s.staffNo
(e) ORDER BY copied from query with view column
name translated into defining query column name
ORDER BY s.staffNo
15

View Resolution

(f) Final merged query is now executed to produce the


result:
SELECT s.staffNo AS staffNo, COUNT(*) AS cnt
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo AND
branchNo = ‘B003’
GROUP BY s.branchNo, s.staffNo
ORDER BY s.staffNo;
16

Example 6.5 - Grouped and Joined Views

Consider this example for Restrictions on


Views
CREATE VIEW StaffPropCnt (branchNo, staffNo, cnt)
AS SELECT s.branchNo, s.staffNo, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo;
17

Restrictions on Views
SQL imposes several restrictions on creation and
use of views.

(a) If column in view is based on an aggregate function:


• Column may appear only in SELECT and
ORDER BY clauses of queries that access
view.
• Column may not be used in WHERE nor be
an argument to an aggregate function in any
query based on view.
18

Restrictions on Views
• For example, following query would fail:

SELECT COUNT(cnt)
FROM StaffPropCnt;

• Similarly, following query would also fail:

SELECT *
FROM StaffPropCnt
WHERE cnt > 2;
19

Restrictions on Views
(b) Grouped view may never be joined with a base
table or a view.

• For example, StaffPropCnt view is a grouped view,


so any attempt to join this view with another table
or view fails.
20

View Updatability

• All updates to base table reflected in all views


that encompass base table.

• Similarly, may expect that if view is updated


then base table(s) will reflect change.
21

Example 6.5 - Grouped and Joined Views

Consider this example for View Updatability


CREATE VIEW StaffPropCnt (branchNo, staffNo, cnt)
AS SELECT s.branchNo, s.staffNo, COUNT(*)
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo;
22

View Updatability
• However, consider again view StaffPropCnt.
• If we tried to insert record showing that at branch
B003, SG5 manages 2 properties:
INSERT INTO StaffPropCnt
VALUES (‘B003’, ‘SG5’, 2);

• Have to insert 2 records into PropertyForRent


showing which properties SG5 manages. However,
do not know which properties they are; i.e. do not
know primary keys!
23

View Updatability
• If change definition of view and replace count with
actual property numbers:

CREATE VIEW StaffPropList (branchNo, staffNo,


propertyNo)
AS SELECT s.branchNo, s.staffNo, p.propertyNo
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo;
24

View Updatability
• Now try to insert the record:
INSERT INTO StaffPropList
VALUES (‘B003’, ‘SG5’, ‘PG19’);

• Still problem, because in PropertyForRent all


columns except postcode/staffNo are not allowed
nulls.
• However, have no way of giving remaining non-null
columns values.
25

View Updatability

• ISO specifies that a view is updatable if and only if:


• DISTINCT is not specified.
• Every element in SELECT list of defining query is a
column name and no column appears more than once.
• FROM clause specifies only one table, excluding any
views based on a join, union, intersection or difference.
• No nested SELECT referencing outer table.
• No GROUP BY or HAVING clause.
• Also, every row added through view must not violate
integrity constraints of base table.
26

Updatable View

For view to be updatable, DBMS must be able


to trace any row or column back to its row or
column in the source table.
27

WITH CHECK OPTION


• This feature is so useful that it can make working with
views more attractive than working with the base tables.
28

WITH CHECK OPTION


• Create view Manager3Staff
CREATE VIEW Manager3Staff
AS SELECT *
FROM Staff
WHERE branchNo = ‘B003’
WITH CHECK OPTION;
• If attempt to update :
UPDATE Manager3Staff
SET branchNo = ‘B005’
WHERE staffNo = ‘SG37’;
29

WITH CHECK OPTION


• The specification of the WITH CHECK OPTION clause in
the definition of the view prevents this from happening, as
this would cause the row to migrate from this horizontal
view.

• Similarly, if we attempt to insert the following row through


the view:
• INSERT INTO Manager3Staff VALUES(‘SL15’, ‘Mary’,
‘Black’, ‘Assistant’, ‘F’, DATE‘1967-06-21’, 8000, ‘B002’);

• WITH CHECK OPTION prevents insert (as branch B002


is not part of the view)
30

WITH CHECK OPTION


31

WITH CHECK OPTION


• this update would fail:
• Although the update would cause the row to
disappear from the view HighSalary, the row
would not disappear from the table LowSalary
that HighSalary is derived from.

• However, if instead the update tried to set the


salary to 8000, then the update would succeed as
the row would no longer be part of LowSalary.
32

WITH CHECK OPTION


• If the view HighSalary had specified WITH
CASCADED CHECK OPTION
• Setting the salary to either 9500 or 8000 would
be rejected because the row would disappear
from HighSalary.
• Therefore, to ensure that anomalies like this do
not arise, each view should normally be created
using the WITH CASCADED CHECK OPTION
33

Advantage and Disadvantage


34

View Materialization
• View resolution mechanism may be slow, particularly
if view is accessed frequently.
• View materialization( is solution) stores view as
temporary table when view is first queried.

• Thereafter, queries based on materialized view can


be faster than recomputing view each time.
• Difficulty is maintaining the currency of view while
base tables(s) are being updated.
35

View Materialization
• The process of updating a materialized
view in response to changes to the
underlying data is called view
maintenance.
36

View Maintenance

• View maintenance aims to apply only those changes


necessary to keep view current.
• Consider following view:
CREATE VIEW StaffPropRent(staffNo)
AS SELECT DISTINCT staffNo
FROM PropertyForRent
WHERE branchNo = ‘B003’ AND rent > 400;
37

View Materialization

• If insert row into PropertyForRent with


rent  400 then view would be
unchanged.

• If insert row for property PG24 at


branch B003 with staffNo = SG14 and
rent = 550, then row would appear in
materialized view.
38

View Materialization
• If insert row for property PG54 at branch
B003 with staffNo = SG37 and rent = 450,
then no new row would need to be added
to materialized view.

• If delete property PG24, row should be


deleted from materialized view.

• If delete property PG54, then row for SG37


should not be deleted (because of existing
property PG21).
39

Thank you
40

Instance of the DreamHome rental


database
41

Instance of the DreamHome rental


database

You might also like