Olá Anthony, tudo bem?
Eu entendo o que está sentindo quanto a isso, pois tive muita dificuldade.
Vou buscar te explicar da forma como me apresentaram esse conceito de união entre tabelas.
Simplificando: a união, o join, dependerá do que você quer ver.
Por exemplo:
Criei tabelas de um possível modelo de dados, um hipótese fictícia (criei apenas para explicar, sem compromisso com a realidade ou normalização do banco de dados) :
Se você pretende saber as informações das matrículas, pode simplesmente fazer um select apontando apenas para essa tabela - nesse exemplo:
select * from matricula;
Mas, e se você precisar saber o nome do aluno e não apenas o id_aluno dele?
Neste caso você precisa fazer uma união do aluno com a tabela de matricula, onde:
select * from matricula
join aluno
on matricula.id_aluno = aluno.id_aluno;
Fazendo assim você trará tudo das tabelas matrícula e aluno, nessa ordem.
Quando for olhar para o curso:
select * from matricula
join curso
on matricula.id_curso = curso.id_curso;
As duas tabelas:
select *
from matricula
join aluno
on matricula.id_aluno = aluno.id_aluno
join curso
on matricula.id_curso = curso.id_curso;
Nesse último caso a tabela de ligação entre elas é a matrícula, pois ela possui as duas foreign keys (chaves primárias nas tabelas próprias). Logo, a tabela matrícula se relaciona com as demais.
A partir desse exemplo que eu passei, olhando para a sua dúvida agora, seria o seguinte:
-- Juntando mais de duas tabelas em uma query
SELECT *
FROM aluno
JOIN aluno_curso on aluno_curso.aluno_id = aluno.id
JOIN curso on curso.id = aluno_curso.curso_id
Aluno_curso, no modelo de dados desse exemplo, deve ser como a "matrícula" que criei; pois ela tem o código do aluno e o código do curso.
Espero que tenha ficado mais claro e te ajudado a compreender essa parte do relacionamento entre tabelas e os joins.
Bons estudos e cuide-se!