SQL JOIN Explained Visually

9
VISUALIZING SQL JOIN V I N C E N T C H A N - D E C 2 0 1 6

Transcript of SQL JOIN Explained Visually

Page 1: SQL JOIN Explained Visually

V I S U A L I Z I N GS Q L J O I N

V I N C E N T C H A N - D E C 2 0 1 6

Page 2: SQL JOIN Explained Visually

I N N E R J O I N

T A B L E A T A B L E B

STAFF_ID NAME

1 JANE

2 MARY

3 JOHN

4 EMMA

s t a f f

STAFF_ID POSITION

7 CLERK

2 MANAGER

3 SUPERVISOR

5 EXECUTIVE

1 EXECUTIVE

P O S I T I O N

SELECT STAFF.STAFF_ID, STAFF.NAME, POSITION.POSITIONFROM STAFFINNER JOIN POSITIONON STAFF.STAFF_ID = POSITION.STAFF_ID

R E S U L T

S Q L C O M M A N D

STAFF_ID NAME POSITION

1 JANE EXECUTIVE

2 MARY MANAGER

3 JOHN SUPERVISOR

Returns all rows when there is at least one match in BOTH tables

Page 3: SQL JOIN Explained Visually

L E F T J O I N

T A B L E A T A B L E B

STAFF_ID NAME

1 JANE

2 MARY

3 JOHN

4 EMMA

s t a f f

STAFF_ID POSITION

7 CLERK

2 MANAGER

3 SUPERVISOR

5 EXECUTIVE

1 EXECUTIVE

P O S I T I O N

SELECT STAFF.STAFF_ID, STAFF.NAME, POSITION.POSITIONFROM STAFFLEFT JOIN POSITIONON STAFF.STAFF_ID = POSITION.STAFF_ID

R E S U L T

S Q L C O M M A N D

STAFF_ID NAME POSITION

1 JANE EXECUTIVE

2 MARY MANAGER

3 JOHN SUPERVISOR

4 EMMA NULL

Return all rows from the left table, and the matched rows from the right table

Page 4: SQL JOIN Explained Visually

R I G H T J O I N

T A B L E A T A B L E B

STAFF_ID NAME

1 JANE

2 MARY

3 JOHN

4 EMMA

s t a f f

STAFF_ID POSITION

7 CLERK

2 MANAGER

3 SUPERVISOR

5 EXECUTIVE

1 EXECUTIVE

P O S I T I O N

SELECT STAFF.STAFF_ID, STAFF.NAME, POSITION.POSITIONFROM STAFFRIGHT JOIN POSITIONON STAFF.STAFF_ID = POSITION.STAFF_ID

R E S U L T

S Q L C O M M A N D

STAFF_ID NAME POSITION

7 NULL CLERK

2 MARY MANAGER

3 JOHN SUPERVISOR

5 NULL EXECUTIVE

1 JANE EXECUTIVE

Return all rows from the right table, and the matched rows from the left table

Page 5: SQL JOIN Explained Visually

F U L L O U T E R J O I N

T A B L E A T A B L E B

STAFF_ID NAME

1 JANE

2 MARY

3 JOHN

4 EMMA

s t a f f

STAFF_ID POSITION

7 CLERK

2 MANAGER

3 SUPERVISOR

5 EXECUTIVE

1 EXECUTIVE

P O S I T I O N

SELECT STAFF.STAFF_ID, STAFF.NAME, POSITION.POSITIONFROM STAFFFULL OUTER JOIN POSITIONON STAFF.STAFF_ID = POSITION.STAFF_ID

R E S U L T

S Q L C O M M A N D

STAFF_ID NAME POSITION

1 JANE EXECUTIVE

2 MARY MANAGER

3 JOHN SUPERVISOR

4 EMMA NULL

7 NULL CLERK

5 NULL EXECUTIVE

Return all of the records from both tables

Page 6: SQL JOIN Explained Visually

L E F T E X C L U D I N G J O I N

T A B L E A T A B L E B

STAFF_ID NAME

1 JANE

2 MARY

3 JOHN

4 EMMA

s t a f f

STAFF_ID POSITION

7 CLERK

2 MANAGER

3 SUPERVISOR

5 EXECUTIVE

1 EXECUTIVE

P O S I T I O N

SELECT STAFF.STAFF_ID, STAFF.NAME, POSITION.POSITIONFROM STAFFLEFT JOIN POSITIONON STAFF.STAFF_ID = POSITION.STAFF_IDWHERE POSITION.POSITION IS NULL

R E S U L T

S Q L C O M M A N D

STAFF_ID NAME POSITION

1 JANE EXECUTIVE

4 EMMA NULL

Return all of the records in the left table that do not match any records in the right

table

Page 7: SQL JOIN Explained Visually

R I G H T E X C L U D I N G J O I N

T A B L E A T A B L E B

STAFF_ID NAME

1 JANE

2 MARY

3 JOHN

4 EMMA

s t a f f

STAFF_ID POSITION

7 CLERK

2 MANAGER

3 SUPERVISOR

5 EXECUTIVE

1 EXECUTIVE

P O S I T I O N

SELECT STAFF.STAFF_ID, STAFF.NAME, POSITION.POSITIONFROM STAFFRIGHT JOIN POSITIONON STAFF.STAFF_ID = POSITION.STAFF_IDWHERE STAFF.NAME IS NULL

R E S U L T

S Q L C O M M A N D

STAFF_ID NAME POSITION

7 NULL CLERK

5 NULL EXECUTIVE

Return all of the records in the right table that do not match any records in the left

table

Page 8: SQL JOIN Explained Visually

O U T E R E X C L U D I N G J O I N

T A B L E A T A B L E B

STAFF_ID NAME

1 JANE

2 MARY

3 JOHN

4 EMMA

s t a f f

STAFF_ID POSITION

7 CLERK

2 MANAGER

3 SUPERVISOR

5 EXECUTIVE

1 EXECUTIVE

P O S I T I O N

SELECT STAFF.STAFF_ID, STAFF.NAME, POSITION.POSITIONFROM STAFFFULL OUTER JOIN POSITIONON STAFF.STAFF_ID = POSITION.STAFF_ID

R E S U L T

S Q L C O M M A N D

STAFF_ID NAME POSITION

7 NULL CLERK

5 NULL EXECUTIVE

Return all of the records in the left table and all of the records in the right table that

do not match

Page 9: SQL JOIN Explained Visually

A L T E R N A T I V E L Y

A

INNERJOIN =

B 1 B 1

C 2 C 2

3

A

RIGHTJOIN =

B 1 B 1

C 2 C 2

3 3

A

LEFTJOIN =

A

B 1 B 1

C 2 C 2

3

A

FULLJOIN =

A

B 1 B 1

C 2 C 2

3 3