Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Chapter 6: Formal Relational Query
Languages
Database System Concepts, 6th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Chapter 6: 정규 관계형 질의 언어
Relational Algebra (관계 대수언어)
Tuple Relational Calculus (튜플 관계 해석)
Domain Relational Calculus (도메인 관계 해석)
Database System Concepts - 6th Edition
6.2
©Silberschatz, Korth and Sudarshan
관계형 대수 (Relational Algebra)
절차식 언어
6 가지 기본 연산자 (Six basic operators)
선택 (select):
추출 (project):
합집합 (union):
차집합 (set difference): –
카티션 곱 (Cartesian product): x
재명명 (rename):
연산자는 입력으로서 하나 이상의 릴레이션을 취해 그 결과로 새로운
릴레이션을 생성한다.
Database System Concepts - 6th Edition
6.3
©Silberschatz, Korth and Sudarshan
Select Operation – Example
Relation r
A=B ^ D > 5 (r)
Database System Concepts - 6th Edition
6.4
©Silberschatz, Korth and Sudarshan
Select Operation
표기법 (Notation): p(r)
p 를 선택 술어 (selection predicate) 라고 부른다.
다음과 같이 정의된다:
p(r) = {t | t r and p(t)}
여기에서 p 는 다음과 같은 유형의 명제 해석식이다.
<애트리뷰트> = <애트리뷰트> 또는 <상수>
>
<
(and), (or), (not)으로 연결된다.
Example of selection:
dept_name=“Physics”(instructor)
Database System Concepts - 6th Edition
6.5
©Silberschatz, Korth and Sudarshan
Project Operation – Example
Relation r:
A,C (r)
Database System Concepts - 6th Edition
6.6
©Silberschatz, Korth and Sudarshan
Project Operation
Notation:
A1 , A2 ,, Ak
(r )
여기서 A1, A2는 애트리뷰트명이고 r은 릴레이션명이다.
결과는 명시하지 않은 열을 제외한 k 열의 릴레이션으로 정의된다.
릴레이션은 집합이기 때문에 중복 행은 결과에서 제거된다.
Example: To eliminate the dept_name attribute of instructor
ID, name, salary (instructor)
Database System Concepts - 6th Edition
6.7
©Silberschatz, Korth and Sudarshan
Union Operation – Example
Relations r, s:
r s:
Database System Concepts - 6th Edition
6.8
©Silberschatz, Korth and Sudarshan
Union Operation
Notation: r s
Defined as:
r s = {t | t r or t s}
r s가 가능하려면,
1. r과 s는 같은 항(애트리뷰트의 수가 같음)을 가져야 한다.
2. 애트리뷰트의 도메인은 양립할 수 있어야 한다(즉, r의 두번째 열은 s의
두번째 열의 것과 같은 유형의 값을 다룬다).
Example: to find all courses taught in the Fall 2009 semester, or in the
Spring 2010 semester, or in both
course_id ( semester=“Fall” Λ year=2009 (section))
course_id ( semester=“Spring” Λ year=2010 (section))
Database System Concepts - 6th Edition
6.9
©Silberschatz, Korth and Sudarshan
Set difference of two relations
Relations r, s:
r – s:
Database System Concepts - 6th Edition
6.10
©Silberschatz, Korth and Sudarshan
Set Difference Operation
Notation r – s
Defined as:
r – s = {t | t r and t s}
차집합 연산은 양립할 수 있는 릴레이션 간에만 이루어질 수 있다.
- r과 s는 같은 항을 가져야 한다.
- r과 s의 애트리뷰트 도메인은 양립해야만 한다.
Example: to find all courses taught in the Fall 2009 semester, but
not in the Spring 2010 semester
course_id ( semester=“Fall” Λ year=2009 (section)) −
course_id ( semester=“Spring” Λ year=2010 (section))
Database System Concepts - 6th Edition
6.11
©Silberschatz, Korth and Sudarshan
Cartesian-Product Operation – Example
Relations r, s:
r x s:
Database System Concepts - 6th Edition
6.12
©Silberschatz, Korth and Sudarshan
Cartesian-Product Operation
Notation r x s
Defined as:
r x s = {t q | t r and q s}
r(R)과 s(S)의 애트리뷰트가 서로 다르다고
가정하자(즉, RS = ).
r(R)과 s(S)의 애트리뷰트가 서로 다르지 않다면,
재명명을 사용해야 한다.
Database System Concepts - 6th Edition
6.13
©Silberschatz, Korth and Sudarshan
복합 연산 (Composition of Operations)
여러 연산을 사용해 표현식을 만들 수 있다.
Example: A=C(r x s)
rxs
A=C(r x s)
Database System Concepts - 6th Edition
6.14
©Silberschatz, Korth and Sudarshan
Rename Operation
이름을 줄 수 있도록 하여 관계형 대수 표현식의 결과를 참조하도록 한다.
하나 이상의 이름으로 릴레이션을 참조하도록 한다.
Example:
x (E)
이름 x라는 이름으로 표현식 E를 리턴한다.
관계형 대수 표현식 E가 n항이면,
x (A1, A2, …,An)(E)
x라는 이름으로 A1, A2, …,An으로 재명명된 애트리뷰트를 가
진 표현식 E의 결과를 리턴한다.
Database System Concepts - 6th Edition
6.15
©Silberschatz, Korth and Sudarshan
예제 질의
대학에서 가장 높은 급여는 ?
Step 1: 임의의 다른 강사보다 적은 급여를 받는 강사 급여를
모두 찾아라. (i.e. not maximum)
– using a copy of instructor under a new name d
instructor.salary ( instructor.salary < d.salary
(instructor x d (instructor)))
Step 2: 최대값을 갖는 급여를 찾아라.
salary (instructor) –
instructor.salary ( instructor.salary < d,salary
(instructor x d (instructor)))
Database System Concepts - 6th Edition
6.16
©Silberschatz, Korth and Sudarshan
예제 질의
물리학과 (Physics department)에 소속된 강사 ID와, 이 들 강사가 가르친
모든 course_id 를 찾으시오.
Query 1
instructor.ID,course_id (dept_name=“Physics” (
instructor.ID=teaches.ID (instructor x teaches)))
Query 2
instructor.ID,course_id (instructor.ID=teaches.ID (
dept_name=“Physics” (instructor) x teaches))
Database System Concepts - 6th Edition
6.17
©Silberschatz, Korth and Sudarshan
형식적 정의
관계형 대수에서의 기본 표현식은 다음 중 하나 이상으로 구성된다.
- 데이터베이스내의 릴레이션
- 상수 릴레이션
E1과 E2를 관계형 대수 표현식이라 하면, 다음은 모두 관계형 대수
표현식이다:
- E1 E2
- E1 - E2
- E1 E2
- P(E1), P는 E1내 애트리뷰트 상의 술어이다.
- S(E1), S는 E1내 어떤 애트리뷰트로 구성된 리스트이다.
- x(E1), x는 E1 의 결과에 대한 새로운 이름이다.
Database System Concepts - 6th Edition
6.18
©Silberschatz, Korth and Sudarshan
추가 연산
관계형 대수에 어떠한 능력도 추가되지 않지만 질의를 단순화하는 추가
연산을 정의한다.
공통 집합 (Set intersection)
자연 죠인 (Natural join)
배정 (Assignment)
외부 조인 (Outer join)
Database System Concepts - 6th Edition
6.19
©Silberschatz, Korth and Sudarshan
공통 집합 연산
Notation: r s
Defined as:
r s = { t | t r and t s }
가정:
- r과 s는 같은 항수를 갖는다.
- r과 s의 애트리뷰트는 양립성이 있다.
유의: r s = r - (r - s)
Database System Concepts - 6th Edition
6.20
©Silberschatz, Korth and Sudarshan
Set-Intersection Operation – Example
Relation r, s:
rs
Database System Concepts - 6th Edition
6.21
©Silberschatz, Korth and Sudarshan
자연 조인 연산
Notation: r
s
r과 s를 각각 스키마 R과 S상의 릴레이션이라 하자. 결과는 r의 튜플 tr과 s의
튜플 ts의 각 쌍을 고려해 얻은 스키마 R S 상의 릴레이션이다.
tr 과 ts 가 RS의 애트리뷰트 각각에 같은 값을 가지면, 다음과 같이 튜플 t가
결과에 추가된다.
- t 는 r 상에 tr 로서 같은 값을 갖는다.
- t 는 s상에 ts 로서 같은 값을 갖는다.
Example:
R = (A, B, C, D)
S = (E, B, D)
Result schema = (A, B, C, D, E)
r
s is defined as:
r.A, r.B, r.C, r.D, s.E (r.B = s.B r.D = s.D (r x s))
Database System Concepts - 6th Edition
6.22
©Silberschatz, Korth and Sudarshan
Natural Join Example
Relations r, s:
r
s
Database System Concepts - 6th Edition
6.23
©Silberschatz, Korth and Sudarshan
Natural Join and Theta Join
Comp. Sci. department에 속한 모든 강사 이름과 이 들 강사가 가르친 모든
코스 명을 찾으시오.
name, title ( dept_name=“Comp. Sci.” (instructor
teaches
course))
Natural join 연산에는 결합법칙이 성립한다.
(instructor
instructor
teaches)
(teaches
course
course)
is equivalent to
Natural join 연산에는 교환법칙이 성립한다.
instruct
teaches
teaches
instructor
is equivalent to
세타 조인 (theta join) 연산자 r
r
s =
Database System Concepts - 6th Edition
s 는 다음과 같이 정의된다.
(r x s)
6.24
©Silberschatz, Korth and Sudarshan
배정 연산 (Assignment Operation)
배정 연산()은 복잡한 질의를 편리하게 표현하는 방법을
제공한다. 질의를 일련의 배정 연산과 질의의 결과 값이
디스플레이되는 표현식으로 구성된 순차 프로그램으로 작성한다.
배정은 항상 임시 릴레이션 변수로 작성되어야 한다.
Database System Concepts - 6th Edition
6.25
©Silberschatz, Korth and Sudarshan
외부 조인 (Outer Join)
정보 손실을 피하기 위한 조인 연산의 확장.
조인을 계산하고 다른 릴레이션의 튜플과 그 값이 일치하지 않는 어떤
릴레이션의 튜플들을 죠인의 결과에 추가한다.
널 값을 사용한다.
- 널은 알려지지 않은 값이나 존재하지 않는 값을 의미한다.
- 널을 내포한 모든 비교는 정의에 의해 거짓이다.
Database System Concepts - 6th Edition
6.26
©Silberschatz, Korth and Sudarshan
Outer Join – Example
Relation instructor
name
ID
Srinivasan
Wu
Mozart
10101
12121
15151
dept_name
Comp. Sci.
Finance
Music
Relation teaches
ID
10101
12121
76766
Database System Concepts - 6th Edition
course_id
CS-101
FIN-201
BIO-101
6.27
©Silberschatz, Korth and Sudarshan
Outer Join – Example
Join
instructor
teaches
ID
10101
12121
name
Srinivasan
Wu
dept_name
course_id
Comp. Sci.
Finance
CS-101
FIN-201
dept_name
course_id
Comp. Sci.
Finance
Music
CS-101
FIN-201
null
Left Outer Join
instructor
ID
10101
12121
15151
Database System Concepts - 6th Edition
teaches
name
Srinivasan
Wu
Mozart
6.28
©Silberschatz, Korth and Sudarshan
Outer Join – Example
Right Outer Join
instructor
teaches
ID
10101
12121
76766
name
Srinivasan
Wu
null
dept_name
course_id
Comp. Sci.
Finance
null
CS-101
FIN-201
BIO-101
Full Outer Join
instructor
teaches
ID
10101
12121
15151
76766
Database System Concepts - 6th Edition
name
Srinivasan
Wu
Mozart
null
dept_name
course_id
Comp. Sci.
Finance
Music
null
CS-101
FIN-201
null
BIO-101
6.29
©Silberschatz, Korth and Sudarshan
나누기 연산 (Division Operator)
r s
“모두에 대한”이라는 구절을 내포한 질의에 적합하다.
q = r s라 하자.
그러면 q는 q s r을 만족하는 가장 큰 릴레이션이다.
E.g. let r(ID, course_id) = ID, course_id (takes ) and
s(course_id) = course_id (dept_name=“Biology”(course )
then r s gives us students who have taken all courses in the Biology
department
Can write r s as
temp1 R-S (r )
temp2 R-S ((temp1 x s ) – R-S,S (r ))
result = temp1 – temp2
Database System Concepts - 6th Edition
6.30
©Silberschatz, Korth and Sudarshan
나누기 연산의 예제
릴레이션 r, s :
A B
1
2
3
1
1
1
3
4
6
1
2
rs
A
Database System Concepts - 6th Edition
B
1
2
s
r
6.31
©Silberschatz, Korth and Sudarshan
또 다른 나누기 예제
릴레이션 r, s:
rs
A
B
a
a
a
a
a
a
a
a
C
D
a
a
b
a
b
a
b
b
E
1
1
1
1
3
1
1
1
D E
a 1
b 1
s
r
A
Database System Concepts - 6th Edition
B
a
a.
6.32
C
©Silberschatz, Korth and Sudarshan
확장 관계형 대수 연산
일반화 추출 (Generalized Projection)
집성 합수 (Aggregate Functions)
Database System Concepts - 6th Edition
6.33
©Silberschatz, Korth and Sudarshan
일반화 추출
추출 리스트에 산술 함수를 사용 하도록 함으로써 추출 연산을 확장한다.
F1, F2, …, Fn(E)
E는 관계형 대수 표현식이다.
F1, F2, …, Fn 각각은 E의 스키마 내에 상수와 애트리뷰트를 내포하고
있는 산술 표현식이다.
Given relation instructor(ID, name, dept_name, salary) where salary is
annual salary, get the same information but with monthly salary
ID, name, dept_name, salary/12 (instructor)
Database System Concepts - 6th Edition
6.34
©Silberschatz, Korth and Sudarshan
집성 함수
Aggregation function: 값의 모임을 취해 하나의 값을 결과로 돌려준다.
avg: average value
min: minimum value
max: maximum value
sum: sum of values
count: number of values
Aggregate operation in relational algebra
G1 ,G2 ,,Gn
F1 ( A1 ), F2 ( A2 ,, Fn ( An )
(E)
E is any relational-algebra expression
G1, G2 …, Gn is a list of attributes on which to group (can be empty)
Each Fi is an aggregate function
Each Ai is an attribute name
Database System Concepts - 6th Edition
6.35
©Silberschatz, Korth and Sudarshan
Aggregate Operation – Example
Relation r:
sum(c) (r)
A
B
C
7
7
3
10
sum(c )
27
Database System Concepts - 6th Edition
6.36
©Silberschatz, Korth and Sudarshan
데이터베이스의 수정
데이터베이스의 내용은 다음 연산을 사용해 수정할 수 있다.
- 삭제
- 삽입
- 갱신
이들 모든 연산은 배정 연산자를 사용해 표현된다.
Database System Concepts - 6th Edition
6.37
©Silberschatz, Korth and Sudarshan
SQL and Relational Algebra
select A1, A2, .. An
from r1, r2, …, rm
where P
is equivalent to the following expression in multiset relational algebra
A1, .., An ( P (r1 x r2 x .. x rm))
select A1, A2, sum(A3)
from r1, r2, …, rm
where P
group by A1, A2
is equivalent to the following expression in multiset relational algebra
A1, A2
Database System Concepts - 6th Edition
sum(A3) ( P (r1 x r2 x .. x rm)))
6.38
©Silberschatz, Korth and Sudarshan
Tuple Relational Calculus
Database System Concepts - 6th Edition
6.39
©Silberschatz, Korth and Sudarshan
튜플 관계형 해석
각 질의가 다음과 같은 형식인 비절차식 질의어
{ t | P(t) }
술어 P가 t에 대해 참인 모든 튜플 t의 집합이다.
t는 튜플 변수이고, t[A]는 애트리뷰트 A에 대한 튜플 t의 값을 의미한다.
t r은 튜플 t가 릴레이션 r에 속함을 의미한다.
P는 술어 해석의 그것과 유사한 식이다.
Database System Concepts - 6th Edition
6.40
©Silberschatz, Korth and Sudarshan
술어 해석식
1. 애트리뷰트와 상수의 집합
2. 비교 연산자의 집합 : (예를 들어, <, , =, , >, )
3. 연결자의 집합 : and(), or(), not()
4. 내포() : x y, x가 참이면 y도 참이다.
xyxy
5. 한정자의 집합 :
t r (Q(t)) 술어 Q(t)가 참인 릴레이션 r내에 튜플 t가 존재한다.
t r (Q(t)) 릴레이션 r내의 모든 튜플 t에 대해 Q가 참이다.
Database System Concepts - 6th Edition
6.41
©Silberschatz, Korth and Sudarshan
Example Queries
급여가 $80,000 이상인 강사의 ID, name, dept_name, salary 를
찾으시오.
{t | t instructor t [salary ] 80000}
앞의 질의에서 ID 속성값만을 찾으시오.
{t | s instructor (t [ID ] = s [ID ] s [salary ] 80000)}
Notice that a relation on schema (ID) is implicitly defined by
the query
Database System Concepts - 6th Edition
6.42
©Silberschatz, Korth and Sudarshan
Domain Relational Calculus
Database System Concepts - 6th Edition
6.43
©Silberschatz, Korth and Sudarshan
도메인 관계형 해석
튜플 관계형 해석과 능력이 동등한 비절차식 질의어
각 질의는 다음과 같은 형식의 표현식이다.
{<x1, x2, …, x n> | P(x1, x2, …, x n)}
- x1, x2, …, x n 은 도메인 변수를 표현한다.
- P는 술어 해석의 그것과 유사한 식이다.
Database System Concepts - 6th Edition
6.44
©Silberschatz, Korth and Sudarshan
Example Queries
Find the ID, name, dept_name, salary for instructors whose salary is
greater than $80,000
{< i, n, d, s> | < i, n, d, s> instructor s 80000}
As in the previous query, but output only the ID attribute value
{< i> | < i, n, d, s> instructor s 80000}
Find the names of all instructors whose department is in the Watson
building
{< n > | i, d, s (< i, n, d, s > instructor
b, a (< d, b, a> department b = “Watson” ))}
Database System Concepts - 6th Edition
6.45
©Silberschatz, Korth and Sudarshan
Example Queries
Fall 2009 semester 혹은 Spring 2010 semester 에 개설된 모든 코스 정보를
찾으시오.
{<c> | a, s, y, b, r, t ( <c, a, s, y, b, t > section
s = “Fall” y = 2009 )
v a, s, y, b, r, t ( <c, a, s, y, b, t > section ]
s = “Spring” y = 2010)}
This case can also be written as
{<c> | a, s, y, b, r, t ( <c, a, s, y, b, t > section
( (s = “Fall” y = 2009 ) v (s = “Spring” y = 2010))}
Fall 2009 semester 와 Spring 2010 semester 에 개설된 모든 코스 정보를
찾으시오.
{<c> | a, s, y, b, r, t ( <c, a, s, y, b, t > section
s = “Fall” y = 2009 )
a, s, y, b, r, t ( <c, a, s, y, b, t > section ]
s = “Spring” y = 2010)}
Database System Concepts - 6th Edition
6.46
©Silberschatz, Korth and Sudarshan
End of Chapter 6
Database System Concepts, 6th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Figure 6.01
Database System Concepts - 6th Edition
6.48
©Silberschatz, Korth and Sudarshan
Figure 6.02
Database System Concepts - 6th Edition
6.49
©Silberschatz, Korth and Sudarshan
Figure 6.03
Database System Concepts - 6th Edition
6.50
©Silberschatz, Korth and Sudarshan
Figure 6.04
Database System Concepts - 6th Edition
6.51
©Silberschatz, Korth and Sudarshan
Figure 6.05
Database System Concepts - 6th Edition
6.52
©Silberschatz, Korth and Sudarshan
Figure 6.06
Database System Concepts - 6th Edition
6.53
©Silberschatz, Korth and Sudarshan
Figure 6.07
Database System Concepts - 6th Edition
6.54
©Silberschatz, Korth and Sudarshan
Figure 6.08
Database System Concepts - 6th Edition
6.55
©Silberschatz, Korth and Sudarshan
Figure 6.09
Database System Concepts - 6th Edition
6.56
©Silberschatz, Korth and Sudarshan
Figure 6.10
Database System Concepts - 6th Edition
6.57
©Silberschatz, Korth and Sudarshan
Figure 6.11
Database System Concepts - 6th Edition
6.58
©Silberschatz, Korth and Sudarshan
Figure 6.12
Database System Concepts - 6th Edition
6.59
©Silberschatz, Korth and Sudarshan
Figure 6.13
Database System Concepts - 6th Edition
6.60
©Silberschatz, Korth and Sudarshan
Figure 6.14
Database System Concepts - 6th Edition
6.61
©Silberschatz, Korth and Sudarshan
Figure 6.15
Database System Concepts - 6th Edition
6.62
©Silberschatz, Korth and Sudarshan
Figure 6.16
Database System Concepts - 6th Edition
6.63
©Silberschatz, Korth and Sudarshan
Figure 6.17
Database System Concepts - 6th Edition
6.64
©Silberschatz, Korth and Sudarshan
Figure 6.18
Database System Concepts - 6th Edition
6.65
©Silberschatz, Korth and Sudarshan
Figure 6.19
Database System Concepts - 6th Edition
6.66
©Silberschatz, Korth and Sudarshan
Figure 6.20
Database System Concepts - 6th Edition
6.67
©Silberschatz, Korth and Sudarshan
Figure 6.21
Database System Concepts - 6th Edition
6.68
©Silberschatz, Korth and Sudarshan
Deletion
A delete request is expressed similarly to a query, except
instead of displaying tuples to the user, the selected tuples are
removed from the database.
Can delete only whole tuples; cannot delete values on only
particular attributes
A deletion is expressed in relational algebra by:
rr–E
where r is a relation and E is a relational algebra query.
Database System Concepts - 6th Edition
6.69
©Silberschatz, Korth and Sudarshan
Deletion Examples
Delete all account records in the Perryridge branch.
account account – branch_name = “Perryridge” (account )
Delete all loan records with amount in the range of 0 to 50
loan loan – amount 0 and amount 50 (loan)
Delete all accounts at branches located in Needham.
r1 branch_city = “Needham” (account
branch )
r2 account_number, branch_name, balance (r1)
r3 customer_name, account_number (r2
depositor)
account account – r2
depositor depositor – r3
Database System Concepts - 6th Edition
6.70
©Silberschatz, Korth and Sudarshan
Insertion
To insert data into a relation, we either:
specify a tuple to be inserted
write a query whose result is a set of tuples to be inserted
in relational algebra, an insertion is expressed by:
r r E
where r is a relation and E is a relational algebra expression.
The insertion of a single tuple is expressed by letting E be a constant
relation containing one tuple.
Database System Concepts - 6th Edition
6.71
©Silberschatz, Korth and Sudarshan
Insertion Examples
Insert information in the database specifying that Smith has $1200 in
account A-973 at the Perryridge branch.
account account {(“A-973”, “Perryridge”, 1200)}
depositor depositor {(“Smith”, “A-973”)}
Provide as a gift for all loan customers in the Perryridge
branch, a $200 savings account. Let the loan number serve
as the account number for the new savings account.
r1 (branch_name = “Perryridge” (borrower
loan))
account account loan_number, branch_name, 200 (r1)
depositor depositor customer_name, loan_number (r1)
Database System Concepts - 6th Edition
6.72
©Silberschatz, Korth and Sudarshan
Updating
A mechanism to change a value in a tuple without charging all values in
the tuple
Use the generalized projection operator to do this task
r F1,F2 ,,Fl , (r )
Each Fi is either
the I th attribute of r, if the I th attribute is not updated, or,
if the attribute is to be updated Fi is an expression, involving only
constants and the attributes of r, which gives the new value for the
attribute
Database System Concepts - 6th Edition
6.73
©Silberschatz, Korth and Sudarshan
Update Examples
Make interest payments by increasing all balances by 5 percent.
account account_number, branch_name, balance * 1.05 (account)
Pay all accounts with balances over $10,000 6 percent interest
and pay all others 5 percent
account account_number, branch_name, balance * 1.06 ( BAL 10000 (account ))
account_number, branch_name, balance * 1.05 (BAL 10000
(account))
Database System Concepts - 6th Edition
6.74
©Silberschatz, Korth and Sudarshan
Example Queries
Find the names of all customers who have a loan and an account at
bank.
customer_name (borrower) customer_name (depositor)
Find the name of all customers who have a loan at the bank and the
loan amount
customer_name, loan_number, amount (borrower
Database System Concepts - 6th Edition
6.75
loan)
©Silberschatz, Korth and Sudarshan
Example Queries
Find all customers who have an account from at least the “Downtown”
and the Uptown” branches.
Query 1
customer_name (branch_name = “Downtown” (depositor
account ))
customer_name (branch_name = “Uptown” (depositor
account))
Query 2
customer_name, branch_name (depositor
account)
temp(branch_name) ({(“Downtown” ), (“Uptown” )})
Note that Query 2 uses a constant relation.
Database System Concepts - 6th Edition
6.76
©Silberschatz, Korth and Sudarshan
Bank Example Queries
Find all customers who have an account at all branches located in
Brooklyn city.
customer_name, branch_name (depositor account)
branch_name (branch_city = “Brooklyn” (branch))
Database System Concepts - 6th Edition
6.77
©Silberschatz, Korth and Sudarshan