Questão de Banco de Dados — SQL — FGV 2022
- Código
- fg055328
- Banca
- FGV
- Órgão
- TCU
- Ano
- 2022
- Nível
- Superior
- Cargo
- Auditor Federal de Controle Externo
- Aapenas um grupo;
- Bapenas dois grupos;
- Capenas três grupos;
- Dapenas quatro grupos;
- Ecinco grupos.
GabaritoA — apenas um grupo;
Gabarito: letra A (apenas um grupo). Todos os cinco comandos retornam conjuntos vazios (zero linhas), pois a tabela DUAL possui uma única linha com valor NULL na coluna x, e qualquer comparação com NULL usando operadores relacionais comuns (=, <>, >, <=) resulta em UNKNOWN, não selecionando nenhuma linha. Dessa forma, os resultados são idênticos – todos vazios –, formando um único grupo homogêneo.
A banca testa o conhecimento sobre o tratamento de NULL em SQL. No padrão SQL, NULL não é um valor, e sim a ausência de valor. Comparações com NULL com operadores como = ou <> não retornam verdadeiro ou falso, mas sim UNKNOWN; por isso, na cláusula WHERE, a linha não é incluída no resultado. O mesmo vale para comparações de grandeza: x > 10 com NULL é UNKNOWN, e x <= 10 também. Consequentemente, as consultas (1) a (4) retornam vazio. A consulta (5) é a união de dois conjuntos vazios, que também resulta em vazio.
Como todos os comandos produzem o mesmo resultado (conjunto vazio), há apenas um grupo homogêneo.
Considerar que haveria dois grupos seria um erro, pois não há diferença entre os resultados – todos são vazios.
Três grupos não se formam; não há três resultados distintos.
Quatro grupos não existem.
Cinco grupos, um para cada comando, seria o caso se cada consulta retornasse algo diferente, mas todas retornam vazio.
Muitos candidatos pensam que WHERE x = NULL gera erro de sintaxe ou que NOT EXISTS de algo vazio seria diferente. Na verdade, a SQL padrão não gera erro; apenas não retorna linhas. O erro comum é achar que = NULL funciona como atribuição ou que <> NULL seleciona linhas não nulas. O resultado é vazio em todos os casos.
Gabarito: letra A
Link permanente: /questoes/fg055328