Questão de Banco de Dados — SQL — FGV 2021
- Código
- fg044922
- Banca
- FGV
- Órgão
- SEFAZ-ES
- Ano
- 2021
- Nível
- Superior
- Cargo
- Auditor Fiscal da Receita Estadual - Manhã
- ASeis/zero.
- BSeis/seis.
- CSeis/sete.
- DSete/seis.
- ESete/sete.
GabaritoD — Sete/seis.
Gabarito: letra D — o primeiro comando (LEFT JOIN) produz 7 linhas; o segundo (RIGHT JOIN) produz 6 linhas. A diferença ocorre porque o LEFT JOIN preserva todas as linhas da tabela T (4 linhas), e cada linha pode gerar várias linhas se houver múltiplas correspondências na tabela S; já o RIGHT JOIN preserva todas as linhas de S (6 linhas), e neste caso todas possuem correspondência em T, mantendo o total de 6.
Tabela T (lado esquerdo no LEFT JOIN):
A | B | C |
|---|---|---|
10 | LPG Participações | S |
20 | Serviços & Gerenciamento Remoto | N |
50 | Academia Americana | S |
70 | Distribuidora São João de Artigos para Festas | S |
4 linhas.
Tabela S (lado direito no LEFT JOIN, esquerda no RIGHT JOIN):
G | H | I |
|---|---|---|
10 | 12040 | 12 |
10 | 12041 | 12 |
50 | 1497 | 12 |
50 | 1498 | 10 |
70 | 214 | 20 |
50 | 215 | 12 |
6 linhas.
LEFT JOIN (FROM T LEFT JOIN S ON T.A = S.G):
Cada linha de T é mantida; para cada correspondência em S, repete-se a linha de T.
T.A=10 → duas correspondências (G=10 duas vezes) → 2 linhas.
T.A=20 → nenhuma correspondência → 1 linha (colunas de S como NULL).
T.A=50 → três correspondências (G=50 em 3 linhas) → 3 linhas.
T.A=70 → uma correspondência (G=70) → 1 linha.
Total: 2+1+3+1 = 7 linhas.
RIGHT JOIN (FROM T RIGHT JOIN S ON T.A = S.G):
Todas as linhas de S são mantidas; para cada uma, busca-se correspondência em T.
Como todos os valores de S.G (10,50,70) existem em T.A, cada linha de S gera exatamente uma linha (T.A repete-se conforme necessário).
Total exato de linhas de S: 6 linhas.
Afirma 6/0. O RIGHT JOIN nunca retorna zero linhas; sempre retorna pelo menos as linhas da tabela da direita. Já o LEFT JOIN retorna 7, não 6.
Afirma 6/6. O LEFT JOIN produz 7, não 6.
Afirma 6/7. O LEFT JOIN é 7, mas o RIGHT JOIN é 6, não 7.
7 e 6, conforme demonstrado.
Afirma 7/7. O RIGHT JOIN é 6, não 7.
A banca explora a falsa intuição de que LEFT JOIN retorna o mesmo número de linhas da tabela esquerda (4) e RIGHT JOIN o da direita (6). Porém, múltiplas correspondências aumentam o total no LEFT JOIN. Sempre verifique os pares de junção e as cardinalidades.
Gabarito: letra D.
Link permanente: /questoes/fg044922