Chapter 6 - Query Languages
Chapter 6 - Query Languages
Query Languages
The Relational Algebra and Relational Calculus
Relational algebra
Basic set of operations for the relational model
Relational algebra expression
Sequence of relational algebra operations
Relational calculus
Higher-level declarative language for specifying relational queries
Unary Relational Operations: SELECT and PROJECT
Example:
Degree
Number of attributes in <attribute list>
Duplicate elimination
Result of PROJECT operation is a set of distinct tuples
Relational Algebra Operations from Set Theory
INTERSECTION
R∩S
Includes all tuples that are in both R and S
SET DIFFERENCE (or MINUS)
R–S
Includes all tuples that are in R but not in S
The Cartesian Product (Cross Product) Operation
CARTESIAN PRODUCT
o CROSS PRODUCT or CROSS JOIN
o Denoted by ×
o Binary set operation
o Relations do not have to be union compatible
o Useful when followed by a selection that matches values of attributes
Reading Assignment
Binary Relational Operations: JOIN and DIVISION
Tuple Relational Calculus
SQL
(Structured Query Language)
Create Table Construct
An SQL relation is defined using the create table command:
create table r (A1 D1, A2 D2, ..., An Dn,
(integrity-constraint1),
...,
(integrity-constraintk))
r is the name of the relation
each Ai is an attribute name in the schema of relation r
Di is the data type of values in the domain of attribute Ai
Example:
create table branch ( branch_name char(15) not null,
branch_city char(30),
assets integer )
Integrity Constraints in Create Table
not null
primary key (A1, ..., An )
primary key declaration on an attribute automatically ensures not null in SQL-92 onwards, needs to be explicitly
stated in SQL-89
Basic Query Structure
SQL is based on set and relational operations with certain modifications and enhancements
A typical SQL query has the form:
A represents an attribute
i
R represents a relation
i
P is a predicate.
This query is equivalent to the relational algebra expression.
branch_name (loan)
NOTE: SQL names are case insensitive (i.e., you may use upper- or lower-
case letters.)
E.g. Branch_Name ≡ BRANCH_NAME ≡ branch_name
The select Clause (Cont.)
SQL allows duplicates in relations as well as in query results.
To force the elimination of duplicates, insert the keyword distinct after
select.
Find the names of all branches in the loan relations, and remove duplicates
select loan_number
from loan
where amount between 90000 and 100000
The from Clause
The from clause lists the relations involved in the query
Corresponds to the Cartesian product operation of the relational
algebra.
Find the Cartesian product borrower X loan
select
from borrower, loan
Find the name, loan number and loan amount of all customers
having a loan at the Perryridge branch.
select customer_name, borrower.loan_number, amount
from borrower, loan
where borrower.loan_number = loan.loan_number and
branch_name = 'Perryridge'
The Rename Operation
The SQL allows renaming relations and attributes using the as clause:
old-name as new-name
Find the name, loan number and loan amount of all customers; rename the
column name loan_number as loan_id.
List in alphabetic order the names of all customers having a loan in Perryridge
branch
select distinct customer_name
from borrower, loan
where borrower.loan_number = loan.loan_number and
branch_name = 'Perryridge'
order by customer_name
We may specify desc for descending order or asc for ascending order, for each
attribute; ascending order is the default.
Example: order by customer_name desc
Set Operations
Find all customers who have a loan, an account, or both:
Find the names of all branches where the average account balance is more than
$1,200.
Note: predicates in the having clause are applied after the formation of groups
whereas predicates in the where clause are applied before forming groups
Null Values
It is possible for tuples to have a null value, denoted by null, for some of their
attributes
null signifies an unknown value or that a value does not exist.
The predicate is null can be used to check for null values.
Example: Find all loan number which appear in the loan relation with null values
for amount.
select loan_number
from loan
where amount is null
The result of any arithmetic expression involving null is null
Example: 5 + null returns null
However, aggregate functions simply ignore nulls
Null Values and Aggregates
All aggregate operations except count(*) ignore tuples with null values on the
aggregated attributes.
Nested Subqueries
Find all customers who have a loan at the bank but do not have an account at the
bank
A view provides a mechanism to hide certain data from the view of certain users.
Any relation that is not of the conceptual model but is made visible to a user as a “ virtual
relation” is called a view.
View Definition
A view is defined using the create view statement which has the form
or equivalently
Increase all accounts with balances over $10,000 by 6%, all other accounts
receive 5%.
Write two update statements:
update account
set balance = balance 0.6
where balance > 10000
update account
set balance = balance 0.5
where balance 10000
The order is important