Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2....

46
Chapter Six Query Languages

Transcript of Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2....

Page 1: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Chapter Six

Query Languages

Page 2: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Relational Algebra: What? Why? Similar to normal algebra (as in 2+3*x-y),

except we use relations as values instead ofnumbers, and the operations and operators aredifferent.

Not used as a query language in actualDBMSs. (SQL instead.)

We need to know about relational algebra tounderstand query execution and optimization in arelational DBMS

Page 3: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont… Relations are seen as sets of tuples, which means that no

duplicates are allowed.

SQL is declarative and non procedural, which means that you tell the DBMS what you want, but not how it is to be calculated.

A C++ or Java programs are procedural, which means that you have to state, step by step, exactly how the result should be calculated.

Page 4: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont… Actually, relational algebra is mathematical expressions.

These operations enable a user to specify basic retrieval

requests without using specific DBMS DDL.

The algebra operations thus produce new relations, which

can be further manipulated using operations of the same algebra

A sequence of relational algebra operations forms a relational

algebra expression, whose result will also be a relation that

represents the result of a database query (or retrieval request).

Page 5: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Comparing RA and SQL Relational algebra:

is closed (the result of every expression is a relation)

has a rigorous foundation

has simple semantics

is used for reasoning, query optimisation, etc.

SQL: is a superset of relational algebra

has convenient formatting features, etc.

provides aggregate functions

has complicated semantics

is an end-user language.

Page 6: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

There are different basic operations that could be applied on

relations on a database based on user requirement or

information need

Selection ( ) Selects a subset of rows/tuples from a

relation.

Projection ( ) filters unwanted columns from a relation

Renaming( ρ ) assigning intermediate relation for a single

operation

Page 7: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

Cross-Product ( x ) Allows to combine two relations.

Set-Difference ( - ) Tuples in relation1, but not in relation2.

Union ( ) Tuples in relation1 or in relation2.

Intersection () Tuples in relation1 and in relation2

Join Tuples joined from two relations based on a condition

Page 8: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Relational Algebra Operators

Operation Symbol Operation Symbol

Projection Join

Selection Left outer join

Renaming Right outer join

Union Full outer join

Intersection Semijoin

Cartesian product

Page 9: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Example

Table1:Sample table used to illustrate different kinds of relational

operations.

The relation contains information about employees, IT skills they have

and the school where they attend each skill.

Page 10: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Employee

EmpID FName LName SkillID Skill SkillType School SchoolAdd SkillLevel

12 Abebe Mekuria 2 SQL Database AAU Sidist_Kilo 5

16 Lemma Alemu 5 C++ Programming Unity Gerji 6

28 Chane Kebede 2 SQL Database AAU Sidist_Kilo 10

25 Abera Taye 6 VB6 Programming Helico Piazza 8

65 Almaz Belay 2 SQL Database Helico Piazza 9

24 Dereje Tamiru 8 Oracle Database Unity Gerji 5

51 Selam Belay 4 Prolog Programming Jimma Jimma City 8

94 Alem Kebede 3 Cisco Networking AAU Sidist_Kilo 7

18 Girma Dereje 1 IP Programming Jimma Jimma City 4

13 Yared Gizaw 7 Java Programming AAU Sidist_Kilo 6

Page 11: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Selection Selects subset of tuples/rows in a relation that satisfy

selection condition.

Selection operation is a unary operator (it is applied to a single relation)

The Selection operation is applied to each tuple individually

The degree of the resulting relation is the same as the original relation but the cardinality (no. of tuples) is less than or equal to the original relation.

Page 12: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont… Set of conditions can be combined using Boolean

operations ((AND), (OR), and ~(NOT))

No duplicates in the result!

Schema of result is identical to schema of the input relation.

Result relation can be the input for another relational algebra operation! (Operator composition.)

It is a filter that keeps only those tuples that satisfy a qualifying condition (those satisfying the condition are selected while others are discarded.)

Page 13: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont..

Notation:

<Selection Condition> <Relation Name>

Example: Find all Employees with skill type of Database.

< SkillType =”Database”> (Employee)

This query will extract every tuple from a relation called Employee with all the attributes where the SkillType attribute with a value of “Database”.

Page 14: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

EmpID FName LName SkillID Skill SkillType School SchoolAdd SkillLevel

12 Abebe Mekuria 2 SQL Database AAU Sidist_Kilo 5

28 Chane Kebede 2 SQL Database AAU Sidist_Kilo 10

65 Almaz Belay 2 SQL Database Helico Piazza 9

24 Dereje Tamiru 8 Oracle Database Unity Gerji 5

The resulting relation will be the following.

Page 15: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

If the query is all employees with a SkillType Database and

School Unity the relational algebra operation and the

resulting relation will be as follows.

< SkillType =”Database” AND School=”Unity”> (Employee)

Page 16: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

EmpID FName LName SkillID Skill SkillType School SchoolAdd SkillLevel

24 Dereje Tamiru 8 Oracle Database Unity Gerji 5

