Considerando o comando abaixo escrito emPL/SQL, é correto ...
SELECTp.nome, p.sobrenome, c.modelo
FROMpessoas p LEFTOUTERJOINcarros c
ONp.carro_id = c.carro_id
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