Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2024

Banco de DadosConsultas e Comandos em SQL
Código
qa630624
Banca
FUNDATEC
Órgão
CREMERS
Ano
2024
Cargo
Ana ( )
O comando SQL abaixo foi executado em um banco de dados de um SGDB MySQL, versão atualizada, com a finalidade de criar uma tabela nomeada como tb_cliente.   CREATE TABLE tb_cliente ( id INT NOT NULL AUTO_INCREMENT, nome VARCHAR(100) NOT NULL, email VARCHAR(50), PRIMARY KEY (id) );   Após a criação da tabela tb_cliente, qual das alternativas abaixo apresenta um comando SQL adequado que irá inserir um novo registro na tabela?
  1. AINSERT tb_cliente (id, nome, email) INFO (1, 'Fulano', null);
  2. BINSERT INTO tb_cliente (nome, email) VALUES ('Fulano', '[email protected]');
  3. CINSERT IN tb_cliente (1, Fulano, [email protected]);
  4. DINSERT INTO tb_cliente (id, nome) INFO (1, Fulano);
  5. EINSERT tb_cliente VALUES (1, 'Fulano', null);
Revelar gabarito e comentário

GabaritoB — INSERT INTO tb_cliente (nome, email) VALUES ('Fulano', '[email protected]');

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”.

Comando INSERT no MySQL

Gabarito: letra B. O comando INSERT INTO tb_cliente (nome, email) VALUES ('Fulano', '[email protected]') é o único sintaticamente correto e semanticamente adequado: usa a cláusula INSERT INTO, especifica as colunas e fornece os valores correspondentes, respeitando a estrutura da tabela criada (id autoincrementável, nome obrigatório e email opcional). As demais alternativas apresentam erros de sintaxe (palavras-chave trocadas, como INFO no lugar de INTO) ou de semântica (valores sem aspas, colunas incompatíveis).

O comando INSERT é a instrução da sublinguagem DML (Data Manipulation Language) responsável por inserir novos registros em uma tabela. Sua sintaxe básica, conforme o padrão SQL, é:

INSERT INTO nome_da_tabela (coluna1, coluna2, ...) VALUES (valor1, valor2, ...);

A cláusula INTO é obrigatória na forma padrão do comando. Embora alguns SGBDs aceitem variações, a forma canônica e mais segura é sempre com INSERT INTO. A especificação das colunas é opcional quando se deseja inserir valores para todas as colunas na ordem em que foram definidas, mas é altamente recomendada para evitar erros e tornar o comando mais legível e robusto a mudanças na estrutura da tabela.

No caso da tabela tb_cliente, temos três colunas: id (INT, NOT NULL, AUTO_INCREMENT), nome (VARCHAR(100), NOT NULL) e email (VARCHAR(50), sem restrição explícita, portanto aceita NULL). A coluna id é uma chave primária com auto-incremento, o que significa que o banco de dados gera automaticamente um valor único para ela a cada inserção. Por isso, ao inserir um novo registro, não é necessário (nem recomendado) especificar o valor de id — o MySQL cuidará disso. A coluna nome é obrigatória (NOT NULL), então deve ser sempre fornecida. A coluna email é opcional, podendo receber um valor ou NULL.

A alternativa B segue exatamente essa lógica: insere apenas nome e email, deixando que o id seja gerado automaticamente. Os valores são strings e, portanto, devem estar entre aspas simples. O comando está correto e executará sem erros.

As demais alternativas falham por diferentes motivos:

  • A) Usa INFO em vez de INTO — palavra-chave inexistente no SQL.

  • C) Usa INSERT IN (sintaxe inválida) e não coloca os valores string entre aspas.

  • D) Usa INFO em vez de INTO e não coloca o valor string entre aspas.

  • E) Omite a cláusula INTO e não especifica as colunas, tentando inserir um valor para id que é autoincrementável (o que pode causar conflito ou erro, dependendo do estado da tabela).

