Questão
ID 67437Disciplina: Tecnologia da Informação
Assuntos: Junção, Select
Ano: 2025 Banca: PERFIL - ENADE Órgão: Quarto Simulado Pnd
Um professor de um curso técnico de Desenvolvimento de Sistemas está ensinando sobre a linguagem SQL e quer que seus alunos dominem a operação de `JOIN`, que é fundamental para consultar dados de múltiplas tabelas em um banco de dados relacional. Ele apresenta duas tabelas:
Tabela `ALUNOS` | ID_Aluno | Nome_Aluno | |----------|------------| | 1 | Ana | | 2 | Bruno | | 3 | Carla |
Tabela `MATRICULAS` | ID_Matricula | ID_Aluno_FK | ID_Curso_FK | |--------------|-------------|-------------| | 101 | 1 | 10 | | 102 | 2 | 20 | | 103 | 1 | 20 | | 104 | 4 | 30 |
Ele explica a diferença entre `INNER JOIN` e `LEFT JOIN`: "O `INNER JOIN` (ou simplesmente `JOIN`) retorna apenas as linhas onde a condição de junção (a correspondência entre a chave primária e a estrangeira) é verdadeira em *ambas* as tabelas. Linhas de uma tabela que não têm uma correspondência na outra são descartadas. O `LEFT JOIN` (ou `LEFT OUTER JOIN`), por outro lado, retorna *todas* as linhas da tabela da 'esquerda' (a primeira tabela mencionada), e as linhas correspondentes da tabela da direita. Se não houver uma correspondência na tabela da direita, as colunas dessa tabela aparecerão com o valor `NULL`."
Ele então pede aos alunos para preverem o resultado de duas consultas SQL.
Consulta 1 (INNER JOIN): `SELECT A.Nome_Aluno, M.ID_Curso_FK FROM ALUNOS A INNER JOIN MATRICULAS M ON A.ID_Aluno = M.ID_Aluno_FK;`
Consulta 2 (LEFT JOIN): `SELECT A.Nome_Aluno, M.ID_Curso_FK FROM ALUNOS A LEFT JOIN MATRICULAS M ON A.ID_Aluno = M.ID_Aluno_FK;`
Qual será o resultado de cada consulta?