Técnico de Gestão Administrativa - Analista de Suporte de Rede
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: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, é:
A2.
B3.
C4.
D5.
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 7 linhas — alternativa E.
A ideia por trás
O LEFT JOIN é uma operação que combina duas tabelas, preservando todas as linhas da tabela da esquerda. Para cada linha da esquerda, ele procura linhas da direita que satisfaçam a condição do ON; se encontrar, junta os dados; se não encontrar, preenche as colunas da direita com NULL. O resultado é uma tabela com todas as colunas das duas originais.
O número de linhas do resultado é a soma, para cada linha da esquerda, do número de correspondências na direita (mínimo 1, pois a linha da esquerda é preservada). Se houver duplicidade na direita, uma linha da esquerda pode gerar várias linhas no resultado. Isso é diferente do INNER JOIN, que descarta linhas sem correspondência.
Esta questão cobra exatamente a contagem de linhas resultante de um LEFT JOIN, incluindo o efeito de duplicidades na tabela da direita e a preservação de linhas sem correspondência.
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 as linhas da tabela da esquerda
O LEFT JOIN preserva todas as linhas da tabela da esquerda, então precisamos saber quantas são e quais são seus valores de NAME para depois contar as correspondências.
Esquecer que a tabela da esquerda tem 5 linhas e contar apenas as da direita (4).
Passo 2 — Contar correspondências na direita para cada NAME
Para cada linha da esquerda, o LEFT JOIN procura linhas da direita com o mesmo NAME. Precisamos saber quantas correspondências existem para cada NAME, pois isso determina quantas linhas o resultado terá para cada linha da esquerda.
Por que esta fórmula: A contagem é feita por inspeção dos dados: para cada NAME presente na esquerda, contamos quantas linhas da direita têm esse NAME.
NAME 'A': 2 correspondências; NAME 'B': 1 correspondência; NAME 'C': 0 correspondências
NÃO CAIA NESSA!
Contar apenas as linhas da direita que têm correspondência, esquecendo que 'C' não tem par.
Passo 3 — Calcular o total de linhas do resultado
O resultado do LEFT JOIN terá uma linha para cada combinação entre uma linha da esquerda e uma linha da direita que satisfaz a condição, mais uma linha com NULLs para cada linha da esquerda sem correspondência. Somamos as contribuições de cada linha da esquerda.
Por que esta fórmula: A fórmula é a soma das correspondências de cada linha da esquerda, com mínimo de 1 por linha (quando não há correspondência, conta-se 1 linha com NULLs).
De onde vem cada valor: = passo 1 · = passo 2
NÃO CAIA NESSA!
Esquecer de incluir as linhas sem correspondência (as duas com NAME 'C') e contar apenas 2+2+1 = 5, mas por caminho errado; ou contar apenas as linhas da direita (4).