A pegadinha central desta questão é a troca sutil de INTO por INFO nas alternativas A e D, além da ausência de aspas nos valores string. O candidato desatento pode não perceber esses detalhes e marcar uma alternativa incorreta.

Critério

Alternativa B (correta)

Alternativas A, C, D, E (incorretas)

Sintaxe INSERT INTO

✅ Usa INSERT INTO corretamente

❌ A e D usam INFO; C usa INSERT IN; E omite INTO

Aspas em valores string

'Fulano' e '[email protected]' entre aspas simples

❌ C e D não usam aspas em Fulano/[email protected]

Tratamento do id AUTO_INCREMENT

✅ Omite o id, deixando o MySQL gerar automaticamente

❌ A, D e E tentam inserir valor explícito no id (desnecessário/arriscado)

Respeito às restrições da tabela

nome (NOT NULL) preenchido; email opcional preenchido

❌ Nenhuma alternativa incorreta respeita simultaneamente sintaxe e restrições

Resultado da execução

✅ Insere registro sem erros

❌ Todas falham por erro de sintaxe ou semântica

Alternativa A — ❌ Incorreta

O erro está na palavra-chave INFO, que não existe no SQL. O correto é INSERT INTO. Além disso, a sintaxe INSERT tb_cliente (id, nome, email) INFO (1, 'Fulano', null) está completamente inválida. Mesmo que fosse INTO, a inserção explícita do id (1) em uma coluna AUTO_INCREMENT não é a prática recomendada, pois o banco geraria o valor automaticamente.

Alternativa B — ✅ Correta ⟵ GABARITO

Este comando está sintaticamente correto e semanticamente adequado. Utiliza INSERT INTO, especifica as colunas nome e email, e fornece os valores correspondentes entre aspas simples. A coluna id é omitida, permitindo que o auto-incremento do MySQL gere o valor automaticamente. A coluna nome é preenchida com 'Fulano' (obrigatória) e email com '[email protected]' (opcional). O comando executará sem erros e inserirá o registro corretamente.

Alternativa C — ❌ Incorreta

Apresenta dois erros graves: a sintaxe INSERT IN é inválida (o correto é INSERT INTO) e os valores string Fulano e [email protected] não estão entre aspas simples, o que causaria erro de sintaxe, pois seriam interpretados como identificadores ou causariam erro de parsing.

Alternativa D — ❌ Incorreta

Assim como a alternativa A, usa INFO em vez de INTO. Além disso, o valor Fulano não está entre aspas simples, o que é obrigatório para strings em SQL. A inserção explícita do id (1) também não é recomendada, pois a coluna é AUTO_INCREMENT.

Alternativa E — ❌ Incorreta

Omite a cláusula INTO, resultando em INSERT tb_cliente VALUES ..., que é uma sintaxe inválida no padrão SQL. Além disso, tenta inserir um valor explícito para a coluna id (1), que é AUTO_INCREMENT. Embora o MySQL possa aceitar a inserção explícita de um valor em uma coluna autoincrementável (desde que não haja conflito), a omissão de INTO torna o comando inválido.

NÃO CAIA NESSA!

A banca explora a troca de INTO por INFO (alternativas A e D) e a ausência de aspas em valores string (alternativas C e D). Esses são erros clássicos de digitação que passam despercebidos em uma leitura rápida. Na prova, leia cada comando com atenção redobrada, verificando palavra por palavra.

PEGA ESSA DICA!

Para questões de INSERT, verifique sempre: (1) a presença de INSERT INTO; (2) a lista de colunas entre parênteses (se houver); (3) a cláusula VALUES; (4) valores string entre aspas simples; (5) a compatibilidade entre o número de colunas e o número de valores. Essa checklist resolve a maioria das questões de sintaxe SQL.

Gabarito: letra B

Link permanente: /questoes/qa630624