SQL JOIN Explained Visually
-
Upload
vincent-chan-yuen-mun -
Category
Data & Analytics
-
view
121 -
download
0
Transcript of 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
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
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
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
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
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
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
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
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