The resulting relation will be the following.

Page 17: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

More on Selection

Notation: c(R) Examples

Salary > 40000 (Employee)

name = “Smith” (Employee)

The condition c can be =, <, , >, , <>

[in SQL: SELECT * FROM Employee

WHERE Salary > 40000]

Page 18: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Projection

Selects certain attributes while discarding the other

from the base relation.

Projection is a unary operator (operates on a single

relation)

The PROJECT creates a vertical partitioning – one with

the needed columns (attributes) containing results of the

operation and other containing the discarded Columns.

Hides the attributes that are not in projection list.

Page 19: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont… Schema of result contains exactly the fields in the projection

list, with the same names that they had in the input relation.

If the Primary Key is in the projection list, then duplication will not occur

Duplication removal is necessary to insure that the resulting table is also a relation.

Page 20: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

Notation:

<Selected Attributes> <Relation Name>

Example: To display Name, Skill, and Skill Level of an

employee, the query and the resulting relation will be:

<FName, LName, Skill, Skill_Level> (Employee)

Page 21: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

FName LName Skill SkillLevel

Abebe Mekuria SQL 5

Lemma Alemu C++ 6

Chane Kebede SQL 10

Abera Taye VB6 8

Almaz Belay SQL 9

Dereje Tamiru Oracle 5

Selam Belay Prolog 8

Alem Kebede Cisco 7

Girma Dereje IP 4

Yared Gizaw Java 6

The resulting relation will be the following.

Page 22: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Combining Select and Project

If we want to have the Name, Skill, and Skill Level of an

employee with Skill SQL and SkillLevel greater than 5 the query

will be:

FName LName Skill SkillLevel

Chane Kebede SQL 10

Almaz Belay SQL 9

<FName, LName, Skill, Skill_Level> ( <Skill=”SQL” SkillLevel>5> (Employee))

The resulting relation will be the following.

Page 23: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

More on Projection

Eliminates columns, then removes duplicates

Notation: P <A1,…,An>(R)

Example: project to social-security number and names:

P SSN, Name (Employee)

Output schema: Answer(SSN, Name)

[In SQL:

SELECT DISTINCT SSN, Name FROM Employee]

Page 24: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Rename Operation

In relational algebra, a rename is a unary operation written

as ρa / b(R) where:

a and b are attribute names

R is a relation

The result is identical to R except that the b field in all tuples

is renamed to an a field.

For example, consider the following Employee relation and its

renamed version:

Page 25: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

EmployeeρEmployeeName / Name(Employee)

Name EmployeeId

Harry 3415

Sally 2241

EmployeeName EmployeeId

Harry 3415

Sally 2241

Page 26: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Rename Operation (cont…) We may also want to apply several relational algebra

operations one after the other.

The query could be written in two different forms: Write the operations as a single relational algebra

expression by nesting the operations. Apply one operation at a time and create intermediate

result relations. In the latter case, we must give names to the relations

that hold the intermediate results using the Rename Operation ()

Page 27: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

If we want to have the Name, Skill, and Skill Level of an

employee with salary greater than 1500 and working for

department 5, we can write the expression for this query

using the two alternatives:

Page 28: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

1. A single algebraic expression

2. Using an intermediate relation by the Rename Operation

<FName,LName,Skill,Skill_Level>(<DeptNo=5 Salary>1500> (Employee))

Step1: Result1 <DeptNo=5 Salary>1500>(Employee)

Step2: Result <FName, LName, Skill, Skill_Level>(Result1)

Then Result will be equivalent with the relation we get using the first

alternative.

Page 29: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

More on Renaming

Changes the schema, not the instance

Notation: r B1,…,Bn (R)

Example:

rLastName/Name, SocSecNo/SSN (Employee)

Output schema: Answer(LastName, SocSecNo)

[in SQL:

SELECT Name AS LastName, SSN AS SocSecNo FROM

Employee]

Page 30: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Renaming Example

Employee

Name SSN

John 999999999Tony 777777777

LastName SocSecNo

John 999999999Tony 777777777

rLastName/Name, SocSecNo/SSN (Employee)

Page 31: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

CARTESIAN (cross product)

Operation

This operation is used to combine tuples from two

relations in a combinatorial fashion.

That means, every tuple in Relation1(R) will be

related with every other tuple in Relation2 (S).

Page 32: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

In general, the result of R(A1, A2, . . ., An) x S(B1,B2, . . ., Bm) is

a relation Q with degree n + m attributes

Q(A1, A2, . . ., An, B1, B2, . . ., Bm), in that order.

Where R has n attributes and S has m attributes.

The resulting relation Q has one tuple for each combination of tuples—one from R and one from S.

Hence, if R has n tuples, and S has m tuples, then | R x S | will have n* m tuples.

Page 33: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Example

ID FName LName

123 Abebe Lemma

567 Belay Taye

822 Kefle Kebede

DeptID DeptName MangID

2 Finance 567

3 Personnel 123

