Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2021

Banco de DadosSQL
Código
fg044922
Banca
FGV
Órgão
SEFAZ-ES
Ano
2021
Nível
Superior
Cargo
Auditor Fiscal da Receita Estadual - Manhã
Considere a tabela T e a execução dos dois comandos SQL a seguir.SELECT T.* FROM T LEFT JOIN S ON T.A = S.G ORDER BY 2 SELECT T.* FROM T RIGHT JOIN S ON T.A = S.G ORDER BY 2 Sem considerar as linhas de títulos, assinale o número de linhas produzidas por cada comando, na ordem.
  1. ASeis/zero.
  2. BSeis/seis.
  3. CSeis/sete.
  4. DSete/seis.
  5. ESete/sete.
Revelar gabarito e comentário

GabaritoD — Sete/seis.

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”.

LEFT JOIN e RIGHT JOIN — contagem de linhas

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.

Como determinar o número de linhas

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.

  1. 1LEFT JOIN7 linhas
  2. 2RIGHT JOIN6 linhas
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

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.

Alternativa B — ❌ Incorreta

Afirma 6/6. O LEFT JOIN produz 7, não 6.

Alternativa C — ❌ Incorreta

Afirma 6/7. O LEFT JOIN é 7, mas o RIGHT JOIN é 6, não 7.

Alternativa D — ✅ Correta ⟵ GABARITO

7 e 6, conforme demonstrado.

Alternativa E — ❌ Incorreta

Afirma 7/7. O RIGHT JOIN é 6, não 7.

NÃO CAIA NESSA!

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