You are on page 1of 1

Joining Data in SQL RIGHT JOIN UNION ALL

_ _ GHT JOIN
Cheat Sheet
A right join keeps all of the original left table right table result after RI
The UNION ALL operator works just like UNION, but it SELECT artist_id

records in the right table and returns id _


left val id _
left val id _
left val _
left val
returns duplicate values. The same restrictions of UNION FROM artist

missing values for any columns from


1 L1 1 R1 1 L1 R1
hold true for UNION ALL UNION ALL

the left table where the joining field


Learn SQL online at www.DataCamp.com did not find a match. Right joins are
2 L2 4 R2 4 L2 R2

Result after

SELECT artist_id

FROM album;
3 L3 5 R3 5 null R3
far less common than left joins,
UNION ALL
because right joins can always be re- 4 L4 6 R4 6 null R4
id val
written as left joins. Result after UNION ALL:
left right
1 A

> Definitions used throughout this cheat sheet Result after RI GHT JOIN: id val id val
1 A
artist_id

RIGHT JOIN on one field artist_id name album_id title name


1 A 1 A
1 B
1

2
SELECT*

1 B 4 A
1 AC/DC 1 For those who rock 1 2 A
Primary key:
Foreign key:
3
2 A 5 A
FROM artist as art
1 Aerosmith 2 Dream on 2 3 A
A primary key is a field in a table that uniquely identifies A foreign key is a field in a table which references the 6

each record in the table. In relational databases, primary primary key of another table. In a relational database,
RIGHT JOIN album AS alb
2 Aerosmith 3 Restless and wild 2 3 A 6 A
4 A

ON art.artist_id = alb.album_id; 2 AC/DC 4 Let there be rock 1 4 A


keys can be used as fields to join tables on. one way to join two tables is by connecting the foreign 4 A

key from one table to the primary key of another. 3 null 5 Rumours 6
5 A

FULL JOIN
6 A
One-to-one relationship:
One-to-many relationship:

Database relationships describe the relationships In a one-to-many relationship, a record in one table can

JOIN INTERSECT
between records in different tables. When a one-to-one be related to one or more records in a second table. result after FULL
A full join combines a left join and
relationship exists between two tables, a given record in However, a given record in the second table will only be right join. A full join will return all
_
left table _
right table
id _
left val _
left val

one table is uniquely related to exactly one record in the related to one record in the first table.
id _
left val id _
left val
records from a table, irrespective of 1 L1 R1
other table. 1 L1 1 R1 The INTERSECT operator returns only identical rows from two tables. SELECT artist_id

whether there is a match on the 2 L2 null


2 L2 4 R2 FROM artist

joining field in the other table,


Many-to-many relationship:
3 L3 null
left table _ _
right table
INTERSEC T

returning null values accordingly. 3 L3 5 R3


Result after

In a many-to-many relationship, records in a given table ‘A’ can be related to one or more records in another table ‘B’, 4 L4 R2
id val id val SELECT artist_id

4 L4 6 R4 INTERSECT
and records in table B can also be related to many records in table A. 5 null R3
FROM album;
6 null R4 1 N1 1 N1 id val

Result after INT RS E ECT:


Sample Data
1 N1 4 R2 1 N1
Result after FULL JOIN:
> FULL JOIN on one field artist_id name album_id title name 3 L3 5 R3
artist_id

1
AC/DC For those who rock
SELECT *
1 1 1
4 L4 6 R4 2
Artist Table Album Table 1 AC/DC 4 Let there be rock 1
FROM artist as art

artist_id name album_id title artist_id


FULL OUTER JOIN album AS alb
2 Aerosmith 2 Balls to the wall 2

1 AC/DC 1 For those who rock 1


ON art.artist_id = alb.album_id;
2

3
Aerosmith

Alanis Morissette
3

null
Restless and wild

null
2

null
EXCEPT
2 Aerosmith 2 Dream on 2
null null 5 Rumours 6
3 Alanis Morissette 3 Restless and wild 2
X P
The E CE T operator returns only those rows from SELECT artist_id

4 Let there be rock 1

CROSS JOIN
the left table that are not present in the right table. FROM artist

5 Rumours 6
X PT

E CE

SELECT artist_id

JOIN creates all possible combinations of two _ _


INNER JOIN name, e
left table right table
CROSS SELECT titl FROM album;
Result after

tables. CROSS JOIN does not require a field to join ON. FROM artist
id val id val X P
E CE T

An inner join between two tables will _


left table _
right table CROSS JOIN album; Result after EXCEPT:
1 N1 1 N1 id val
return only records where a joining id left val_ id _
left val artist_id

