Pular para o conteúdo principal

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

Banco de DadosSQL
Código
qg598686
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.O comando a seguir retorna os pacientes que nunca foram atendidos:Imagem associada para resolução da questão
  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”.

SQL: consulta para pacientes nunca atendidos

Gabarito: ERRADO (letra E). O comando apresentado na imagem não retorna os pacientes que nunca foram atendidos, pois a consulta correta para essa finalidade deve utilizar uma subconsulta com NOT IN ou NOT EXISTS relacionando as tabelas de pacientes e atendimentos — e o comando da figura não realiza essa lógica corretamente. A forma adequada seria algo como SELECT * FROM pacientes WHERE id_paciente NOT IN (SELECT id_paciente FROM atendimentos).

Para entender por que o item está errado, é preciso dominar o conceito de subconsultas em SQL. Uma subconsulta é uma consulta aninhada dentro de outra, usada para filtrar resultados com base em dados de outras tabelas. Quando queremos encontrar registros que não possuem correspondência em outra tabela — como pacientes sem atendimento —, usamos os operadores NOT IN ou NOT EXISTS. O NOT IN verifica se o valor de uma coluna não está presente no conjunto retornado pela subconsulta; já o NOT EXISTS verifica se a subconsulta não retorna nenhuma linha para cada registro da consulta externa.

A pegadinha clássica da banca é apresentar um comando que parece correto à primeira vista, mas que na verdade não faz a relação entre as tabelas da maneira necessária. Muitas vezes, o comando mostrado faz um SELECT simples de uma tabela sem a devida subconsulta, ou usa um JOIN que acaba retornando apenas pacientes que têm atendimento, ou ainda usa NOT IN de forma incorreta. O candidato que não conhece bem a sintaxe de subconsultas pode ser induzido a acreditar que o comando está certo, quando na verdade ele não atende ao que o enunciado pede.

Outro ponto que merece atenção é a diferença entre NOT IN e NOT EXISTS quando há valores nulos envolvidos. Se a subconsulta retornar algum valor NULL, o NOT IN pode não retornar nenhuma linha, pois a comparação com NULL resulta em desconhecido, não em verdadeiro. Já o NOT EXISTS lida melhor com essa situação. Por isso, é importante que o aluno conheça ambas as formas e saiba quando cada uma é mais adequada.

Na prática, para o hospital Campo Grande, a consulta correta seria:

SELECT * FROM pacientes
WHERE id_paciente NOT IN (SELECT id_paciente FROM atendimentos);

Ou, de forma equivalente:

SELECT * FROM pacientes p
WHERE NOT EXISTS (SELECT 1 FROM atendimentos a WHERE a.id_paciente = p.id_paciente);

O comando da figura, por não seguir essa estrutura, não retorna o resultado esperado. Guarde essa lógica: para encontrar registros sem correspondência, a subconsulta é indispensável — e é exatamente nesse ponto que a questão se decide.

  1. 1Subconsulta com NOT IN
  2. 2Subconsulta com NOT EXISTS
  3. 3Cuidado com NULL no NOT IN
LEVEL · soulevel.com.br

Item — ❌ ERRADO

O comando apresentado na imagem não retorna os pacientes que nunca foram atendidos. A consulta correta exige uma subconsulta com NOT IN ou NOT EXISTS para relacionar as tabelas de pacientes e atendimentos, o que não é feito no comando da figura. Sem essa relação, o comando não consegue identificar quais pacientes não possuem nenhum registro de atendimento, retornando um resultado incorreto ou incompleto.

NÃO CAIA NESSA!

A banca apresenta um comando que parece plausível, mas que não utiliza a subconsulta necessária para filtrar pacientes sem atendimento. O candidato que não domina subconsultas pode achar que o comando está correto, quando na verdade ele não atende ao requisito do enunciado. Fique atento: para encontrar registros sem correspondência, NOT IN ou NOT EXISTS são indispensáveis.

PEGA ESSA DICA!

Sempre que a questão pedir registros que "nunca" tiveram relação com outra tabela, desconfie de comandos que não usam subconsulta. Verifique se há NOT IN ou NOT EXISTS relacionando as chaves estrangeiras. Essa é a estrutura que resolve esse tipo de consulta.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qg598686