Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Avança SP 2025

Banco de DadosSQL
Código
qg415724
Banca
Avança SP
Órgão
Prefeitura de Caconde - SP
Ano
2025
Nível
Médio
Cargo
Técnico em Informática
Observe a seguinte instrução SQL em um banco de dados MySQL:CREATE TABLE Clientes ( id INT AUTO_INCREMENT PRIMARY KEY, nome VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE, data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); Com base nessa estrutura, qual afirmação sobre as restrições da tabela Clientes está correta?
  1. AA coluna id pode aceitar valores NULL.
  2. BO campo email aceita valores repetidos.
  3. CA coluna data_cadastro requer um valor explícito ao inserir um novo registro.
  4. DA chave primária da tabela é composta por mais de um campo.
  5. EA coluna nome não pode armazenar valores nulos.
Revelar gabarito e comentário

GabaritoE — A coluna nome não pode armazenar valores nulos.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Restrições SQL na criação de tabelas MySQL

Gabarito: letra E. A coluna nome foi declarada com a restrição NOT NULL, que impede o armazenamento de valores nulos — é exatamente o que a alternativa E afirma. As demais alternativas distorcem as restrições definidas no comando CREATE TABLE: id é PRIMARY KEY (não aceita NULL), email é UNIQUE (não aceita repetidos) e data_cadastro tem DEFAULT CURRENT_TIMESTAMP (não exige valor explícito).

As restrições (constraints) SQL são regras aplicadas às colunas de uma tabela para garantir a precisão e a confiabilidade dos dados. Quando uma operação viola uma restrição, o banco aborta a ação. No comando apresentado, temos quatro restrições distintas, cada uma com um papel específico:

  • PRIMARY KEY na coluna id: identifica exclusivamente cada registro. Por definição, uma chave primária combina as propriedades de NOT NULL e UNIQUE — ou seja, não aceita valores nulos nem repetidos. No MySQL, a sintaxe id INT AUTO_INCREMENT PRIMARY KEY define a coluna como chave primária diretamente na declaração da coluna.

  • NOT NULL na coluna nome: obriga que todo registro tenha um valor nesse campo. Sem essa restrição, a coluna aceitaria NULL por padrão.

  • UNIQUE na coluna email: garante que todos os valores sejam diferentes entre si. Diferente da chave primária, uma tabela pode ter várias colunas UNIQUE, mas apenas uma PRIMARY KEY.

  • DEFAULT CURRENT_TIMESTAMP na coluna data_cadastro: define um valor padrão automático. Se o INSERT não informar essa coluna, o MySQL usa o timestamp atual — o valor explícito é opcional.

A pegadinha central desta questão é a banca testar se o candidato conhece o efeito de cada restrição. Veja o contraste:

Restrição

Efeito

Coluna na tabela

PRIMARY KEY

Não aceita NULL nem repetidos

id

NOT NULL

Não aceita NULL

nome

UNIQUE

Não aceita repetidos

email

DEFAULT

Valor automático se omitido

data_cadastro

Guarde essa tabela mental: cada alternativa da questão explora exatamente uma dessas quatro restrições, trocando o efeito de uma pela outra.

Alternativa A — ❌ Incorreta

Afirma que a coluna id pode aceitar valores NULL. Isso contraria a natureza da PRIMARY KEY, que por definição não aceita valores nulos. A chave primária é a combinação de NOT NULL e UNIQUE — ela identifica cada linha de forma exclusiva, e um valor NULL não pode identificar nada. A banca inverte o efeito da restrição: id é justamente a coluna que não aceita NULL.

Alternativa B — ❌ Incorreta

Afirma que o campo email aceita valores repetidos. A restrição UNIQUE garante exatamente o oposto: todos os valores em uma coluna UNIQUE devem ser diferentes. Se um INSERT tentar inserir um email já existente, o MySQL aborta a operação com erro de violação de unicidade. A banca troca o efeito da restrição UNIQUE pelo comportamento padrão de uma coluna sem restrição.

Alternativa C — ❌ Incorreta

Afirma que a coluna data_cadastro requer um valor explícito ao inserir um novo registro. A restrição DEFAULT CURRENT_TIMESTAMP faz o contrário: se o INSERT não informar a coluna, o MySQL preenche automaticamente com o timestamp atual. O valor explícito é opcional, não obrigatório. A banca confunde a restrição DEFAULT (que fornece um valor padrão) com NOT NULL (que exige valor).

Alternativa D — ❌ Incorreta

Afirma que a chave primária da tabela é composta por mais de um campo. No comando, apenas a coluna id é definida como PRIMARY KEY — é uma chave primária simples, de uma única coluna. Uma chave primária composta exigiria a sintaxe CONSTRAINT nome PRIMARY KEY (coluna1, coluna2), que não aparece aqui. A banca sugere uma estrutura que não existe na definição.

Alternativa E — ✅ Correta ⟵ GABARITO

Afirma que a coluna nome não pode armazenar valores nulos. Isso é exatamente o que a restrição NOT NULL faz: impõe que o campo sempre contenha um valor. Qualquer INSERT ou UPDATE que tente gravar NULL em nome será abortado pelo banco. A alternativa espelha com precisão o efeito da restrição declarada no comando.

NÃO CAIA NESSA!

A banca troca os efeitos das restrições entre si: diz que PRIMARY KEY aceita NULL (quando é o oposto), que UNIQUE aceita repetidos (quando é o oposto), que DEFAULT exige valor (quando fornece valor automático) e que a chave é composta (quando é simples). A única que acerta o efeito real é a letra E. Na prova, leia cada restrição e pergunte: "o que ela faz com os dados?" — NOT NULL proíbe NULL, UNIQUE proíbe repetição, PRIMARY KEY proíbe ambos, DEFAULT fornece valor.

Gabarito: letra E — a coluna nome não pode armazenar valores nulos, pois foi declarada com NOT NULL.

Link permanente: /questoes/qg415724