Chapter 4
Chapter 4
§ 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
§ This query omits all (name, title) pairs where the student takes a
course in a department other than the student's own department.
§ The correct version (above), correctly outputs such pairs.
Database System Concepts - 7th Edition 4.9 ©Silberschatz, Korth and Sudarshan
Dangerous in Natural Join
• Incorrect version
select name, title
from student natural join takes natural join course;
§ This query omits all (name, title) pairs where the student takes a
course in a department other than the student's own department.
Database System Concepts - 7th Edition 4.10 ©Silberschatz, Korth and Sudarshan
Natural Join with Using Clause
Database System Concepts - 7th Edition 4.11 ©Silberschatz, Korth and Sudarshan
Join Condition
§ The on condition allows a general predicate over the relations being joined
§ This predicate is written like a where clause predicate except for the use of
the keyword on
§ Query example
select *
from student join takes on student_ID = takes_ID
• The on condition above specifies that a tuple from student matches a
tuple from takes if their ID values are equal.
§ Equivalent to:
select *
from student , takes
where student_ID = takes_ID
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
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.22 ©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.23 ©Silberschatz, Korth and Sudarshan
View Definition and Use
Database System Concepts - 7th Edition 4.24 ©Silberschatz, Korth and Sudarshan
Views Defined Using Other Views
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
View Expansion
Database System Concepts - 7th Edition 4.27 ©Silberschatz, Korth and Sudarshan
View Expansion (Cont.)
Database System Concepts - 7th Edition 4.28 ©Silberschatz, Korth and Sudarshan
Materialized Views
Database System Concepts - 7th Edition 4.29 ©Silberschatz, Korth and Sudarshan
Update of a View
Database System Concepts - 7th Edition 4.30 ©Silberschatz, Korth and Sudarshan
Some Updates Cannot be Translated Uniquely
Database System Concepts - 7th Edition 4.31 ©Silberschatz, Korth and Sudarshan
And Some Not at All
Database System Concepts - 7th Edition 4.32 ©Silberschatz, Korth and Sudarshan
And Some Not at All (Cont.)
§ create view history_instructors as
select *
from instructor
where dept_name= 'History';
§ What happens if we insert
('25566', 'Brown', 'Biology', 100000) If WITH CHECK
OPTION is specified,
into history_instructors?
every row that is
inserted or updated
through the view
must conform to the
definition of the view.
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
Database System Concepts - 7th Edition 4.35 ©Silberschatz, Korth and Sudarshan
Error message if you remove the prefix @
Transactions
§ By default, MySQL runs with autocommit mode enabled. This means that, when not otherwise inside a
transaction, each statement is atomic, as if it were surrounded by START TRANSACTION and COMMIT.
With START TRANSACTION, autocommit remains disabled until you end the transaction
with COMMIT or ROLLBACK.
Database System Concepts - 7th Edition 4.36 ©Silberschatz, Korth and Sudarshan
Variables in MySQL
§ There are three types of variables in MySQL: user-defined, local, and system.
• User-defined variables (@var) are loosely typed variables that may be
initialized somewhere in a session and keep their value until the session
ends.
You can initialize them by one of the following 2 ways
§ set @var = 5;
§ select @var := 5;
Note that “ @var=5 ” is a proposition that is either true or false. That is
why we either need a “set” or a “:” in the above two ways.
• Local variables (var) can be used in a stored procedure only (see the
“price” in the next slide).
• System variables (@@var) are already predefined by MySQL.
Database System Concepts - 7th Edition 4.37 ©Silberschatz, Korth and Sudarshan
Transactions
https://dev.mysql.com/doc/refman/9.0/en/declare-handler.html
3819 appears on Page 36 of the slides
Database System Concepts - 7th Edition 4.38 ©Silberschatz, Korth and Sudarshan
Integrity Constraints
Database System Concepts - 7th Edition 4.39 ©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.40 ©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.41 ©Silberschatz, Korth and Sudarshan
Unique Constraints
Database System Concepts - 7th Edition 4.42 ©Silberschatz, Korth and Sudarshan
The check clause
Database System Concepts - 7th Edition 4.43 ©Silberschatz, Korth and Sudarshan
Database System Concepts - 7th Edition 4.44 ©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.45 ©Silberschatz, Korth and Sudarshan
Referential Integrity (Cont.)
Database System Concepts - 7th Edition 4.46 ©Silberschatz, Korth and Sudarshan
Cascading Actions in Referential Integrity
§ When a referential-integrity constraint is violated, the normal procedure is to
reject the action that caused the violation.
§ An alternative, in case of delete or update is to cascade
create table course (
(…
dept_name varchar(20),
foreign key (dept_name) references department
on delete cascade
on update cascade,
. . .)
§ Instead of cascade we can use :
• set null,
• set default
Database System Concepts - 7th Edition 4.47 ©Silberschatz, Korth and Sudarshan
Cascading Actions in Referential Integrity
on update cascade
Database System Concepts - 7th Edition 4.48 ©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.49 ©Silberschatz, Korth and Sudarshan
Integrity Constraint Violation During Transactions
(defer constraint checking)
In PostgreSQL,
If a constraint is INITIALLY IMMEDIATE, it is checked after each statement. This is the default.
If a constraint is INITIALLY DEFERRED, it is checked only at the end of the transaction.
Database System Concepts - 7th Edition 4.50 ©Silberschatz, Korth and Sudarshan
Integrity Constraint Violation During Transactions
(set to null initially)
Database System Concepts - 7th Edition 4.51 ©Silberschatz, Korth and Sudarshan
Built-in Data Types in SQL
Database System Concepts - 7th Edition 4.52 ©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. It is called text in MySQL / PostgreSQL (but of different sizes),
clob in Oracle.
§ When a query returns a large object, a pointer is returned rather than the
large object itself.
Database System Concepts - 7th Edition 4.53 ©Silberschatz, Korth and Sudarshan
User-Defined Types
§ create type construct in SQL creates user-defined type
§ Example:
create table department
(dept_name varchar (20),
building varchar (15),
budget Dollars);
Database System Concepts - 7th Edition 4.54 ©Silberschatz, Korth and Sudarshan
Domains
§ create domain construct in SQL-92 creates user-defined domain
types
PostgreSQL
not supported in
MySQL
Database System Concepts - 7th Edition 4.55 ©Silberschatz, Korth and Sudarshan
Index Creation
Database System Concepts - 7th Edition 4.56 ©Silberschatz, Korth and Sudarshan
Index Creation Example
§ 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.57 ©Silberschatz, Korth and Sudarshan
Index Creation Example
Database System Concepts - 7th Edition 4.58 ©Silberschatz, Korth and Sudarshan
Example of B+-Tree Index
(a slide from chapter 14)
Leaf nodes
Brandt Califieri Crick Einstein El Said Gold Katz Kim Mozart Singh Srinivasan Wu
Database System Concepts - 7th Edition 4.59 ©Silberschatz, Korth and Sudarshan
B+-Tree Index Files (Cont.)
(a slide from chapter 14)
n=4
Database System Concepts - 7th Edition 4.60 ©Silberschatz, Korth and Sudarshan
Example of B+-tree
(a slide from chapter 14)
El Said Mozart
Brandt Califieri Crick Einstein El Said Gold Katz Kim Mozart Singh Srinivasan Wu
Database System Concepts - 7th Edition 4.61 ©Silberschatz, Korth and Sudarshan
Queries on B+-Trees
(a slide from chapter 14)
Database System Concepts - 7th Edition 4.62 ©Silberschatz, Korth and Sudarshan
Example of Hash Index
(a slide from chapter 14)
bucket 0
76766
h(76766) = 0, h(10101) = 3,
bucket 1
45565
h(45565) = 1, …, h(76543) = 1,
76543
bucket 2
22222 76766 Crick Biology 72000
10101 Srinivasan Comp. Sci. 65000
45565 Katz Comp. Sci. 75000
bucket 3
83821 Brandt Comp. Sci. 92000
10101
98345 Kim Elec. Eng. 80000
12121 Wu Finance 90000
bucket 4 76543 Singh Finance 80000
32343 El Said History 60000
58583 Califieri History 62000
15151 Mozart Music 40000
bucket 5 22222 Einstein Physics 95000
15151 58583 33465 Gold Physics 87000
33456 98345
bucket 6
83821
hash index on instructor, on attribute ID
bucket 7
12121
32343
Database System Concepts - 7th Edition 4.63 ©Silberschatz, Korth and Sudarshan
Static Hashing
(a slide from chapter 14)
Database System Concepts - 7th Edition 4.64 ©Silberschatz, Korth and Sudarshan
Handling of Bucket Overflows
(a slide from chapter 14)
bucket 0
bucket 1
bucket 2
bucket 3
Database System Concepts - 7th Edition 4.65 ©Silberschatz, Korth and Sudarshan
Index on a non-candidate key
(from chapter 14)
Database System Concepts - 7th Edition 4.66 ©Silberschatz, Korth and Sudarshan
Authorization
Database System Concepts - 7th Edition 4.67 ©Silberschatz, Korth and Sudarshan
Authorization (Cont.)
Database System Concepts - 7th Edition 4.68 ©Silberschatz, Korth and Sudarshan
Authorization Specification in SQL
Database System Concepts - 7th Edition 4.69 ©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.70 ©Silberschatz, Korth and Sudarshan
Revoking Authorization in SQL
Database System Concepts - 7th Edition 4.71 ©Silberschatz, Korth and Sudarshan
MySQL example
Before we start:
Database System Concepts - 7th Edition 4.72 ©Silberschatz, Korth and Sudarshan
MySQL example
Database System Concepts - 7th Edition 4.73 ©Silberschatz, Korth and Sudarshan
MySQL example
Database System Concepts - 7th Edition 4.74 ©Silberschatz, Korth and Sudarshan
MySQL example
You may need to restart the current session to see the new user
Database System Concepts - 7th Edition 4.75 ©Silberschatz, Korth and Sudarshan
MySQL example
2. Create new connection by
1. Close the current connection pressing the + sign next to
MySQL Connections
Database System Concepts - 7th Edition 4.76 ©Silberschatz, Korth and Sudarshan
MySQL example
Database System Concepts - 7th Edition 4.77 ©Silberschatz, Korth and Sudarshan
Roles
Database System Concepts - 7th Edition 4.78 ©Silberschatz, Korth and Sudarshan
Roles Example
Database System Concepts - 7th Edition 4.79 ©Silberschatz, Korth and Sudarshan
Authorization on Views
Database System Concepts - 7th Edition 4.80 ©Silberschatz, Korth and Sudarshan
MySQL example
1. Log in as root:
Database System Concepts - 7th Edition 4.81 ©Silberschatz, Korth and Sudarshan
MySQL example
2. Create a new connection for Dirac
Database System Concepts - 7th Edition 4.82 ©Silberschatz, Korth and Sudarshan
MySQL example
Database System Concepts - 7th Edition 4.83 ©Silberschatz, Korth and Sudarshan
Other Authorization Features
Database System Concepts - 7th Edition 4.84 ©Silberschatz, Korth and Sudarshan
End of Chapter 4
Database System Concepts - 7th Edition 4.85 ©Silberschatz, Korth and Sudarshan
Homework:
Database System Concepts - 7th Edition 4.86 ©Silberschatz, Korth and Sudarshan