Avalie as afirmativas a seguir sobre operadores e cláusulas...
Avalie as afirmativas a seguir sobre operadores e cláusulas da linguagem SQL:
I. O operador OUTER JOIN garante que todos os registros da tabela base sejam incluídos no resultado, mesmo que não haja correspondência com a tabela associada, preenchendo com NULL os campos não emparelhados.
II. O operador IN retorna TRUE se ao menos uma das comparações for satisfeita; já o operador ALL retorna TRUE somente se todas as comparações forem verdadeiras.
III. A cláusula WHERE pode ser utilizada para filtrar resultados agregados desde que esteja posicionada após o GROUP BY.
IV. A cláusula HAVING pode ser usada para filtrar grupos de resultados gerados por funções agregadas, enquanto WHERE atua apenas sobre linhas individuais antes do agrupamento.
É correto o que se afirma em:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - I, II e IV apenas.
Tema central: A questão aborda operadores e cláusulas SQL, importantes para filtrar, agrupar e combinar dados em consultas relacionais. Dominar esses conceitos é essencial em concursos que cobram Banco de Dados, pois são aplicados em praticamente toda manipulação de dados no SQL.
Resumo teórico:
- OUTER JOIN: Garante a inclusão de todos os registros da tabela principal, mesmo sem correspondência, preenchendo com NULL os campos não emparelhados. Exemplo: SELECT * FROM A LEFT OUTER JOIN B ON A.id = B.id.
- IN: Retorna TRUE se o valor analisado estiver em uma lista de valores. Exemplo: WHERE idade IN (18, 21, 30).
- ALL: Usado para comparar um valor a todos os valores de um conjunto. Ex: WHERE salario > ALL (SELECT salario FROM ...)
- WHERE: Filtra linhas individuais antes de agrupamento (GROUP BY); não filtra agregados.
- HAVING: Filtra grupos criados pelo GROUP BY, podendo usar funções agregadas. Exemplo: HAVING COUNT(*) > 1.
Justificativa da alternativa correta (E):
I. Correta: O OUTER JOIN realmente inclui todos os registros da tabela base, usando NULLs quando não há correspondência.
II. Correta: O operador IN retorna TRUE se ao menos uma condição for satisfeita, enquanto ALL só retorna TRUE se todas as comparações forem verdadeiras.
IV. Correta: HAVING filtra grupos pós-agrupamento; WHERE apenas linhas individuais antes do agrupamento (vide documentação oficial SQL:1999 e manuais como Date & Darwen).
Análise das alternativas incorretas:
III. Incorreta: WHERE não pode ser usado para filtrar resultados agregados (após GROUP BY). Para isso, utiliza-se HAVING. Essa é uma pegadinha clássica em provas!
Dicas de interpretação:
- Identifique palavras-chave como após o GROUP BY ou funções agregadas, pois normalmente indicam o uso do HAVING, não do WHERE.
- Fique atento a detalhamentos sobre como cada operador/cláusula atua sobre linhas individuais ou grupos!
- Desconfie de alternativas que misturam conceitos ou invertem as funções de WHERE e HAVING.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Uma breve explicação sobre Inner, Left, Right, Outer/Full e Cross Join → https://pt.stackoverflow.com/questions/6441/qual-é-a-diferença-entre-inner-join-e-outer-join#6448
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo