Chapter 4: Intermediate SQL: Database System Concepts, 6 Ed
Chapter 4: Intermediate SQL: Database System Concepts, 6 Ed
■ Join Expressions
■ Views
■ Transactions
■ Integrity Constraints
■ SQL Data Types and Schemas
■ Authorization
Database System Concepts - 6th Edition 4.2 ©Silberschatz, Korth and Sudarshan
Joined Relations
Database System Concepts - 6th Edition 4.3 ©Silberschatz, Korth and Sudarshan
Join operations – Example
■ Relation course
■ Relation prereq
■ Observe that
prereq information is missing for CS-315 and
course information is missing for CS-437
Database System Concepts - 6th Edition 4.4 ©Silberschatz, Korth and Sudarshan
Outer Join
Database System Concepts - 6th Edition 4.5 ©Silberschatz, Korth and Sudarshan
Left Outer Join
Database System Concepts - 6th Edition 4.6 ©Silberschatz, Korth and Sudarshan
Right Outer Join
Database System Concepts - 6th Edition 4.7 ©Silberschatz, Korth and Sudarshan
Full Outer Join
Database System Concepts - 6th Edition 4.8 ©Silberschatz, Korth and Sudarshan
Joined Relations
■ Join operations take two relations and return as a result
another relation.
■ These additional operations are typically used as subquery
expressions in the from clause
■ Join condition – defines which tuples in the two relations
match, and what attributes are present in the result of the join.
■ Join type – defines how tuples in each relation that do not
match any tuple in the other relation (based on the join
condition) are treated.
Database System Concepts - 6th Edition 4.9 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 6th Edition 4.10 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
■ course natural right outer join prereq
null
Database System Concepts - 6th Edition 4.11 ©Silberschatz, Korth and Sudarshan
Views
■ In some cases, it is not desirable for all users to see the entire
logical model (that is, all the actual relations stored in the
database.)
■ Consider a person who needs to know an instructor’s name
and department, but not the salary. This person should see a
relation described, in SQL, by
Database System Concepts - 6th Edition 4.12 ©Silberschatz, Korth and Sudarshan
View Definition
■ A view is defined using the create view statement which has
the form
create view v as < query expression >
Database System Concepts - 6th Edition 4.13 ©Silberschatz, Korth and Sudarshan
Example Views
■ A view of instructors without their salary
create view faculty as
select ID, name, dept_name
from instructor
■ Find all instructors in the Biology department
select name
from faculty
where dept_name = ‘Biology’
■ Create a view of department salary totals
create view departments_total_salary(dept_name, total_salary) as
select dept_name, sum (salary)
from instructor
group by dept_name;
Database System Concepts - 6th Edition 4.14 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
■ One view may be used in the expression defining another view
■ A view relation v1 is said to depend directly on a view relation
v2 if v2 is used in the expression defining v1
■ A view relation v1 is said to depend on view relation v2 if either
v1 depends directly on v2 or there is a path of dependencies
from v1 to v2
■ A view relation v is said to be recursive if it depends on itself.
Database System Concepts - 6th Edition 4.15 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
■ create view physics_fall_2009 as
select course.course_id, sec_id, building, room_number
from course, section
where course.course_id = section.course_id
and course.dept_name = ’Physics’
and section.semester = ’Fall’
and section.year = ’2009’;
■ create view physics_fall_2009_watson as
select course_id, room_number
from physics_fall_2009
where building= ’Watson’;
Database System Concepts - 6th Edition 4.16 ©Silberschatz, Korth and Sudarshan
View Expansion
■ A way to define the meaning of views defined in terms of other
views.
■ Let view v1 be defined by an expression e1 that may itself
contain uses of view relations.
■ View expansion of an expression repeats the following
replacement step:
repeat
Find any view relation vi in e1
Replace the view relation vi by the expression defining vi
until no more view relations are present in e1
■ As long as the view definitions are not recursive, this loop will
terminate
Database System Concepts - 6th Edition 4.17 ©Silberschatz, Korth and Sudarshan
View Expansion
■ Expand use of a view in a query/another view
Database System Concepts - 6th Edition 4.18 ©Silberschatz, Korth and Sudarshan
Materialized Views
■ Materializing a view: create a physical table containing all the tuples
in the result of the query defining the view
■ If relations used in the query are updated, the materialized view result
becomes out of date
● Need to maintain the view, by updating the view whenever the
underlying relations are updated.
Database System Concepts - 6th Edition 4.19 ©Silberschatz, Korth and Sudarshan
Update of a View
■ Add a new tuple to faculty view which we defined earlier
insert into faculty values (’30765’, ’Green’, ’Music’);
This insertion must be represented by the insertion of the tuple
(’30765’, ’Green’, ’Music’, null)
into the instructor relation
Database System Concepts - 6th Edition 4.20 ©Silberschatz, Korth and Sudarshan
Some Updates cannot be Translated Uniquely
■ create view instructor_info as
select ID, name, building
from instructor, department
where instructor.dept_name= department.dept_name;
■ insert into instructor_info values (’69987’, ’White’, ’Taylor’);
4 which department, if multiple departments in Taylor?
4 what if no department is in Taylor?
■ Most SQL implementations allow updates only on simple views
● The from clause has only one database relation.
● The select clause contains only attribute names of the
relation, and does not have any expressions, aggregates, or
distinct specification.
● Any attribute not listed in the select clause can be set to null
● The query does not have a group by or having clause.
Database System Concepts - 6th Edition 4.21 ©Silberschatz, Korth and Sudarshan
And Some Not at All
■ create view history_instructors as
select *
from instructor
where dept_name= ’History’;
■ What happens if we insert (’25566’, ’Brown’, ’Biology’, 100000)
into history_instructors?
Database System Concepts - 6th Edition 4.22 ©Silberschatz, Korth and Sudarshan
Transactions
■ Unit of work
■ Atomic transaction
● either fully executed or rolled back as if it never occurred
■ Isolation from concurrent transactions
■ Transactions begin implicitly when an SQL statement is executed
● Ended by commit work or rollback work
■ But default on most databases: each SQL statement commits
automatically
● Can turn off auto commit for a session (e.g. using API)
● In SQL:1999, can use: begin atomic …. end
4 Not supported on most databases
Database System Concepts - 6th Edition 4.23 ©Silberschatz, Korth and Sudarshan
Integrity Constraints
Database System Concepts - 6th Edition 4.24 ©Silberschatz, Korth and Sudarshan
Integrity Constraints on a Single Relation
■ not null
■ primary key
■ unique
■ check (P), where P is a predicate
Database System Concepts - 6th Edition 4.25 ©Silberschatz, Korth and Sudarshan
Not Null and Unique Constraints
■ not null
● Declare name and budget to be not null
name varchar(20) not null
budget numeric(12,2) not null
■ unique ( A1, A2, …, Am)
● The unique specification states that the attributes A1, A2, …
Am form a superkey.
● Attributes declared as unique are permitted to be null (in
contrast to primary keys).
Database System Concepts - 6th Edition 4.26 ©Silberschatz, Korth and Sudarshan
The check clause
■ check (P)
where P is a predicate
Database System Concepts - 6th Edition 4.28 ©Silberschatz, Korth and Sudarshan
Cascading Actions in Referential Integrity
Database System Concepts - 6th Edition 4.29 ©Silberschatz, Korth and Sudarshan
Integrity Constraint Violation During
Transactions
■ E.g.
create table person (
ID char(10),
name char(40),
mother char(10),
father char(10),
primary key ID,
foreign key father references person,
foreign key mother references person)
■ How to insert a tuple without causing constraint violation ?
● insert father and mother of a person before inserting person
● OR, set father and mother to null initially, update after
inserting all persons (not possible if father and mother
attributes declared to be not null)
● OR defer constraint checking
Database System Concepts - 6th Edition 4.30 ©Silberschatz, Korth and Sudarshan
Complex Check Clauses
■ check (time_slot_id in (select time_slot_id from time_slot))
■ Every section has at least one instructor teaching the section.
● how to write this?
■ Unfortunately: subquery in check clause not supported by
pretty much any database
● Alternative: triggers (later)
■ create assertion <assertion-name> check <predicate>;
● Also not supported by anyone
Database System Concepts - 6th Edition 4.31 ©Silberschatz, Korth and Sudarshan
Built-in Data Types in SQL
■ date: Dates, containing a (4 digit) year, month and date
● Example: date ‘2005-7-27’
■ time: Time of day, in hours, minutes and seconds.
● Example: time ‘09:00:30’ time ‘09:00:30.75’
■ timestamp: date plus time of day
● Example: timestamp ‘2005-7-27 09:00:30.75’
■ interval: period of time
● Example: interval ‘1’ day
● Subtracting a date/time/timestamp value from another gives
an interval value
● Interval values can be added to date/time/timestamp values
Database System Concepts - 6th Edition 4.32 ©Silberschatz, Korth and Sudarshan
Index Creation
■ create table student
(ID varchar (5),
name varchar (20) not null,
dept_name varchar (20),
tot_cred numeric (3,0) default 0,
primary key (ID))
■ create index studentID_index on student(ID)
■ Indices are data structures used to speed up access to records
with specified values for index attributes
● e.g. select *
from student
where ID = ‘12345’
can be executed by using the index to find the required
record, without looking at all records of student
More on indices in Chapter 11
Database System Concepts - 6th Edition 4.33 ©Silberschatz, Korth and Sudarshan
User-Defined Types
Database System Concepts - 6th Edition 4.34 ©Silberschatz, Korth and Sudarshan
Domains
■ create domain construct in SQL-92 creates user-defined
domain types
Database System Concepts - 6th Edition 4.35 ©Silberschatz, Korth and Sudarshan
Large-Object Types
■ Large objects (photos, videos, CAD files, etc.) are stored as a
large object:
● blob: binary large object -- object is a large collection of
uninterpreted binary data (whose interpretation is left to an
application outside of the database system)
● clob: character large object -- object is a large collection of
character data
● When a query returns a large object, a pointer is returned
rather than the large object itself.
Database System Concepts - 6th Edition 4.36 ©Silberschatz, Korth and Sudarshan
Authorization
Database System Concepts - 6th Edition 4.37 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 6th Edition 4.38 ©Silberschatz, Korth and Sudarshan
Privileges in SQL
Database System Concepts - 6th Edition 4.39 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 6th Edition 4.40 ©Silberschatz, Korth and Sudarshan
Roles
■ create role instructor;
■ grant instructor to Amit;
■ Privileges can be granted to roles:
● grant select on takes to instructor;
■ Roles can be granted to users, as well as to other roles
● create role teaching_assistant
● grant teaching_assistant to instructor;
4 Instructor inherits all privileges of teaching_assistant
■ Chain of roles
● create role dean;
● grant instructor to dean;
● grant dean to Satoshi;
Database System Concepts - 6th Edition 4.41 ©Silberschatz, Korth and Sudarshan
Authorization on Views
■ create view geo_instructor as
(select *
from instructor
where dept_name = ’Geology’);
■ grant select on geo_instructor to geo_staff
■ Suppose that a geo_staff member issues
● select *
from geo_instructor;
■ What if
● geo_staff does not have permissions on instructor?
● creator of view did not have some permissions on
instructor?
Database System Concepts - 6th Edition 4.42 ©Silberschatz, Korth and Sudarshan
Other Authorization Features
■ references privilege to create foreign key
● grant reference (dept_name) on department to Mariano;
● why is this required?
■ transfer of privileges
● grant select on department to Amit with grant option;
● revoke select on department from Amit, Satoshi cascade;
● revoke select on department from Amit, Satoshi restrict;
■ Etc. read Section 4.6 for more details we have omitted here.
Database System Concepts - 6th Edition 4.43 ©Silberschatz, Korth and Sudarshan
End of Chapter 4
Database System Concepts - 6th Edition 4.45 ©Silberschatz, Korth and Sudarshan
Figure 4.02
Database System Concepts - 6th Edition 4.46 ©Silberschatz, Korth and Sudarshan
Figure 4.03
Database System Concepts - 6th Edition 4.47 ©Silberschatz, Korth and Sudarshan
Figure 4.04
Database System Concepts - 6th Edition 4.48 ©Silberschatz, Korth and Sudarshan
Figure 4.05
Database System Concepts - 6th Edition 4.49 ©Silberschatz, Korth and Sudarshan
Figure 4.07
Taylor
Database System Concepts - 6th Edition 4.50 ©Silberschatz, Korth and Sudarshan
Figure 4.06
Database System Concepts - 6th Edition 4.51 ©Silberschatz, Korth and Sudarshan
Figure 4.03
Database System Concepts - 6th Edition 4.52 ©Silberschatz, Korth and Sudarshan