Sou novo em programação e estou me desenvolvendo com os cursos da Alura, a procura de uma oportunidade nesta área, queria expor meus entendimentos e caso correto ajudar, de forma com que eu fui aplicando o comando para entender passo a passo e cheguei nessas conclusões:
select a.nome, c.nome from aluno a join -> matricula m on m.aluno_id = a.id join -> curso c on m.curso_id = c.id;
Como o SQL intende: Eu estou querendo que o comando me traga as seguintes coluna a.nome -> a coluna nome da tabela aluno. c.nome -> a coluna nome da tabela curso.
Logo a frente no “from” eu indico qual tabela ele vai buscar essas informações porem eu tenho que dizer pra ele em que tabela está essa letra que eu coloquei, ou seja:
From aluno a -> significa que a letra “a” é a tabela aluno (como se ele “renomeasse” a tabela). Então o comando “a.nome” significa que ele vai procurar e me mostra a coluna nome da tabela aluno.
From curso c -> significa que a letra “c” é a tabela curso (como se ele “renomeasse” a tabela). Então o comando “c.nome” significa que ele vai procurar e me mostra a coluna nome da tabela curso.
matricula m -> significa que a letra “m” é a tabela matricula (como se ele “renomeasse” a tabela).
Quando aplicado o “ON” é apenas uma relação de igualdade entre as tabelas, ou seja, quer dizer que as informações da tabela inicial tem que ser igual a secundária por isso a validação de ambas pelo ID.
Para exemplificar e simplificar o entendimento poderia reescrever o comando dessa forma:
select aluno.nome, curso.nome from
-> aluno join
-> matricula on matricula.aluno_id = aluno.id join
-> curso on matricula.curso_id = curso.id;
Select -> o que eu quero mostrar. From -> em qual tabela procurar e quais as condições.