field, such as a key, finds a match in result after INNER JOIN result after
Result after CROSS JOIN:
1 L1 1 R1
CROSS JOIN 1 N1 4 R2 3 L3 1
both tables.
id _
left val _
left val name title 2
id1 id2 3 L3 5 R3 4 L4
2 L2 4 R2 AC/DC For those who rock 3
1 L1 R1 table 1 table 2
1 A AC/DC Dream on
3 L3 5 R3 4 L4 6 R4
4 L4 R2 id1 id AC/DC Restless and wild
4 L4 6 R4 1 B
2 AC/DC Let there be rock
1 A

INN R E JOIN join ON one field 2 B


1 C AC/DC Rumours
SEMI JOIN
Aerosmith For those who rock
2 A
SELECT *
C

3 Aerosmith Dream on
A semi join chooses records in the first table where a SELECT *

FROM artist AS art Result after INN R E JOIN:


2 B
Aerosmith Restless and wild
m

INNER JOIN album AS alb


condition is met in the second table. A semi join makes FROM albu
C
WHERE clause to use the second table as a filter WHERE d IN

2 Aerosmith Let there be rock


album_id
art.artist_id = alb.artist_id;
name artist_id use of a artist_i
ON
1 AC/DC 1 3 A
Aerosmith

Morissette
Rumours

For those who rock


for the first. (SELECT artist_id

INN R E JOIN with USING 1 AC/DC 4


3 B
Alanis

Alanis Morissette Dream on


FROM artist ; )
Result after

2 Aerosmith 2
SELECT Alanis Morissette Restless and wild _
left table _
right table SEMI JOIN
C
Semi join:
2 Aerosmith 3 3
FROM artist AS art
Alanis Morissette Let there be rock
Result after
id col1 col2 id col1
INNER JOIN album AS al b
Alanis Morissette Rumours album_id title artist_id

USING (artist_id); 1 A B 2 B 1 For those who rock 1

Set Theory Operators in SQL


2 Dream on 2
C C
SELF JOIN
2 B 3
3 Restless and wild 2

3 C
Self-joins are used to compare values in a table to other values of the same table by joining different parts
4 D
of a table together.

T
Self join: N
INTERSECT EXCEPT
JOIN
SELEC UNIO
Result after
art1.artist_id,
UNION ALL ANTI
1 2
art1.title AS art1_title,

artist_id art _title art _title

art2.title AS art2_title

For those who rock For those who rock


1
The anti join chooses records in the first table where a SELECT *

FROM artist as art1

2 Dream on Dream on UNION condition is NOT met in the second table. It makes use of FROM albu m

INNER JOIN artist as art2


WHERE clause to use exclude values from the second WHERE d
2 Restless and wild Dream on
a artist_i N

NOT I
ON art1.artist_id = art2.album_id;
For those who rock
1 Let there be rock
The UNION operator is used to vertically combine the results SELECT artist_id
table. (SELECT artist_id

of two SELECT statements. For UNION to work without errors, FROM artist
FROM artist ; )
LEFT JOIN N

all SELECT statements must have the same number of UNIO Left table after

columns and corresponding columns must have the same


_
left table _
right table ANTI JOIN
SELECT artist_id

Result after Anti oin: j


A left join keeps all of the original _
left table _
right table result after LEFT JOIN data type. UNION does not return duplicates. FROM album; id col1 col2 id col1
album_id title artist_id
records in the left table and returns id _
left val id _
left val id _
left val left_val
Result after UNION: 1 A B 1 A 5 Rumours 6
missing values for any columns from
1 L1 1 R1 1 L1 R1 Result after UNION
the right table where the joining field artist_id 2 B C 4 D
did not find a match.
2 L2 4 R2 2 L2 null id val
1
3 L3 5 R3 3 L3 null
left right
1 A 2
3 C
id val id val
4 L4 6 R4 4 L4 R2 3
1 B 4 D
1 A 1 A 1
2 A
Result after L FT E JOIN: 1 B 4 A
2

E
3 A
L FT JOIN on one field artist_id name album_id title name
2
2 A 5 A

SELECT *
1 AC/DC 1 For those who rock 1
3 A 6 A
4 A 1

5 A 6
FROM artist AS art
1 AC/DC 4 Let there be rock 1

JOIN album AS b

Learn Data Skills Online at www.DataCamp.com


4 A
LEFT al 2 Aerosmith 2 Dream on 2 6 A

ON art.artist_id = alb.album_id; 2 Aerosmith 3 Restless and wild 2

3 Alanis Morissette null null null

You might also like