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?
AA coluna id pode aceitar valores NULL.
BO campo email aceita valores repetidos.
CA coluna data_cadastro requer um valor explícito ao inserir um novo registro.
DA chave primária da tabela é composta por mais de um campo.
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.