Informática Múltipla Escolha

Sabe-se que o aumento da escolaridade das mulheres tende a reduzir a taxa de natalidade. No entanto, como um bom pesquisador, você evita confiar apenas no senso comum e baseia as suas conclusões nos dados. Para isso, você decide investigar o que ocorreu nas Américas durante a primeira década do novo milênio, especificamente entre 2001 e 2010. Para selecionar os países desejados, você utiliza o campo four_regions = 'americas' da tabela country. A query que você executa é: SELECT f.country, f.ref_year, f.mean_babies, wyas.mean_years, FROM fertility f JOIN womenyearsat_school wyas ON f.country=wyas.country AND f.refyear=wyas.refyear JOIN country c ON f.country = c.country WHERE f.ref_year BETWEEN 2001 AND 2010 AND c.four_regions='americas' ORDER BY f.ref_year Ao revisar os resultados obtidos, você nota que o ano de 2010 não está incluído. Verificando o intervalo de anos coberto pela tabela fertility, constata que ela abrange de 1800 a 2100. Ao analisar a tabela womenyearsat_school, você percebe que os seus dados vão de 1970 a 2009, o que explica a ausência do ano de 2010 nos resultados. Para garantir que o ano de 2010 apareça nos resultados, mesmo sem os dados de escolaridade feminina, você ajusta a consulta para realizar um:

Sabe-se que o aumento da escolaridade das mulheres tende a reduzir a taxa de natalidade. No entanto, como um bom pesquisador, você evita confiar apenas no senso comum e baseia as suas conclusões nos dados. Para isso, você decide investigar o que ocorreu nas Américas durante a primeira década do novo milênio, especificamente entre 2001 e 2010. Para selecionar os países desejados, você utiliza o campo four_regions = 'americas' da tabela country. A query que você executa é:

SELECT f.country,
f.ref_year,
f.mean_babies,
wyas.mean_years,
FROM fertility f
JOIN women_years_at_school wyas ON f.country=wyas.country
AND f.ref_year=wyas.ref_year
JOIN country c ON f.country = c.country
WHERE f.ref_year BETWEEN 2001 AND 2010
AND c.four_regions='americas'
ORDER BY f.ref_year

Ao revisar os resultados obtidos, você nota que o ano de 2010 não está incluído. Verificando o intervalo de anos coberto pela tabela fertility, constata que ela abrange de 1800 a 2100. Ao analisar a tabela women_years_at_school, você percebe que os seus dados vão de 1970 a 2009, o que explica a ausência do ano de 2010 nos resultados.

Para garantir que o ano de 2010 apareça nos resultados, mesmo sem os dados de escolaridade feminina, você ajusta a consulta para realizar um:

  1. UNION.
  2. LEFT JOIN.
  3. RIGHT JOIN.
  4. INNER JOIN.
  5. NATURAL JOIN.

Resolução completa

Explicação passo a passo

B
Alternativa B

Alternativa B - LEFT JOIN

O problema apresentado trata da lógica de junção de tabelas (Joins) no SQL. O objetivo é manter os registros da tabela principal mesmo quando não há correspondência na tabela secundária.

Análise da Situação

Atualmente, a consulta utiliza um JOIN padrão, que equivale a um INNER JOIN. Este tipo de junção retorna apenas as linhas onde existe uma correspondência válida entre as duas tabelas envolvidas.

  • Tabela Esquerda (fertility): Contém dados até o ano de 2100, incluindo 2010.
  • Tabela Direita (women_years_at_school): Contém dados apenas até 2009.

Como não há registro de escolaridade para o ano de 2010 na tabela direita, o INNER JOIN descarta a linha do ano 2010 da tabela fertility.

Por que LEFT JOIN?

Para corrigir isso sem alterar a ordem das tabelas no comando FROM, devemos utilizar o LEFT JOIN (ou LEFT OUTER JOIN).

  • Comportamento: Garante que todas as linhas da tabela à esquerda (fertility) sejam exibidas.
  • Resultado para 2010: A linha do ano de 2010 aparecerá no resultado.
  • Dados Ausentes: Os campos provenientes da tabela women_years_at_school para esse ano receberão o valor NULL, indicando ausência de dados, mas o registro principal será mantido.

Comparativo das Alternativas

Tipo de JoinComportamento PrincipalAdequação ao Caso
UNIONUne conjuntos de linhas verticais.Incorreto (não une colunas por chave).
LEFT JOINMantém tudo da esquerda + coincidências da direita.Correto (preserva o ano 2010).
RIGHT JOINMantém tudo da direita + coincidências da esquerda.Incorreto (a tabela direita não tem 2010).
INNER JOINMantém apenas coincidências entre ambas.Incorreto (exclui o ano 2010).
NATURAL JOINJunta por colunas com nomes iguais (como Inner).Incorreto (comportamento similar ao Inner).

Portanto, a alternativa correta é a B, pois o LEFT JOIN resolve a exclusão dos dados da tabela principal devido à falta de dados correlatos na tabela secundária.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Informática

Ver mais Informática resolvidas

Tem outra questão de Informática?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.