Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FGV 2023

Banco de DadosConsultas e Comandos em SQL
Código
fg161115
Banca
FGV
Órgão
ALEMA
Ano
2023
Cargo
TecGes Admin ( )

O banco de dados relacional de uma escola contém as tabelas denominadas TB_STUDENT_A e TB_STUDENT_B e ambas possuem apenas as colunas ID e NAME.

 

O conteúdo dessas tabelas está detalhado a seguir:

 

TB_STUDENT_A

ID NAME
1 Maria
2 João
3 Visconde
4 Ana
5 Inês
 

TB_STUDENT_B

ID NAME
1 Fábio
2 Marta
3 Maria
4 Sérgio
5 Penélope
6 João
 

Analise a seguinte consulta em linguagem SQL:

 

SELECT *

FROM TB_STUDENT_A

LEFT JOIN TB_STUDENT_B

ON TB_STUDENT_A.NAME=TB_STUDENT_B.NAME.

 

O número de linhas do resultado produzido pela execução deste comando SQL sobre o banco de dados desta escola, excetuada a linha de títulos, é:

  1. A2.
  2. B3.
  3. C4.
  4. D5.
  5. E6.
Revelar gabarito e comentário

GabaritoD — 5.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Resolução

Gabarito: letra D — a conta chega a 5 linhas — alternativa D.

A ideia por trás

O LEFT JOIN é um tipo de junção entre duas tabelas que preserva todas as linhas da tabela da esquerda. Para cada linha da esquerda, ele procura correspondências na tabela da direita conforme a condição ON; se encontrar, junta os dados, se não, preenche com NULL. O resultado tem, no mínimo, o número de linhas da tabela da esquerda.

A condição ON define quais linhas combinam. Quando há correspondência, o resultado tem uma linha para cada par; quando não há, a linha da esquerda aparece sozinha com NULL à direita. Se houver nomes repetidos, o número de linhas pode aumentar, mas aqui cada nome é único em cada tabela.

Esta questão testa se você sabe que o LEFT JOIN não descarta as linhas sem par da esquerda. Basta comparar os nomes e contar as linhas resultantes.

O que a questão dá

  • TB_STUDENT_A: 5 linhas (Maria, João, Visconde, Ana, Inês)

  • TB_STUDENT_B: 6 linhas (Fábio, Marta, Maria, Sérgio, Penélope, João)

  • condição de junção: TB_STUDENT_A.NAME = TB_STUDENT_B.NAME

O que queremos: o número de linhas do resultado do LEFT JOIN

Passo 1 — Listar os nomes de cada tabela

Para saber quais linhas vão se combinar, precisamos comparar os nomes das duas tabelas. Vamos anotar os nomes de TB_STUDENT_A e TB_STUDENT_B.

A: Maria, João, Visconde, Ana, Inês; B: Fábio, Marta, Maria, Sérgio, Penélope, João

NÃO CAIA NESSA!

Esquecer de listar todos os nomes, principalmente os que não têm correspondência.

Passo 2 — Identificar os nomes em comum

A condição ON compara os nomes. Os nomes que aparecem nas duas tabelas geram correspondência; os demais não.

MariaeJoa~o\boxed{\text{Maria} \text{e} \text{Jo}ã\text{o}}
NÃO CAIA NESSA!

Contar nomes repetidos dentro da mesma tabela — aqui não há.

Passo 3 — Contar as linhas do resultado

No LEFT JOIN, cada linha de TB_STUDENT_A aparece no resultado. Para as que têm correspondência (Maria e João), sai uma linha; para as que não têm (Visconde, Ana, Inês), sai uma linha com NULL. Como são 5 linhas na esquerda, o total é 5.

5 linhas\boxed{5\ \text{linhas}}
NÃO CAIA NESSA!

Contar apenas as correspondências (2) e marcar A, ou contar as linhas de B (6) e marcar E.

Resposta: 5 linhas — alternativa D

Link permanente: /questoes/fg161115