FC ConcursosFC Concursos

Questão FC670724

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 tabel

Linguagem SQL

QUADRIX · 2025

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.

 

CREATE TABLE Medicos (        id_medico INT PRIMARY KEY,        nome VARCHAR(100),        especialidade VARCHAR(50),        salario DECIMAL(10,2) ); CREATE TABLE Pacientes (        id_paciente INT PRIMARY KEY,        nome VARCHAR(100),        data_nascimento DATE ); CREATE TABLE Atendimentos (        id_atendimento INT PRIMARY KEY,        id_medico INT,        id_paciente INT,       data_atendimento DATE,       descricao VARCHAR(100),       FOREIGN KEY (id_medico) REFERENCES Medicos(id_medico),       FOREIGN KEY (id_paciente) REFERENCES Pacientes(id_paciente) );

 

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:

SELECT P.nome FROM Pacientes P WHERE P.id_paciente NOT IN (SELECT DISTINCT id_paciente FROM Atendimentos);

Mostrar resposta e comentário

Gabarito

Errado

Comentário do professor

A afirmação foi julgada ERRADO porque a consulta usa NOT IN, que falha quando a subconsulta retorna algum valor NULL.

Em SQL existe lógica ternária: comparações com NULL resultam em unknown. Assim, se a subconsulta produz um NULL, a condição \(P.id\_paciente \notin \{...\}\) torna-se indeterminada e a linha pode ser excluída do resultado mesmo que o paciente nunca tenha sido atendido.

No esquema apresentado, a coluna Atendimentos.id_paciente não foi declarada como NOT NULL, portanto pode conter NULL e a subconsulta pode retorná‑lo.

A forma segura é usar NOT EXISTS ou um LEFT JOIN com checagem de NULL. Exemplo recomendado:
SELECT P.nome FROM Pacientes P WHERE NOT EXISTS (SELECT 1 FROM Atendimentos A WHERE A.id_paciente = P.id_paciente);

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo