Pular para o conteúdo principal

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

Banco de DadosSQL
Código
qg598687
Banca
Quadrix
Órgão
CRM-MS
Ano
2025
Nível
Superior
Cargo
Analista de Informática
O Hospital Campo Grande está implementando um novo sistema de banco de dados para gerenciar informações sobre médicos, pacientes e atendimentos. O banco de dados apresenta as tabelas a seguir.

Imagem da questão
Com relação à situação hipotética apresentada e aos comandos SQL, julgue o item seguinte.Para excluir, por exemplo, o médico de id_medico = 5 da tabela Medicos, garantindo que não existam atendimentos vinculados a ele, pode‑se usar o seguinte comando:Imagem associada para resolução da questão
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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

Exclusão de registros com integridade referencial: DELETE e ON DELETE CASCADE

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:

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

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

DELETE

DML

Remove registros específicos (com WHERE) ou todos (sem WHERE), dispara gatilhos, pode ser desfeito com ROLLBACK (em transação)

TRUNCATE

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

DROP TABLE

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.

NÃO CAIA NESSA!

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.

Alternativa C — ✅ Correta ⟵ GABARITO

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