Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2025
- Código
- qa699031
- Banca
- Quadrix
- Órgão
- CRP 6 (SP)
- Ano
- 2025
- Cargo
- TESA ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). O comando INSERT INTO consultas (paciente_id, data_consulta, terapeuta) VALUES (3, '2025-07-12', 'Dra. Carla'); está correto, pois a sintaxe do INSERT permite especificar apenas as colunas que se deseja preencher. A coluna observacoes só seria obrigatória se tivesse sido definida com a restrição NOT NULL e sem um valor padrão (DEFAULT), o que não é informado no enunciado. Portanto, a afirmação de que o comando está incorreto por faltar o campo observacoes é falsa.
O comando INSERT é um comando da DML (Data Manipulation Language) utilizado para inserir novos registros (tuplas) em uma tabela. Sua sintaxe básica permite duas formas: a primeira, sem especificar as colunas, exige que os valores sejam fornecidos para todas as colunas da tabela, na ordem em que foram definidas no CREATE TABLE. A segunda forma, que é a utilizada no comando da questão, permite especificar explicitamente quais colunas serão preenchidas, e os valores são fornecidos na mesma ordem das colunas listadas. Nesse segundo caso, as colunas não listadas recebem o valor NULL ou o valor padrão (DEFAULT) definido na criação da tabela, a menos que tenham sido definidas com a restrição NOT NULL e sem valor padrão, caso em que a inserção falharia.
No cenário apresentado, a tabela consultas possui as colunas id, paciente_id, data_consulta, terapeuta e observacoes. O comando INSERT especifica as colunas paciente_id, data_consulta e terapeuta, fornecendo os valores 3, '2025-07-12' e 'Dra. Carla'. Como o enunciado não informa que a coluna observacoes possui a restrição NOT NULL (nem que não possui um valor padrão), a inserção é perfeitamente válida, e a coluna observacoes será preenchida com NULL (ou com o valor padrão, se houver). A afirmação do item, portanto, parte de uma premissa incorreta: a de que toda coluna não preenchida em um INSERT torna o comando inválido, o que não é verdade.
A pegadinha da banca está em explorar a confusão entre a obrigatoriedade de preencher todas as colunas (quando se omite a lista de colunas) e a possibilidade de preencher apenas um subconjunto delas (quando se especifica a lista). O candidato que não domina a sintaxe do INSERT pode acreditar que, por existir uma coluna observacoes na tabela, ela deve ser obrigatoriamente preenchida em toda inserção. No entanto, a regra é clara: a obrigatoriedade de preenchimento é definida pelas restrições da coluna (NOT NULL, DEFAULT), e não pela simples existência da coluna. O comando em questão está sintaticamente correto e será executado com sucesso, inserindo um novo registro com os valores fornecidos e NULL na coluna observacoes.
A banca tenta fazer o candidato acreditar que, por existir a coluna observacoes na tabela, ela deve ser obrigatoriamente preenchida em todo INSERT. Isso é falso: a obrigatoriedade é definida pela restrição NOT NULL na criação da tabela, não pela mera existência da coluna. O comando INSERT com lista de colunas explícita é válido e preenche as colunas omitidas com NULL ou com o valor DEFAULT, se houver. Fique atento: a presença de uma coluna não a torna obrigatória.
A alternativa E afirma que o item está errado, e é exatamente isso que ocorre. O comando INSERT apresentado está correto, pois a sintaxe INSERT INTO tabela (coluna1, coluna2, ...) VALUES (valor1, valor2, ...) é válida e permite inserir um registro preenchendo apenas as colunas listadas. A coluna observacoes não precisa ser preenchida, a menos que tenha sido definida com NOT NULL e sem valor padrão, o que não é informado. Portanto, a afirmação do item de que o comando está incorreto por faltar o campo observacoes é falsa, tornando a alternativa E a resposta correta.
Gabarito: letra E
Link permanente: /questoes/qa699031