Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Quadrix 2024

Banco de DadosSQL
Código
qg347346
Banca
Quadrix
Órgão
CFP
Ano
2024
Nível
Superior
Cargo
Analista Técnico/TI/Desenvolvimento

Um banco de dados relacional foi criado para registrar os cursos realizados por psicólogos em uma clínica de treinamento. O banco de dados não possui colunas com autoincremento e contém as seguintes tabelas: PSICOLOGO (id_psicologo (PK, INT), nome (VARCHAR), email (VARCHAR)); CURSO (id_curso (PK, INT), nome_curso (VARCHAR), duracao (INT)); INSCRICAO (id_inscricao (PK, INT), id_psicologo (FK, INT), id_curso  (FK, INT), data_inscricao (DATE)); CERTIFICADO (id_certificado (PK, INT), id_inscricao (FK, INT), data_certificado (DATE)).


Com base nessa situação hipotética e na linguagem SQL, julgue o item seguinte.

Para se cadastrar um novo curso, é suficiente executar a instrução SQL a seguir.INSERT INTO curso (nome_curso, duracao)VALUES (‘Psicologia Clínica’, 120);
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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 e a obrigatoriedade da chave primária

Gabarito: ERRADO (letra E). A instrução INSERT INTO curso (nome_curso, duracao) VALUES ('Psicologia Clínica', 120); não é suficiente para cadastrar um novo curso porque a tabela CURSO possui a coluna id_curso como chave primária (PK, INT) e o banco de dados não possui colunas com autoincremento — logo, o valor dessa coluna precisa ser informado explicitamente no comando, o que não ocorre. A ausência do id_curso na lista de colunas do INSERT viola a restrição de integridade da chave primária, que exige um valor não nulo e único para cada registro.

O comando INSERT INTO é a instrução padrão da linguagem SQL para inserir novos registros em uma tabela. Sua sintaxe básica é INSERT INTO nome_da_tabela (coluna1, coluna2, ...) VALUES (valor1, valor2, ...);. A questão central aqui não é a sintaxe — que está correta —, mas sim a semântica em relação ao modelo de dados apresentado. O enunciado informa expressamente que o banco de dados "não possui colunas com autoincremento". Isso significa que, para cada tabela, os valores das chaves primárias devem ser fornecidos manualmente pelo usuário ou pela aplicação. No caso da tabela CURSO, a chave primária é id_curso (PK, INT). Como não há autoincremento, o SGBD não gerará automaticamente um valor para essa coluna. Portanto, ao omitir id_curso no comando INSERT, o banco tentará inserir um valor NULL na coluna de chave primária, o que viola a restrição de integridade e resultará em erro — a instrução não será executada com sucesso.

Para que o cadastro funcionasse, o comando deveria incluir a coluna id_curso com um valor explícito, por exemplo: INSERT INTO curso (id_curso, nome_curso, duracao) VALUES (1, 'Psicologia Clínica', 120);. Alternativamente, se o banco tivesse autoincremento (como SERIAL no PostgreSQL ou AUTO_INCREMENT no MySQL), a omissão da coluna de chave primária seria perfeitamente válida, pois o SGBD geraria o valor automaticamente. É exatamente essa distinção que a banca explora: o candidato que conhece a sintaxe do INSERT mas não atenta para a ausência de autoincremento no modelo tende a marcar a alternativa como correta.

A pegadinha desta questão está na omissão da coluna de chave primária em um banco sem autoincremento. Muitos candidatos, acostumados com SGBDs que geram chaves automaticamente, consideram o comando válido apenas pela sintaxe correta. No entanto, a regra é clara: se a chave primária não é autoincrementada, ela deve ser fornecida no INSERT. A banca não errou na sintaxe do comando — ela errou na lógica em relação ao modelo apresentado, exatamente como ocorre em outras questões que cobram a coerência entre o comando SQL e a estrutura das tabelas.

NÃO CAIA NESSA!

A banca explora a confusão entre sintaxe e semântica. O comando INSERT está sintaticamente correto, mas a lógica falha porque a tabela CURSO tem chave primária sem autoincremento. O candidato que não percebe essa condição do enunciado marca "Certo" — mas o correto é "Errado", pois o id_curso precisa ser informado explicitamente.

Item — ❌ ERRADO

A afirmação diz que "é suficiente executar a instrução SQL a seguir" para cadastrar um novo curso. O erro está na palavra suficiente: a instrução não é suficiente porque omite a coluna id_curso, que é a chave primária da tabela e não possui autoincremento. Sem o valor dessa coluna, o banco tentará inserir NULL na chave primária, violando a restrição de integridade e impedindo a inserção. Para que o comando funcionasse, seria necessário incluir id_curso com um valor explícito, como em INSERT INTO curso (id_curso, nome_curso, duracao) VALUES (1, 'Psicologia Clínica', 120);. A sintaxe do comando está correta, mas a lógica não reflete o modelo apresentado — exatamente o padrão de erro que a banca costuma explorar.

Gabarito: ERRADO (letra E).

Link permanente: /questoes/qg347346