ch4 INTERMEDIAT SQL
ch4 INTERMEDIAT SQL
Join Expressions
Views
Transactions
Integrity Constraints
SQL Data Types and Schemas
Index Definition in SQL
Authorization
Database System Concepts - 7th Edition 4.2 ©Silberschatz, Korth and Sudarshan
Joined Relations
Database System Concepts - 7th Edition 4.3 ©Silberschatz, Korth and Sudarshan
Natural Join in SQL
Natural join matches tuples with the same values for all common
attributes, and retains only one copy of each common column.
List the names of instructors along with the course ID of the courses that
they taught
select name, course_id
from students, takes
where student.ID = takes.ID;
Same query in SQL with “natural join” construct
select name, course_id
from student natural join takes;
Database System Concepts - 7th Edition 4.4 ©Silberschatz, Korth and Sudarshan
Natural Join in SQL (Cont.)
The from clause can have multiple relations combined using natural join:
select A1, A2, … An
from r1 natural join r2 natural join .. natural join rn
where P ;
Database System Concepts - 7th Edition 4.5 ©Silberschatz, Korth and Sudarshan
Student Relation
Database System Concepts - 7th Edition 4.6 ©Silberschatz, Korth and Sudarshan
Takes Relation
Database System Concepts - 7th Edition 4.7 ©Silberschatz, Korth and Sudarshan
student natural join takes
Database System Concepts - 7th Edition 4.8 ©Silberschatz, Korth and Sudarshan
Dangerous in Natural Join
Database System Concepts - 7th Edition 4.9 ©Silberschatz, Korth and Sudarshan
Natural Join with Using Clause
Database System Concepts - 7th Edition 4.10 ©Silberschatz, Korth and Sudarshan
Join Condition
Database System Concepts - 7th Edition 4.11 ©Silberschatz, Korth and Sudarshan
Join Condition (Cont.)
Database System Concepts - 7th Edition 4.12 ©Silberschatz, Korth and Sudarshan
Outer Join
Database System Concepts - 7th Edition 4.13 ©Silberschatz, Korth and Sudarshan
Outer Join Examples
Relation course
Relation prereq
Observe that
course information is missing CS-347
prereq information is missing CS-315
Database System Concepts - 7th Edition 4.14 ©Silberschatz, Korth and Sudarshan
Left Outer Join
Database System Concepts - 7th Edition 4.15 ©Silberschatz, Korth and Sudarshan
Right Outer Join
Database System Concepts - 7th Edition 4.16 ©Silberschatz, Korth and Sudarshan
Full Outer Join
Database System Concepts - 7th Edition 4.17 ©Silberschatz, Korth and Sudarshan
Joined Types and Conditions
Database System Concepts - 7th Edition 4.18 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.19 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.20 ©Silberschatz, Korth and Sudarshan
Joined Relations – Examples
Database System Concepts - 7th Edition 4.21 ©Silberschatz, Korth and Sudarshan
difference between INNER JOIN and NATURAL
JOIN
Database System Concepts - 7th Edition 4.22 ©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 instructors name and
department, but not the salary. This person should see a relation
described, in SQL, by
Database System Concepts - 7th Edition 4.23 ©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 >
where <query expression> is any legal SQL expression. The view name
is represented by v.
Once a view is defined, the view name can be used to refer to the virtual
relation that the view generates.
View definition is not the same as creating a new relation by evaluating
the query expression
Rather, a view definition causes the saving of an expression; the
expression is substituted into queries using the view.
Database System Concepts - 7th Edition 4.24 ©Silberschatz, Korth and Sudarshan
View Definition and Use
select name
from faculty
where dept_name = 'Biology'
Create a view of department salary totals
Database System Concepts - 7th Edition 4.25 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
Database System Concepts - 7th Edition 4.26 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
Database System Concepts - 7th Edition 4.27 ©Silberschatz, Korth and Sudarshan
View Expansion
Expand the view :
create view physics_fall_2017_watson as
select course_id, room_number
from physics_fall_2017
where building= 'Watson'
To:
Database System Concepts - 7th Edition 4.28 ©Silberschatz, Korth and Sudarshan
View Expansion (Cont.)
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 - 7th Edition 4.29 ©Silberschatz, Korth and Sudarshan
Materialized Views
Database System Concepts - 7th Edition 4.30 ©Silberschatz, Korth and Sudarshan
Update of a View
Database System Concepts - 7th Edition 4.31 ©Silberschatz, Korth and Sudarshan
Some Updates Cannot be Translated Uniquely
Database System Concepts - 7th Edition 4.32 ©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 - 7th Edition 4.33 ©Silberschatz, Korth and Sudarshan
View Updates in SQL
Database System Concepts - 7th Edition 4.34 ©Silberschatz, Korth and Sudarshan
Transactions
A transaction consists of a sequence of query and/or update
statements and is a “unit” of work
The SQL standard specifies that a transaction begins implicitly when an
SQL statement is executed.
The transaction must end with one of the following statements:
Commit work. The updates performed by the transaction become
permanent in the database.
Rollback work. All the updates performed by the SQL statements in
the transaction are undone.
Atomic transaction
either fully executed or rolled back as if it never occurred
Isolation from concurrent transactions
Database System Concepts - 7th Edition 4.35 ©Silberschatz, Korth and Sudarshan
Integrity Constraints
Database System Concepts - 7th Edition 4.36 ©Silberschatz, Korth and Sudarshan
Constraints on a Single Relation
not null
primary key
unique
check (P), where P is a predicate
Database System Concepts - 7th Edition 4.37 ©Silberschatz, Korth and Sudarshan
Not Null Constraints
not null
Declare name and budget to be not null
name varchar(20) not null
budget numeric(12,2) not null
Database System Concepts - 7th Edition 4.38 ©Silberschatz, Korth and Sudarshan
Unique Constraints
Database System Concepts - 7th Edition 4.39 ©Silberschatz, Korth and Sudarshan
The check clause
The check (P) clause specifies a predicate P that must be satisfied by
every tuple in a relation.
Example: ensure that semester is one of fall, winter, spring or summer
Database System Concepts - 7th Edition 4.40 ©Silberschatz, Korth and Sudarshan
Referential Integrity
Ensures that a value that appears in one relation for a given set of
attributes also appears for a certain set of attributes in another relation.
Example: If “Biology” is a department name appearing in one of the
tuples in the instructor relation, then there exists a tuple in the
department relation for “Biology”.
Let A be a set of attributes. Let R and S be two relations that contain
attributes A and where A is the primary key of S. A is said to be a
foreign key of R if for any values of A appearing in R these values also
appear in S.
Database System Concepts - 7th Edition 4.41 ©Silberschatz, Korth and Sudarshan
Referential Integrity (Cont.)
Database System Concepts - 7th Edition 4.42 ©Silberschatz, Korth and Sudarshan
Cascading Actions in Referential Integrity
Database System Concepts - 7th Edition 4.43 ©Silberschatz, Korth and Sudarshan
Integrity Constraint Violation During Transactions
Consider:
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 - 7th Edition 4.44 ©Silberschatz, Korth and Sudarshan
Complex Check Conditions
The predicate in the check clause can be an arbitrary predicate that can
include a subquery.
check (time_slot_id in (select time_slot_id from time_slot))
The check condition states that the time_slot_id in each tuple in the
section relation is actually the identifier of a time slot in the time_slot
relation.
The condition has to be checked not only when a tuple is inserted or
modified in section , but also when the relation time_slot changes
Database System Concepts - 7th Edition 4.45 ©Silberschatz, Korth and Sudarshan
Assertions
Database System Concepts - 7th Edition 4.46 ©Silberschatz, Korth and Sudarshan
Built-in Data Types in SQL
Database System Concepts - 7th Edition 4.47 ©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 - 7th Edition 4.48 ©Silberschatz, Korth and Sudarshan
User-Defined Types
Database System Concepts - 7th Edition 4.49 ©Silberschatz, Korth and Sudarshan
Domains
create domain construct in SQL-92 creates user-defined domain
types
Database System Concepts - 7th Edition 4.50 ©Silberschatz, Korth and Sudarshan
Index Creation
Many queries reference only a small proportion of the records in a table.
It is inefficient for the system to read every record to find a record with
particular value
An index on an attribute of a relation is a data structure that allows the
database system to find those tuples in the relation that have a specified
value for that attribute efficiently, without scanning through all the tuples of
the relation.
We create an index with the create index command
create index <name> on <relation-name> (attribute);
Database System Concepts - 7th Edition 4.51 ©Silberschatz, Korth and Sudarshan
Index Creation Example
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)
The query:
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
Database System Concepts - 7th Edition 4.52 ©Silberschatz, Korth and Sudarshan
Authorization
We may assign a user several forms of authorizations on parts of the
database.
Database System Concepts - 7th Edition 4.53 ©Silberschatz, Korth and Sudarshan
Authorization (Cont.)
Forms of authorization to modify the database schema
Index - allows creation and deletion of indices.
Resources - allows creation of new relations.
Alteration - allows addition or deletion of attributes in a relation.
Drop - allows deletion of relations.
Database System Concepts - 7th Edition 4.54 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.55 ©Silberschatz, Korth and Sudarshan
Privileges in SQL
select: allows read access to relation, or the ability to query using the
view
Example: grant users U1, U2, and U3 select authorization on the
instructor relation:
grant select on instructor to U1, U2, U3
insert: the ability to insert tuples
update: the ability to update using the SQL update statement
delete: the ability to delete tuples.
all privileges: used as a short form for all the allowable privileges
Database System Concepts - 7th Edition 4.56 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.57 ©Silberschatz, Korth and Sudarshan
Roles
Database System Concepts - 7th Edition 4.58 ©Silberschatz, Korth and Sudarshan
Roles Example
Database System Concepts - 7th Edition 4.59 ©Silberschatz, Korth and Sudarshan
Authorization on Views
Database System Concepts - 7th Edition 4.60 ©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;
And more!
Database System Concepts - 7th Edition 4.61 ©Silberschatz, Korth and Sudarshan
End of Chapter 4
Database System Concepts - 7th Edition 4.62 ©Silberschatz, Korth and Sudarshan