Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg594436
- Banca
- Quadrix
- Órgão
- CAU-MA
- Ano
- 2025
- Nível
- Médio
- Cargo
- Assistente de Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). O comando UPDATE clientes SET email = NULL WHERE nome = 'Carlos Santos'; atribui ao campo email o valor especial NULL (ausência de valor), e não uma string vazia (''). A distinção é fundamental em SQL: NULL não é um valor, é a representação de dado desconhecido ou inexistente, enquanto string vazia é um valor de texto de comprimento zero. A banca explora exatamente essa confusão conceitual.
O comando UPDATE é um comando da subdivisão DML (Data Manipulation Language) do SQL, responsável por modificar dados existentes em uma tabela. Sua sintaxe básica é:
UPDATE nome_da_tabela SET coluna1 = valor1, coluna2 = valor2 ... WHERE condição;No comando apresentado, a cláusula SET email = NULL está atribuindo o valor NULL à coluna email para todas as linhas que atendem à condição WHERE nome = 'Carlos Santos'. Isso significa que, após a execução, o campo email desse cliente ficará com valor NULL, indicando que não há informação de e-mail cadastrada. Não se trata de uma string vazia, que seria representada por '' (duas aspas simples consecutivas).
A confusão entre NULL e string vazia é um clássico em provas de banco de dados. NULL é um marcador especial que indica ausência de valor, e qualquer operação aritmética ou de concatenação que envolva NULL resulta em NULL. Já a string vazia é um valor de texto válido, que pode ser comparado, concatenado e armazenado normalmente. Por exemplo, SELECT * FROM clientes WHERE email = '' retornaria clientes com e-mail vazio, enquanto SELECT * FROM clientes WHERE email IS NULL retornaria clientes sem e-mail cadastrado.
Outro ponto importante: para verificar se um campo é NULL, não se usa o operador de igualdade (=), mas sim o operador IS NULL (ou IS NOT NULL). Isso porque NULL não é um valor comparável; a comparação email = NULL resultaria em UNKNOWN, e não em verdadeiro ou falso. O material de apoio reforça essa regra: "Para isto, deve-se utilizar os operadores IS NULL ou IS NOT NULL e não realizar comparação lógica. Ao comparar qualquer coisa com NULL usando os operadores lógicos comuns, será retornado um resultado desconhecido na comparação (UNKNOWN) e, por isso, não serão retornadas linhas."
Na prática, se o objetivo fosse definir o e-mail como uma string vazia, o comando correto seria UPDATE clientes SET email = '' WHERE nome = 'Carlos Santos';. A diferença entre NULL e '' pode parecer sutil, mas tem implicações profundas em consultas, integridade dos dados e lógica de negócio. Por exemplo, em uma consulta que agrupa por e-mail, clientes com NULL não apareceriam no agrupamento, enquanto clientes com string vazia apareceriam como um grupo distinto.
A pegadinha desta questão está justamente em tratar NULL como se fosse um valor de texto. O candidato que confunde os dois conceitos marca "Certo", mas o comando não gera uma string vazia — ele gera um valor nulo. Guarde a distinção: NULL = ausência de valor; '' = valor de texto vazio. É essa fronteira que decide a questão.
A afirmação diz que o comando "irá alterar o e-mail do cliente para uma string vazia, indicando que o campo está em branco". Isso está incorreto porque NULL não é uma string vazia. O comando atribui o valor especial NULL, que representa ausência de informação, enquanto uma string vazia seria representada por ''. A banca troca o conceito de NULL pelo de string vazia, uma armadilha clássica em SQL. O comando está sintaticamente correto e executará a atualização, mas o efeito é a atribuição de NULL, não de uma string vazia.
A banca adora confundir NULL com string vazia (''). NULL é ausência de valor; string vazia é um valor de texto de comprimento zero. Para verificar NULL, use IS NULL, nunca = NULL. Com treino, você enxerga essa troca de longe 💪
Gabarito: ERRADO (letra E).
Link permanente: /questoes/qg594436