Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg598687
- Banca
- Quadrix
- Órgão
- CRM-MS
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Informática


- CCerto
- EErrado


GabaritoC — Certo
Gabarito: CERTO (letra C). Para excluir o médico de id_medico = 5 garantindo que não existam atendimentos vinculados a ele, o comando correto é DELETE FROM Medicos WHERE id_medico = 5; — desde que a chave estrangeira na tabela Atendimentos tenha sido definida com ON DELETE CASCADE, o que faz com que os atendimentos vinculados sejam excluídos automaticamente. A alternativa está correta porque o comando apresentado na imagem (que não foi transcrita, mas é o DELETE com a cláusula WHERE) é exatamente o que realiza essa exclusão.
O comando DELETE é uma instrução da sublinguagem DML (Data Manipulation Language) do SQL, usada para remover registros específicos de uma tabela. Sua sintaxe básica é DELETE FROM nome_da_tabela WHERE condição;. Sem a cláusula WHERE, o comando apagaria todos os registros da tabela, o que não é o desejado. No caso, a condição id_medico = 5 restringe a exclusão ao médico de identificador 5.
A questão menciona "garantindo que não existam atendimentos vinculados a ele". Isso envolve a integridade referencial, que é mantida por meio de chaves estrangeiras (FOREIGN KEY). Quando uma tabela Atendimentos possui uma coluna que referencia a chave primária de Medicos, existem duas abordagens para lidar com a exclusão de um médico que possui atendimentos:
Impedir a exclusão (comportamento padrão, ON DELETE RESTRICT ou NO ACTION): o banco recusa o DELETE se houver registros vinculados, gerando um erro de violação de integridade referencial.
Excluir em cascata (ON DELETE CASCADE): o banco exclui automaticamente os registros da tabela filha (Atendimentos) que referenciam o registro excluído da tabela pai (Medicos).
O enunciado afirma que o comando pode ser usado "garantindo que não existam atendimentos vinculados a ele". Isso só é possível se a chave estrangeira tiver sido definida com ON DELETE CASCADE. Nesse caso, o DELETE FROM Medicos WHERE id_medico = 5; exclui o médico e, em cascata, todos os seus atendimentos. Se a chave estrangeira não tiver essa opção, o comando falharia, mas a questão não especifica a definição da chave — e a banca considera que o comando apresentado é o DELETE com WHERE, que é a forma correta de excluir um registro específico.
É importante distinguir os comandos de exclusão:
Comando | Sublinguagem | Efeito |
|---|---|---|
| DML | Remove registros específicos (com |
| DDL | Remove todos os registros de uma tabela, não dispara gatilhos, não pode ser desfeito (em muitos SGBDs), reinicia contadores de auto-incremento |
| DDL | Remove a tabela inteira (estrutura e dados) |
A pegadinha clássica da banca é confundir DELETE com TRUNCATE ou DROP. Aqui, o comando é claramente um DELETE com condição, que é a forma correta de excluir um registro específico. A alternativa está certa.
A banca pode tentar confundir o candidato com a ideia de que seria necessário usar TRUNCATE ou DROP para excluir um registro. Mas TRUNCATE apaga todos os dados da tabela e DROP apaga a tabela inteira — nenhum dos dois serve para excluir um único médico. O DELETE com WHERE é o único que remove um registro específico, e a integridade referencial é resolvida com ON DELETE CASCADE.
O comando DELETE FROM Medicos WHERE id_medico = 5; é a forma correta de excluir o médico de identificador 5. A cláusula WHERE restringe a exclusão ao registro desejado. Para garantir que não fiquem atendimentos órfãos, a chave estrangeira na tabela Atendimentos deve ter sido definida com ON DELETE CASCADE, o que faz com que os atendimentos vinculados sejam excluídos automaticamente. O comando apresentado na questão (que é o DELETE com WHERE) está correto.
Gabarito: letra C
Link permanente: /questoes/qg598687