0% found this document useful (0 votes)
3 views

Chapter 6 - Query Languages

Chapter 6 discusses query languages, focusing on relational algebra and SQL. It covers operations such as SELECT, PROJECT, and various set operations, as well as SQL syntax for creating tables, querying data, and managing database modifications. The chapter also addresses aggregate functions, null values, nested subqueries, and the concept of views in SQL.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Chapter 6 - Query Languages

Chapter 6 discusses query languages, focusing on relational algebra and SQL. It covers operations such as SELECT, PROJECT, and various set operations, as well as SQL syntax for creating tables, querying data, and managing database modifications. The chapter also addresses aggregate functions, null values, nested subqueries, and the concept of views in SQL.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 38

Chapter 6

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

The SELECT Operation


 Subset of the tuples from a relation that satisfies a selection
condition:

• Boolean expression contains clauses of the form <attribute name>


<comparison op> <constant value>
or
• <attribute name> <comparison op> <attribute name>
Cont’d

Example:

<selection condition> applied independently to each individual


tuple t in R
If condition evaluates to TRUE, tuple selected
Boolean conditions AND, OR, and NOT
Unary
Applied to a single relation
The PROJECT Operation

 Selects columns from table and discards the other columns:

 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

 UNION, INTERSECTION, and MINUS


 Merge the elements of two sets in various ways
 Binary operations
 Relations must have the same type of tuples
 UNION
 R∪S
 Includes all tuples that are either in R or in S or in both R and S
 Duplicate tuples eliminated
Relational Algebra Operationsfrom Set Theory (cont’d.)

 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 )

Example: Declare branch_name as the primary key for branch


.
create table branch
(branch_name char(15),
branch_city char(30),
assets integer,
primary key (branch_name))

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:

select A1, A2, ..., An


from r1, r2, ..., rm
where P

 A represents an attribute
i

 R represents a relation
i
 P is a predicate.
 This query is equivalent to the relational algebra expression.

A1,A2 ,,An ( P (r1 r2  rm ))


 The result of an SQL query is a relation.
The select Clause
 The select clause list the attributes desired in the result of a query
 corresponds to the projection operation of the relational algebra

 Example: find the names of all branches in the loan relation:

select branch_name from loan


 In the relational algebra, the query would be:

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 distinct branch_name from loan


 The keyword all specifies that duplicates not be removed.

select all branch_name from loan


The select Clause (Cont.)

 An asterisk in the select clause denotes “all attributes”

select * from loan


 The select clause can contain arithmetic expressions involving the operation,
+, –, , and /, and operating on constants or attributes of tuples.
 The query:

select loan_number, branch_name, amount  100 from loan


would return a relation that is the same as the loan relation, except that the
value of the attribute amount is multiplied by 100.
The where Clause
 The where clause specifies conditions that the result must satisfy
 Corresponds to the selection predicate of the relational algebra.
 To find all loan number for loans made at the XXX branch with loan amounts greater
than $1200.
select loan_number
from loan
where branch_name = ‘XXX' and amount > 1200
 Comparison results can be combined using the logical connectives and, or, and not.
 Comparisons can be applied to results of arithmetic expressions.
The where Clause (Cont.)

 SQL includes a between comparison operator


 Example: Find the loan number of those loans with loan amounts
between $90,000 and $100,000 (that is, $90,000 and
$100,000)

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.

select customer_name, borrower.loan_number as loan_id, amount


from borrower, loan
where borrower.loan_number = loan.loan_number
Tuple Variables
 Tuple variables are defined in the from clause via the use of the as
clause.
 Find the customer names and their loan numbers for all customers
having a loan at some branch.

select customer_name, T.loan_number, S.amount


from borrower as T, loan as S
where T.loan_number = S.loan_number
String Operations
 SQL includes a string-matching operator for comparisons on character strings.
The operator “like” uses patterns that are described using two special
characters:
 percent (%). The % character matches any substring.
 underscore (_). The _ character matches any character.
 Find the names of all customers whose street includes the substring “Main”.
select customer_name
from customer
where customer_street like '% Main%'
 SQL supports a variety of string operations such as
 concatenation (using “||”)
 converting from upper to lower case (and vice versa)
 finding string length, extracting substrings, etc.
Ordering the Display of Tuples

 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:

(select customer_name from depositor)


union
(select customer_name from borrower)
 Find all customers who have both a loan and an account.
(select customer_name from depositor)
intersect
(select customer_name from borrower)

 Find all customers who have an account but no loan.


(select customer_name from depositor)
except
(select customer_name from borrower)
Aggregate Functions

 These functions operate on the multiset of values of a column of a


relation, and return a value

avg: average value


min: minimum value
max: maximum value
sum: sum of values
count: number of values
Aggregate Functions (Cont.)

 Find the average account balance at the Perryridge branch.

select avg (balance)


from account
where branch_name = 'Perryridge'

 Find the number of tuples in the customer relation.


select count (*) from customer

 Find the number of depositors in the bank.


select count (distinct customer_name) from depositor
Aggregate Functions – Group By

 Find the number of depositors for each branch.

select branch_name, count (distinct customer_name)


from depositor, account
where depositor.account_number = account.account_number
group by branch_name
Aggregate Functions – Having Clause

 Find the names of all branches where the average account balance is more than
$1,200.

select branch_name, avg (balance)


from account
group by branch_name
having avg (balance) > 1200

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

 Total all loan amounts

select sum (amount )


from loan
 Above statement ignores null amounts

 All aggregate operations except count(*) ignore tuples with null values on the
aggregated attributes.
Nested Subqueries

 SQL provides a mechanism for the nesting of subqueries.


 A subquery is a select-from-where expression that is nested within another
query.
 A common use of subqueries is to perform tests for
 set membership,
 set comparisons, and
 set cardinality.
Example Query
 Find all customers who have both an account and a loan at the bank.

select distinct customer_name


from borrower
where customer_name in (select customer_name from depositor )

 Find all customers who have a loan at the bank but do not have an account at the
bank

select distinct customer_name


from borrower
where customer_name not in (select customer_name from depositor )
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 a customer’s name, loan number and branch name,
but has no need to see the loan amount.
 This person should see a relation described, in SQL, by

(select customer_name, borrower.loan_number, branch_name


from borrower, loan
where borrower.loan_number = loan.loan_number )

 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

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.
 When a view is created, the query expression is stored in the database; the
expression is substituted into queries using the view.
Example Queries
 A view consisting of branches and their customers
create view all_customer as
(select branch_name, customer_name
from depositor, account
where depositor.account_number =
account.account_number )
union
(select branch_name, customer_name
from borrower, loan
where borrower.loan_number = loan.loan_number )

 Find all customers of the Perryridge branch


select customer_name
from all_customer
where branch_name = 'Perryridge'
Modification of the Database – Deletion

 Delete all account tuples at the Perryridge branch

delete from account


where branch_name = 'Perryridge’

 Delete all accounts at every branch located in the city ‘Needham’.


delete from account
where branch_name in (select branch_name
from branch
where branch_city = 'Needham')
Modification of the Database – Insertion

 Add a new tuple to account

insert into account


values ('A-9732', 'Perryridge', 1200)

or equivalently

insert into account (branch_name, balance, account_number)


values ('Perryridge', 1200, 'A-9732')

 Add a new tuple to account with balance set to null

insert into account


values ('A-777','Perryridge', null )
Modification of the Database – Updates

 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

You might also like