ID FName LName DeptID DeptName MangID

123 Abebe Lemma 2 Finance 567

123 Abebe Lemma 3 Personnel 123

567 Belay Taye 2 Finance 567

567 Belay Taye 3 Personnel 123

822 Kefle Kebede 2 Finance 567

822 Kefle Kebede 3 Personnel 123

Employee Dept

Then the Cartesian product between Employee and Dept

relations will be of the form

Page 34: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

Basically, even though it is very important in query

processing, the Cartesian Product is not useful by itself since

it relates every tuple in the First Relation with every

other tuple in the Second Relation.

Thus, to make use of the Cartesian Product, one has to use it

with the Selection Operation, which discriminate tuples of a

relation by testing whether each will satisfy the selection

condition.

Page 35: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

In our example, to extract employee information about

managers of the departments (Managers of each

department), the algebra query and the resulting relation

will be.

ID FName LName DeptName

123 Abebe Lemma Personnel

567 Belay Taye Finance

<ID,FName,LName,DeptName>(<ID=MangID>(EmployeeXDept))

Page 36: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

More on Cartesian Product

Combine each tuple in R1 with each tuple in R2

Notation: R1 R2

Example:

Employee Dependents

Very rare in practice (not informative by itself); mainly used

to express joins

[In SQL:

SELECT * FROM R1, R2]

Page 37: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cartesian Product Example Employee

Name SSN John 999999999 Tony 777777777

Dependents

EmployeeSSN Dname 999999999 Emily 777777777 Joe

Employee x Dependents

Name SSN EmployeeSSN Dname John 999999999 999999999 Emily John 999999999 777777777 Joe Tony 777777777 999999999 Emily Tony 777777777 777777777 Joe

More on Cartesian Product

Page 38: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

JOIN Operation

• The sequence of Cartesian product followed by select is

used quite commonly to identify and select related tuples

from two relations, a special operation, called JOIN.

• Thus in JOIN operation, the Cartesian Operation and the

Selection Operations are used together.

• JOIN Operation is denoted by a symbol. Thisoperation is very important for any relationaldatabase with more than a single relation, because itallows us to process relationships among relations.

• The general form of a join operation on two relationsR(A1, A2,. . ., An) and S(B1, B2, . . ., Bm) is:

Page 39: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

R <join condition> S

is equivalent to

<selection condition> (R X S)

where <join condition> and <selection condition> are the

same

Page 40: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Cont…

Where, R and S can be any relation that results from general

relational algebra expressions.

Since JOIN is an operation that needs two relation, it is a

Binary operation.

This type of JOIN is called a THETA JOIN ( - JOIN).

Where is the logical operator used in the join

condition.

Could be { <, , >, , , = }

Page 41: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Example:

Thus in the above example we want to extract

employee information about managers of the

departments, the algebra query using the JOIN

operation will be.

Employee <ID=MangID>Dept

Page 42: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

Example

ID FName LName

123 Abebe Lemma

567 Belay Taye

822 Kefle Kebede

DeptID DeptName MangID

2 Finance 567

3 Personnel 123

ID FName LName DeptID DeptName MangID

123 Abebe Lemma 2 Finance 567

123 Abebe Lemma 3 Personnel 123

567 Belay Taye 2 Finance 567

567 Belay Taye 3 Personnel 123

822 Kefle Kebede 2 Finance 567

822 Kefle Kebede 3 Personnel 123

Employee Dept

Then the Join result would be

Page 43: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

EQUIJOIN Operation The most common use of join involves join conditions with

equality comparisons only ( = ).

Such a join, where the only comparison operator used is called an EQUIJOIN.

In the result of an EQUIJOIN we always have one or more pairs of attributes (whose names need not be identical) that have identical values in every tuple since we used the equality logical operator.

For example, the above JOIN expression is an EQUIJOIN since the logical operator used is the equal to operator ( =).

Page 44: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

OUTER JOIN is another version of the JOIN operation where non matching tuples from a relation are also included in the result with NULL values for attributes in the other relation.

When two relations are joined by a JOIN operator, there could be some tuples in the first relation not having a matching tuple from the second relation, and the query is interested to display these non matching tuples from the first or second relation.

Such query is represented by the OUTER JOIN.

OUTER JOIN Operation

Page 45: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

OUTER JOIN Operation There are two major types of OUTER JOIN.

RIGHT OUTER JOIN: where non matching tuples from the second (Right) relation are included in the result with NULL value for attributes of the first (Left) relation.

LEFT OUTER JOIN: where non matching tuples from the first (Left) relation are included in the result with NULL value for attributes of the second (Right) relation

FULL OUTER JOIN: where non matching tuples from the Left as well as Right relations are included in the result.

Page 46: Chapter Six Query Languagesfdbs.weebly.com/uploads/6/6/1/2/66126761/fundamentals_of... · 2019. 2. 8. · Chapter Six Query Languages. ... 28 Chane Kebede 2 SQL Database AAU Sidist_Kilo

End Of Chapter Six