Considerando o comando abaixo escrito emPL/SQL, é correto ...

Próximas questões
Com base no mesmo assunto
Q222008 Banco de Dados
Considerando o comando abaixo escrito emPL/SQL, é correto afirmar que o comando SELECTretornará:

SELECTp.nome, p.sobrenome, c.modelo
FROMpessoas p LEFTOUTERJOINcarros c
ONp.carro_id = c.carro_id
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - todas as linhas da tabela pessoas.

Vamos dissecar o código SQL apresentado para entender o que ele faz, e por que a alternativa A é a correta:

SELECT p.nome, p.sobrenome, c.modelo

Este comando está selecionando três colunas: nome e sobrenome da tabela "pessoas" (alias 'p') e modelo da tabela "carros" (alias 'c').

FROM pessoas p LEFT OUTER JOIN carros c

O "LEFT OUTER JOIN" é um tipo de junção entre duas tabelas que retorna todas as linhas da tabela à esquerda (neste caso, "pessoas") e as linhas correspondentes da tabela à direita ("carros"). Quando não há correspondência, o resultado para a tabela da direita será NULL para as colunas selecionadas.

ON p.carro_id = c.carro_id

Esta linha especifica a condição de igualdade para a junção: a coluna "carro_id" da tabela "pessoas" deve corresponder à coluna "carro_id" da tabela "carros".

Agora que o comando foi explicado, o que ele faz é trazer todas as pessoas, independentemente de terem ou não um carro, conforme a função do LEFT OUTER JOIN. Se uma pessoa não tiver um carro associado na tabela "carros", a coluna modelo virá como NULL no resultado da consulta. Portanto, a alternativa A está correta, pois ela afirma exatamente isso: serão retornadas todas as linhas da tabela pessoas, com as informações correspondentes da tabela carros quando estas existirem.

É importante notar que as demais alternativas não estão corretas, pois elas ou limitam a saída a casos onde há correspondência (alternativa B e D) ou sugerem que todas as linhas de ambas as tabelas serão retornadas (alternativa E), o que não é o comportamento do LEFT OUTER JOIN.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo